راه اندازی ROS با استفاده از داکر (بخش اول)
مقدمه
برای اونایی که با ROS (Robot Operation System) سر و کار دارن صد در صد با این مشکل روبرو شدن که کدوم سیستم عامل رو برای کارشون انتخاب کنن: ویندوز، لینوکس یا مکینتاش. تنها گزینهای که جلو روی ما لینوکس است ( البته در این چند سال آخیر به ما رحم کردن و ویندوز 10 رو هم قابل دونستن که بشه روش نصب کرد) دومین مشکلی که باهاش مواجه میشیم اینکه کدوم توزیع از ROS رو استفاده کنیم. که هر توزیع ROS روی یک سیستم عامل خاص نصب میشود یا اینکه باید برای کار روی پروژههای مختلفی ورژن های مختلفی را باهاش کار کرد. مثلا توزیع Noetic بر روی اوبونتو های 20.04 یا مثلا توزیع Melodic بر روی اوبونتوی 18.04 نصب میشود یا توزیع Kinetic روی اوبونتوی 16.04 نصب میشود. بیشتر این توزیع ها در ویندوز نصب نمیشند و اگر هم نصب شوند فقط درون ویندوز 10 هستند با تازه هفت تا خان.
من دیگه توضیح مشکلات توزیع های مختلف ROS2 در ورژن های مختلف اوبونتو رو نمیدم.
برای خیلی از برنامه نویس هایی که تازه وارد این شاخه میشن این دوتا سوال پیش میاد چه سیسیتم عاملی و چه ورژنی از ROS.
راه حل این مشکل Docker است.
من قبل از اینکه با داکر برای حوزه ی رباتیک آشنا بشم فکر میکردم داکر فقط برای حوزههای تحت وب و آنلاین است اما فهمیدم که میشه با استفاده از داکر توزیع های مختلف ROS رو درون هر سیستم عاملی به راحتی اجرا کرد.
مختصری در مورد ROS
ساختن یک ربات، کار دشواری است. موتورها، سنسورها، نرم افزار و باطری ها، همشون باید با هم به طوری یکدست برای انجام یه کاری کار کنند. یک راه برای اینکه بتونیم این روند رو ساده کنیم استفاده از Robot Operating System یا به اختصار ROS است، ROS یک نرم افزار رایگان و متن باز است که شامل یک تعداد ابزار و رابط های کاربری برای ساخت ربات های پیشرفته است. بیشتر ربات ها از قسمت های قابل حرکت که بیشتر موتور و مفصل ها هستند، سنسور ها که اطلاعات را از محیط میگیرند و سیستم کنترلی تشکیل شده اند. ROS این امکان رو به برنامه نویس ها میده که سریع وساده این بخش ها رو درست کنند و خیلی راحت با استفاده از Topic ها و massage ها که از ابزارهای ROS هستند ارتباط برقرار کنند. با استفاده از ROS شما می تونین با ربات شبیه سازی شده کار کنین به جای ربات واقعی این ویژگی تست و اموزش رو هم ساده تر و هم کارآمدتر می کند. اگه یه موقع همت کنم یه پست کامل در موردش میذارم.
تو این دوره آموزشها میخوام چند تا بخشو تو داکر توضیح بدم:
- دانلود ایمیچ های راس و راه اندازی اونا و راه اندازی محیط گرافیکی برای محیط ویندوز
- نصب و راه اندازی محیط گرافیکی داخل لینوکس و نوشتن یک بش فایل
- نوشتن یک داکر فایل و ایجاد ایمیج اختصاصی و بیان فرق های هر کدوم از دیسترو ها
- نوشتن داکر کامپوز و استفاده از داکر کمپوز
- در آخر اجرای یه پروژه داخل ویندوز به وسیله داکر
- اگر وقت کنم یه توضیحاتی در مورد نحوه وصل کردن سخت افزارها هم به داکر میگم.
نصب داکر و Xlaunch
پس میریم سراغ بخش اول، محیط ROS رو داخل ویندوز نصب میکنیم البته داخل داکر و برای این کار من از دوتا توزیع Noetic و Humble که هر دوشون از توزیع های پشتیبانی طولانی مدت (LTS) هستند استفاده میکنم.
نکته: اگر با داکر آشنا نیستین میتونین در موردش گوگل کنین چندین دوره آموزشی تو یوتیوب به زبان فارسی هست. اما کلی بخواین بدونین اینه که مثل یک ماشین مجازی میمونه و میشه یک سیستم عامل کامل رو روش نصب کرد. اما به اندازه یک ماشین مجازی سنگین نیست.
اولین قدم برای کار با استفاده از داکر نصب آن روی ویندوز است. میتونین فایل نصب آن را داخل سایت docker.com دانلود کنین و نصب کنین. ( در گوگل docker install windows رو سرچ کیند.)
https://docs.docker.com/desktop/install/windows-install/
نکته: از اونجایی که داکرهاب کشور مارو تحریم کرده باید برای اینکه بتونین وارد سایتشون بشین یا از سایتشون دانلود کنین باید از وی پی ان یا از دی ان اس های شکن استفاده کنین.
بعد از دانلود داکر باید نرم افزار Xlaunch رو هم دانلود کنین.(برای اجرای GUIها در محیط داکر به این نرم افزار نیاز هست.)
https://sourceforge.net/projects/vcxsrv/
بعد از نصب داکر و Xlaunch میتونین با استفاده از دستور docker داخل CMD(command prompt) نصب بودن داکر را چک کنین.
با استفاده از docker desktop شما میتوانین ایمیج های موجود، کانتینرها و ولیوم هاتونو مدیریت کنین.
ممکن است در اولین اجرا یا درون نصب از شما بخواهد wsl 2 را نصب کنین که پس از نصب و ریستارت دوباره بتونین به راحتی با docker desktop کار کنین.
اولین قدم برای استفاده از داکر، ایمیجهای ROS هست. من از ایمیج های ROS که توسط osrf در داخل داکرهاب قرار داده شده اند استفاده میکنم. شما میتوانین توزیع های مختلف با ویژگیهای مختلف رو از داخل داکر هاب این گروه دانلود و استفاده کنین.
https://hub.docker.com/r/osrf/ros/tags
این یکی هم ایمیج های Official رو میذاره.
https://hub.docker.com/_/ros/tags
نصب و کار با ROS در ویندوز
ما کارمونو با نصب توزیع های Noetic و Humble روی ویندوز ادامه میدهیم.
در قسمت CMD دو دستور زیر رو بزنین و ایمیج های این دوتا توزیع رو دانلود کنین.
Docker pull osrf/ros:humble-desktop-full
Docker pull osrf/ros:noetic-desktop
نکته: فرق نسخه های full و معمولی اینه که خیلی از پکیج ها مثل Gazebo ، Moveit و این قبیل قسمت ها در نسخه full نصب هست ولی در نسخه معمولی این پکیج ها نیستن و باید دستی نصب بشه من با این دو نسخه میرم جلو و در جلو هر کدوم از قسمت هایی که نیازه رو نصب میکنم.
پیشنهاد من اینه اگر برای اولین بار هست و میخواین چیزهای مختلف رو امتحان کنین نسخه full رو نصب کنین. البته من تو این آموزش نصب قسمتهای مختلف رو توضیح میدم.
پس از pull کردن این دو ایمیج میتونین اونارو داخل قسمت ایمیج های docker desktop بینین.
شما میتونین این کار ور از طریق CMD هم انجام بدین با تایپ دستور docker images
docker run –it osrf/ros:noetic-desktop bash
تبریک شما یک کانتینر توزیع noetic داخل ویندوز خودتون دارین و میتونین داخلش برنامه های ROS رو اجرا کنین.
بعد از وارد شدن به کانتینر راس Noetic میتونین با دستور lsb_release –a ورژن لینوکس اجرا که روش نصب هست رو ببینین و با زدن دستور roscore میبینین roscore اجرا میشه و ورژن راس رو بهتون نشون میده برای من noetic ورژن 1.16.0 هست.
حالا میریم سراغ اجرای توزیع humble، با اجرای دستور زیر داخل محیط cmd این توزیع رو اجرا کنین.
docker run –it osrf/ros:humble-desktop-full bash
میتونین با همون دستور lsb_release –a ورژن لینوکس این توزیع رو ببینین که اوبونتو 22.04 هست و برای دیدن اطلاعات ROS نصب شده من از دستور ros2 doctor –r استفاده کردم و میتونین نتیجه رو تو تصویر بالا ببینین.
اجرای RViz داخل داکر ویندوز
حالا میریم سراغ بخش جالب محیطهای گرافیکی داخل داکر
اگه یادتون باشه من گفتم نرم افزار Xlaunch رو نصب کنین اون نرم افزار برای نمایش قسمت های گرافیکی داخل ویندوز استفاده میشه، وقتی بازش میکنین با این صفحه روبرو میشین.
شما میتونین قسمت display number رو صفر یا هر عددی بدین فقط یادتون باشه چه عددی دادین که بعدا نیازه به این شماره دارین. البته اگر 1- بذارینش خودش میاد اتوماتیک به اولین شماره که آزاده میده که بیشتر مواقع صفر هست. بعدش چندتا next میزنین و تمام برای اجرای یک محیط گرافیکی اماده ست. پس میریم برای اجرای یک محیط گرافیکی داخل Noetic و Humble.
من برای اینکار اومدم و RViz رو داخل هر دوش اجرا کردم
خب برای Noetic اول اینکه باید roscore اجرا باشه برای اینکار ما یه کانتینر میسازیم و بعدش داخلش roscore رو اجرا می کنیم و بعدش داخل یه ترمینال دیگه به اون کانتینر وصل می شیم و اونجا RViz رو اجرا میکنیم.
ساخت کانتیرنر که مثل بالا هست و توضیحشو دادم اما برای اینکه بخوایم به کانتنر وصل بشیم یه اپشن دیگه باید بهش اضافه کنیم که به اون ترمینال بگیم که از این طریق با نرم افزار Xluanch رابطه برقرار کنه.
docker exec -e DISPALY=host.docker.internal:0.0 -it ros-container-noetic bash
برای توزیع humble کار راحت تر است چون نیازی به راه اندازی roscore نیست. با دستور زیر کانتینر رو اجرا میکنیم و بعدش RViz2 را راه اندازی می کنیم.
docker run --name ros-container-humble -e DISPALY=host.docker.internal:0.0 -it osrf/ros:humble-desktop-full bash
امیدوارم این اموزش براتون مفید بوده باشه.
لطفا اگر نکته ای در مورد نحوه نگارش یا حتی بقیه راه اموزش به نظرتون میاد بهم بگین.
https://neonicx.com/
مطلبی دیگر از این انتشارات
Hello World! or Hello World ! - That is the question:
مطلبی دیگر در همین موضوع
رهایی از npm ِ خر موقع آپدیت زدن تو composer
بر اساس علایق شما
اَگه آلو هستی آلو بمون🌱