کتابخانهٔ Dynamixel
مدتی هست که هم توی شبکههای اجتماعی و هم اینجا فعالیتم خیلی کم شده. دلیلش پروژهای هست که در حال حاضر وقت خیلی زیادی ازم میگیره و مجبورم بهخاطرش مسافرتهای طولانی رو برم و برگردم.
اما ماحصل یکی از این سفرها یک کتابخانهٔ جدید و بسیار خوشگل و مرتب شده به اسم libdynamixel. این کتابخانه یک API سطح بالا برای کنترل و استفاده از سروو موتورهای هوشمند داینامیکسل طراحی شده. این پست در مورد ویژگیهای این کتابخانه است.
داینامیکسل
نقل قول سایت نمایندگی روبوتیس در ایران:
سرومو وتورهای DYNAMIXEL، محصول شرکت روبوتیس، که با رویکردهای خاص روباتیک طراحی شدهاند، دارای ساختار شبکهای میباشند و ضمن دریافت فرمان از کنترلر اصلی میتوانند اطلاعات مختلفی نظیر موقعیت، سرعت و بار موتور، دمای داخلی ماژول، ولتاژ ورودی و غیره به آن برگردانند. سروموتور داینامیکسل را هم از طریق رایانه به کمک واسط USB2Dynamixel و هم به کمک پردازندههای میکروکنترلری میتوان کنترل نمود.
این سروموتورها را به علت دارا بودن قابلیت گردش کامل میتوان هم در حالت کنترل موقعیت به عنوان سروموتور و هم در حالت کنترل سرعت به عنوان موتور با فیدبک انکدر استفاده نمود. نسل جدید سروموتورهای داینامیکسل (سری MX) دارای پردازنده ۳۲ بیتی ARM و انکدر ۱۲ بیتی میباشند و قادر هستند در تمام محدود °۳۶۰ موقعیت موتور را کنترل نمایند.
امروزه این سروموتورها نامی آشنا در لیگهای مختلف ربوکاپ نظیر لیگ روباتهای خانگی، روباتهای امداد و نجات، روباتهای مینیاب و به خصوص لیگ روباتهای فوتبالیست انسان نما (در سایزهای مختلف Kid Size و Teen Size و Adule Size) میباشد. همچنین این سروموتورها در پروژههای مختلف علمی و پژوهشی استفادههای فراوان دارند.
اولین بار سال ۸۸ توی پروژهٔ روباتهای انساننما (که بعداً باید دربارهش بنویسم) با این با این کوچولوهای قهرمان آشنا شدم. اونجا ما از مدل AX12 استفاده میکردیم که ارزونترین و ضعیفترین مدل این سری بود. اما مدتی پیش برای انجام پروژهٔ فعلیمون به کارفرما گفتیم دو تا موتور سری MX28 برای پروژه بخره. بعد از یه سری ملق زدن توی اینترنت متوجه میشیم که هیچ API درست درمونی برای ارتباط با این موتورها توی زبانهای خفن و خوشگل مثل سی++ و سی++۱۱ وجود نداره. چند تا کتابخونهٔ خوب برای سی بود البته.
خوب من تصمیم گرفتم یه دونه درست کنم و بذارم گیتهاب. نتیجهش شد این: libdynamixel سعی کردم تمام مدلهای ممکن رو پشتیبانی کنم که البته فقط دوتا مدلی که در اختیار دارم رو تونستم تست کنم. این API کامل شده اما چند تا ویژگی خوب دیگه هست که تعطیلات عید بهش اضافه میکنم.