Robotic Knowledge
386 subscribers
242 photos
62 videos
2 files
172 links
دانش و برنامه‌نویسی برای رباتیک
Download Telegram
#ROS2Webots
#Webots
#ROS2

قدرت شبیه‌ساز Webots را با توسعه بر اساس ROS2 بیشتر در پروژه‌های خود بکار بگیرید.

در اکوسیستم ROS/ROS2 شبیه‌ساز رایج Gazebo می‌باشد.
اگر تجربه کاربری Webots را بعنوان شبیه‌ساز رباتیک داشته باشید، خواهید دید که Gazebo در مقابل Webots یک تکه آشغال هست.
یک پل بسیار ویژه وجود دارد که به لطف آن قدرت ROS2 را در Webots می‌توانید داشته باشید:
The webots_ros2 package: An interface between ROS 2 and Webots.

با این امکان، ربات‌های خود را در Webots با ROS2 برنامه‌نویسی می‌کنید — و از تمام‌ پکیج‌های در دسترس می‌توانید استفاده کنید تا معماری توزیع شده برنامه ربات را توسعه دهید.

اگر ویندوز دارید و Webots بر روی ویندوز نصب است، صرفا کافی است تا بر روی WSL نسخه Iron راس 2 را نصب کنید؛ سپس
sudo apt-get install ros-iron-webots-ros2

مراحل کامل را اینجا دنبال کنید. با لانچ این دمو در WSL از برقراری ارتباط مطمئن شوید:
ros2 launch webots_ros2_universal_robot multirobot_launch.py

اگر شبیه‌سازی 2 ربات در حال جابجایی قوطی نوشابه بالا آمد، تبریک می‌گم؛ به دنیای ترکیبی ROS2Webots خوش آمدید!

سعی می‌کنیم چند پروژه ساده را توسعه دهیم و فیلم آموزش کامل آن‌ها را ضبط کنیم و در ادامه آموزش‌های Webots در کانال دانش رباتیک منتشر کنیم.
—————
@roboticknowledge
👍4
Robotic Knowledge pinned «#ROS2Webots #Webots #ROS2 https://www.youtube.com/watch?v=q8F_s_MX_Is In this video, I have shown how you can set up the interface between ROS2 (runs on Ubuntu 22.04 over WSL2) and Webots (Installed on Windows 10). This way, you will be able to: — develop…»
#MJ
نمودار فعالیت من در گیتهاب در سال 2023.

در 6 ماه نخست بصورت محدود اما پیوسته بر روی مسابقات شبیه‌سازی کنفرانس‌های ICRA2023 و IROS2023 کار کردم. نتیجه کار نه چندان سنگین اما پیوسته من قهرمانی در مسابقات IROS2023 بود.

اکنون یک پروژه شبیه‌سازی سنگین بر اساس ترکیب Webots و ROS2 شروع کرده‌ام و به هر نقطه‌ای که برسد، یک ویدئو از آن نقطه ضبط خواهم کرد و در یوتوب نشر خواهم داد.

از این مطلب سه هدف داشتم: 1- بیان اینکه اتفاق‌های بزرگ برآیند مجموعه‌ای از گام‌های کوچک اما پایدار هستند. 2- در هر نقطه‌ای که هستید، منتظر کسی یا چیزی نمانید و دائم در حال تلاش پیوسته باشید. 3- اینکه محتوای آینده کانال در 2024 به شکلی خواهد بود - که البته برای آینده حرفه‌ای Robotic Software Development بسیار کمک‌کننده می‌تواند باشد.
آرزو می‌کنم که همه انشاالله در سال 2024 پیشرفت پایداری را تجربه کنیم.
—————
@roboticknowledge
🏆4👍3
#ROS2
#URDF
#TF
#rviz2

امروز در تلاش برای نشان‌دادن دیتای ربات خود با کمک rviz2 بودم. برای این منظور، نیاز داشتم تا تمام دستگاه‌های مختصات ربات را بصورت TF پابلیش کنم و باید فایل توضیح ربات URDF را در Node پابلیشر TF های ربات لود می‌کردم تا نیاز به تعریف دستگاه‌ها بصورت دستی نباشد.

در ROS 1 این کار به راحتی انجام می‌شود - با تعریف URDF به عنوان پارامتر - اما در ROS 2 این کار بسیار سخت شده است - باید URDF را بصورت رشته در Node باز کرد که داستان‌های Parse فایل و ... بسیار روی مخ و اذیت کننده است.
----------
@roboticknowledge
👍4
https://www.youtube.com/watch?v=JhZ4r2N13BY

