در moveit سینماتیک به روش های مختلف عددی و تحلیلی حل می شود.

در moveit انواع حل کننده سینماتیکی قابل تنظیم هستند که می توان یکی از آنها را همانند شکل زیر به کمک setup assistance به یک گروه مفاصل اختصاص دادالبته به غیر از حالت پیشفرض بقیه پکیج ها را باید نصب کنید تا مانند شکل زیر قابل دسترس باشند

روش های حل سینماتیک معکوس ربات

روش های حل سینماتیک معکوس ربات

  • پیشفرض حل سینماتیک معکوس kdl_kinematics ، یک حل کننده عددی است

 

sudo apt-get install ros-kinetic-trac-ik-kinematics-plugin

  • حل کننده سینماتیک  معکوس دیگر IKFAST هست

    • این حل کننده درواقع یک حل کننده تحلیلی است و به این صورت عمل می کند که با استفاده از هندسه ربات ارتباط بین لینک ها را به صورت سمبلیک نوشته و سپس از آنها مشتق گرفته و سینماتیک معکوس را به صورت تحلیلی حل می کند. توضیحات تکمیلی را در توتوریال moveit و راهنمای ROS ببینید.
      • یک نکته مهم در خصوص کارایی این روش وجود دارد. اگر فایل urdf که از آن اطلاعات را می خواند عدد pi را با چهار رقم اعشار گرد کرده باشد وقتی می خواهد آنرا به صورت سیمبلیک بنویسد آنرا یک زاویه خیلی کوچک در نظر می گیرد در نتیجه به جای اینکه سینوسش صفر شود و از معادلات حذف شود سینوس یک زاویه خیلی کوچک می شود که محاسبه آن زمانبر شده و عملکرد کل حلگر را کاهش می دهد پس حتما چک کنید که فایل urdf مربوطه اعداد را گرد نکرده باشد (اگر کرده بود آنرا مثلا با ۱۰ رقم اعشار گرد نکرده جایگزین کنید)

 

  • حل کننده تحلیلی سینماتیک معکوس مخصوص هر ربات

    • این پکیج ها نیز توسط سازنده ها ارایه می شود که کافی است که پکیج آنرا دانلود کرده و نصب کنید. مشخص است که بهترین حل کننده می باشد زیرا روابط بین لینک ها به صورت تحلیلی حل می شوند و هزینه محاسباتی کمترین حالت می باشد. برای مثال درخصوص ربات یونیورسال کافی است آنرا با دستور زیر در یک پوشه در فضای کاریتان دانلود کرده و catkin build را اجرا کنید

git clone https://github.com/ros-industrial/universal_robot