Simulating a Keyboard-Controlled Rosbot using Webots and ROS2 with Reviewing the Code

I have presented my ros2webots_rosbot package in this video. In this ros2 package, I have simulated a Rosbot in Webots, that is being controlled by arrows of the keyboard. The robot's driver is a python node, and the node that prepares data from the keyboard for the robot, is a C++ node. Also, I have made ROS2 topics for the data of the robot, like IMU and LiDAR data, ready to be used in the next development of the package. The key points of setting the integrated ROS2 and Webots simulation are covered in the video.

You can find the project repo here:
https://github.com/MJavadZallaghi/ros2webots

The lecture has been prepared by Mohammad Javad Zallaghi from roboticknowledge Youtube channel. Also, you can find our telegram channel here: https://t.iss.one/roboticknowledge

#ROS2Webots
#Webots
#ROS2
—————
@roboticknowledge
👏3
Robotic Knowledge pinned «https://www.youtube.com/watch?v=JhZ4r2N13BY Simulating a Keyboard-Controlled Rosbot using Webots and ROS2 with Reviewing the Code I have presented my ros2webots_rosbot package in this video. In this ros2 package, I have simulated a Rosbot in Webots, that…»
#پژوهش
#توسعه

دوست عزیزی فیلم تور آزمایشگاه CSAIL شاخه رباتیک در MIT را برای من فرستادند که در ۱۲ دقیقه شاخه‌های کاری و تمرکز پژوهشی آزمایشگاه همراه با دمو ارائه شده است که دیدن آن خالی از لطف نیست:
https://www.youtube.com/watch?v=l5o_edsg_nU

----------
@roboticknowledge
👍2
#ROS2
#bag
#tools
با کتابخانه rqt_bag در ROS2 می‌توانید play شدن یک bag file را به مانند موسیقی کنترل کنید (امکان ویرایش bag را نیز دارد):
ros2 run rqt_bag rqt_bag

همچنین در تایم لاین لحظه انتشار دیتای یک تاپیک با خط آبی مشخص می‌شود (به مانند تصویر) که در پابلیشرهای آسنکرون امکان دیباگ بهتری به شما می‌دهد.
—————
@roboticknowledge
#ROS2
#bag
#tools
یک کتابخانه بسیار کاربردی دیگر برای تبدیل فایل‌های bag نیز وجود دارد: rosbags
sudo pip3 install rosbags

با این ابزار می‌توانید در ترمینال فایل‌های لاگ را از ROS2 به ROS1 و بر عکس تبدیل کنید. اهمیت این مورد در این است که خیلی از مواقع ابزارهای پردازش bag بهتری برای ROS1 وجود دارد (مانند ROS Bag Viewer در Simulink). تبدیل نیز بدین شکل است:
rosbags-convert <ros2_bag_folder>

—————
@roboticknowledge
#ROS2
#Simulink
#Algorithm
#Design
#Tools

در ادامه امکانات مربوط به لاگ‌های ROS (فایل‌های bag)، مورد محبوب دیگری نیز وجود دارد: Simulink
در سیمولینک بلوک‌هایی برای خواندن این فایل‌ها وجود دارد. برای مثال من در تصویر دیتای IMU را (شتاب خطی) ترسیم کرده‌ام. این امکان به شما در توسعه الگوریتم سرعت بالایی می‌دهد؛ براحتی فایل‌های لاگ را بالا می‌اورید و با داده‌های آن الگوریتم را توسعه می‌دهید و تست می‌کنید - همین کار را من برای Localization دارم انجام می‌دهم. نهایتا می‌توان از الگوریتم نیز کد هسته آن را تولید کرد — توسط Code Generation (بعدا در این مورد صحبت خواهم کرد).
—————
@roboticknowledge
👍3
#موقعیت_یابی
#Localization #Navigation
در بحث موقعیت‌ یابی (Localization) دو عبارت INS و IMU زیاد استفاده می‌شود که باید مراقب باشید آن‌ها متفاوت از هم هستند:

An IMU is a combination of multiple accelerometers and gyroscopes axes. Traditionally, an IMU is built with an accelerometer and gyroscopes to measure absolute spatial displacement. In comparison, an INS is a system integrating an IMU combined with a GPS/GNSS/GLONASS chip and computational skill.

بنابراین دیگر دچار این اشتباه نمی‌شوید که چنانچه رباتی تنها IMU دارد، می‌توانید برای آن سیستم موقعیت‌یابی جهانی توسعه دهید.
—————
@roboticknowledge
👍2
#ROS2 #Time #Algorithm

در پردازش داده‌های سنسور زمان اهمیت فراوانی دارد. الگوریتم شما باید داده‌ها را بصورت Syncron از سنسورها یا نودهای دیگر دریافت کند. چنانچه این اتفاق محقق نشد، الگوریتم ربات شما محاسبات غلطی انجام خواهد داد (در زمان واقعی از داده‌های نامعتبر استفاده شده است).

در سیستم‌های متکی بر Event مانند سیستم Pub/Sub موجود در ROS،‌ ممکن است به هر دلیلی دیتا بصورت Sync به الگوریتم شما نرسد. برای کنترل آن شرایط، ابتدا باید متوجه بشوید که تاخیر در رسیدن داده وجود دارد. اما چگونه؟

هر سنسوری در دیتایی که منتشر می‌کند،‌ در فیلد هدر یک Timestamp به داده می‌زند. کافی است شما هنگام دریافت داده آن Timestamp را را با زمان سیستم دریافت کننده مقایسه و کنترل کنید.

همچنین این کار را برای آنچه که الگوریتم نیز منتشر می‌کند باید انجام بدهید. برای مثال، من در انتشار داده‌های خروجی نود موقعیت‌یابی ربات Timestamp را به این شکل در ++C پر می‌کنم:
auto current_time = std::chrono::system_clock::now();

auto timestamp = std::chrono::duration_cast<std::chrono::seconds>(current_time.time_since_epoch());

message.header.stamp.sec = static_cast<uint32_t>(timestamp.count());

message.header.stamp.nanosec = static_cast<uint32_t>((current_time.time_since_epoch() - timestamp).count());

—————
@roboticknowledge
👍5
https://www.youtube.com/watch?v=x2v0zY_rH44

Design and implementation of a localization node for a ROS2 + Webots simulated ROSBot: The results

You can see how the localization node [That I have developed] is performing in providing feedback for positioning of the simulated ROSbot in Webots that has a ROS2-based software.

The localization node uses IMU data (for finding the robot global orientation) and Wheels Encoder data (for calculating velocity of the robot). Then the algorithm updated local position using a simple 2DoF kinematic model. I have developed the algorithm using Model-based Development (MBD) approach in Simulink, then deployed the generated C++ code in the ROS2 simulation package.

I will provide later a complete video for sharing how the node has been developed and implemented.

The localization node of the ROSbot in ros2webots_rosbot package: https://github.com/MJavadZallaghi/ros2webots/blob/main/ros2webots_rosbot/src/rosbot_localization_node.cpp

#ROS2Webots #Webots #ROS2
—————
@roboticknowledge
👍6
Robotic Knowledge pinned «https://www.youtube.com/watch?v=x2v0zY_rH44 Design and implementation of a localization node for a ROS2 + Webots simulated ROSBot: The results You can see how the localization node [That I have developed] is performing in providing feedback for positioning…»
#ROS2 #Foxglove #Rviz2 #Tools
چنانچه تا کنون از rviz برای ترسیم داده‌های ربات خود استفاده می‌کردید، شما را به استفاده از Foxglove دعوت می‌کنم.
فاکس گلو بسیار ساده‌تر، تطبیق‌پذیرتر، و دوستانه‌تر از rviz2 می‌باشد. همچنین درگیر مسائل سردردآور کمتری می‌شوید.
—————
@roboticknowledge
👍4
#ROS2 #Nav2 #Moveit2
یکی از Stack های مهم در اکوسیستم ROS2 استک Nav2 هست. این خبر را دیدم درباره Nav2 و بنظرم مهم است. در واقع یادگیری استک‌های مهم مانند همین Nav2 (برای ربات‌های پایه متحرک) بسیار مهم است - در سطح توسعه پیشرفته. یادگیری این‌ها ساده نیست و به زمان و انرژی نیاز دارد، اما بلند مدت ارزش آفرین خواهد بود. Moveit2 در بازوان رباتیک هم همین داستان را دارد.
—————
@roboticknowledge
👍1