Robotic Knowledge
381 subscribers
242 photos
62 videos
2 files
170 links
دانش و برنامه‌نویسی برای رباتیک
Download Telegram
#Cpp
#gnuplot
#Tools

ترسیم کردن داده در زبان ++C براحتی کار مشابه در Python نیست - اونجا شما می‌تونید براحتی از کتابخانه Matplotlib استفاده کنید. برای این مساله یکی از راه حل‌ها استفاده از ابزار کامند لاینی gnu plot هست که به شکل‌های مختلف با pipe کردن دیتا توی محیط command line میتونید خروجی برنامه کامپایل شده ++C رو ترسیم کنید.
در مجموع gnu plot ابزارهای بسیار زیادی در خودش داره که توی سایتش می‌تونید ببینید.
توی تصویر هم براتون چیزی رو که برای تست باهاش ترسیم کردم رو قرار دادم.

—————
@roboticknowledge
#Tools
یکی از ویژگی‌های خاص «کتاب مقدمه‌ای بر رباتیک» اثر دکتر تقی‌راد، اشاره به ابزارها می‌باشد. برای مثال، ایشان در خصوص نرم‌افزاری که برای ترسیم اشکال کتاب استفاده کرده‌اند، به Inkscape اشاره می‌کنند و همچنین در بخشی دیگری نوشته‌اند که برای پیاده‌سازی الگوریتم کنترلی یک ربات موازی از نرم‌افزار RT-Lab و تعامل آن با Simulink استفاده کرده‌اند. در جایی دیگر بیان کرده‌اند که در ربات SURENA IV از ROS استفاده شده است.
از نظر بنده این بسیار با ارزش است زیرا این ابزارها برای محققان جوان و دانشجویان PhD می‌تواند بسیار کاربردی باشد.
—————
@roboticknowledge
👍5
#ROS2
#Tools
#WSL

اگر دوست دارید بدون استفاده از VM بتونید ROS2 رو روی ویندوز داشته باشید، از WSL2 استفاده کنید.
ابزار WSL امکان نصب Ubuntu رو به شما روی ویندوز میده بدون دردسرهای VM و Docker. همچنین براحتی میتونید بین ویندوز و Ubuntu فایل جابجا کنید و GUI نرم‌افزار‌های نصب روی Ubuntu هم براحتی از ترمینال باز میشه روی ویندوز.
----------
@roboticknowledge
👨‍💻3👍1
#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
#ROS2 #Foxglove #Rviz2 #Tools
چنانچه تا کنون از rviz برای ترسیم داده‌های ربات خود استفاده می‌کردید، شما را به استفاده از Foxglove دعوت می‌کنم.
فاکس گلو بسیار ساده‌تر، تطبیق‌پذیرتر، و دوستانه‌تر از rviz2 می‌باشد. همچنین درگیر مسائل سردردآور کمتری می‌شوید.
—————
@roboticknowledge
👍4
#Tools
#Cpp
#AnalyticalDynamics
#OptimalControl

کتابخانه‌ای برای ++C و البته بصورت bind شده در Python وجود دارد که مسائل دینامیک چندجسمی را برای شما حل می‌کند. مدل می‌تواند براحتی بصورت URDF در ورودی تعریف شود.

این کتابخانه pinocchio نام دارد:
https://github.com/stack-of-tasks/pinocchio

همچنین این کتابخانه می‌تواند با CasADI که خود کتابخانه کنترل بهینه است نیز کار کند! فکر نکنید ربات‌های Boston Dynamics کنترل بهینه را از هیچ کامل در خود دارند بدون این ابزارها.

پیشروها با این‌ها و امثال این‌ها کارهای بزرگ می‌کنند. متاسفانه سیستم آموزشی کشور ما در قرن پیش مانده است و همین الان در بهترین دانشگاه‌های مملکت معادلات را بصورت اشتباه پیاده و غیر بهینه حل و برای جبران نتایج دست به تغییر دستی نتایج زده می‌شود! در هیچ دوره‌ای به این‌ها اشاره نمی‌کنند چون نمی‌دانند و این‌ها چیزهای مدرن هستند که تفاوت می‌سازند.
—————
@roboticknowledge
👍1🤯1
#Tools #CAD
#URDF #SDF
#Gazebo

مدل‌های شبیه‌سازی رباتی که همراه با mesh هستند و جزئیات خوبی دارند، توسط نرم‌افزارهای CAD آماده می‌شوند و به صورت URDF خروجی گرفته می‌شوند - نوشتن آنها با دست تقریبا غیرممکن است.

امروز از صبح در حال یادگیری قابلیت‌های نرم‌افزار FreeCAD بودم. اینجا در این لیست یوتوب به بهترین شکل آموزش داده شده است.

من قبلاً SOLIDWORKS کار کرده بودم و یادگیری یک نرم‌افزار دیگر مثل FreeCAD در چنین حالتی بسیار ساده است زیرا معمولا روش‌ها و ابزارهای CAD همه قواعد یکسان دارند.

چرا FreeCAD؟

- رایگان است و کم حجم.
- ساده است و قوی.
- برای استخراج URDF یک workbench رباتیک دارد و خیلی راحت‌تر از SOLIDWORKS این کار را انجام می‌دهد.
- بر روی Ubuntu 22 نصب می‌شود.

گزینه‌های دیگری مثل Fusion360 یا Blender نیز با پلاگین خروجی URDF می‌دهند، اما اگر سادگی ملاک باشد، آن هم در سن ۲۶ سالگی برای یک رباتیک کار چیزی مثل Blender انتخاب خوبی نیست. ترجیح می‌دهم وقتم را صرف چیز پیچیده دیگری بکنم! 🙂
----------
@roboticknowledge
👍4
Robotic Knowledge
#Tools #CAD #URDF #Gazebo #ROS2 نکته تکمیلی اول: من از ورک‌بنچ CROSS برای ایجاد مدل URDF در FreeCAD استفاده می‌کنم. ‌ تصویر از محیط FreeCAD من به همراه نمودار درختی ربات ایجاد شده با کمک CROSS گرفته شده است. ————— @roboticknowledge
#Tools #CAD
#URDF
#Gazebo #ROS2

نکته تکمیلی دوم: CROSS آموزش ندارد. 😂 حتی داکیومنت خاصی هم ندارد!
با تعداد زیادی آزمون و خطا آموختم از آن استفاده کنم. ابزار Set Placement آن‌ها که در تعریف مکان مفصل کاربردی است، باگ دارد و من راه دیگری برای تعریف مفصل پیدا کردم.
این ابزار توسط گروه یک استاد در دانشگاه پراگ جمهوری چک توسعه داده شده است - کلا در رباتیک این دانشگاه خدمات متن باز زیادی داده است - دمشان گرم.
—————
@roboticknowledge
👍4
Robotic Knowledge
#Tools #CAD #URDF #Gazebo #ROS2 نکته تکمیلی دوم: CROSS آموزش ندارد. 😂 حتی داکیومنت خاصی هم ندارد! با تعداد زیادی آزمون و خطا آموختم از آن استفاده کنم. ابزار Set Placement آن‌ها که در تعریف مکان مفصل کاربردی است، باگ دارد و من راه دیگری برای تعریف مفصل پیدا…
#Tools #CAD
#URDF
#Gazebo #ROS2

نکته تکمیلی سوم:‌پس از تعریف مدل - شامل لینک‌ها، مفاصل، هندسه واقعی و تصادف، کراس بصورت خودکار با تعریف ماده ویژگی‌های اینرسی را محاسبه می‌کند. نهایتا یک پکیج راس 2 برای ربات تولید می‌کند که دارای لانچ فایل برای گزبو و آرویز نیز است! 🙂

—————
@roboticknowledge
👍3
#ROS2 #Tools

توسعه‌دهنده‌ای یک برنامه درست کرده‌اند به نام Turtle Nest که کار دستور
ros2 pkg create 

را بصورت GUI انجام می‌دهد و برای پکیج درست کردن و دپندنسی اضافه کردن دیگر درگیر Command Line نمی‌شود آدم! استفاده نکرده‌ام اما این تیپ کارها دوست داشتنی هستند. 🙂

https://discourse.ros.org/t/introducing-turtle-nest-gui-for-ros-2-package-creation/39229

----------
@roboticknowledge
Please open Telegram to view this post
VIEW IN TELEGRAM
311
#Tools
#Computer

فیدبک موقعیت و جهت‌گیری یک پلتفرم رباتیک بخش بسیار پایه‌‌ای و مهم در سیستم است. این داده اگر در پلتفرم پایه متحرک مورد نیاز باشد، باید توسط SLAM و Odometery محاسبه شود.

ماژول‌های سخت‌افزاری وجود دارد که این مسأله را حل کرده‌اند. یک نمونه معروف Realsense T265 است که دارای دو fish eye و یک IMU است و با روش‌های Visual Slam با دقت مناسبی اطلاعات موقعیتی Local را برای کامپیوتر Master تامین می‌کند. تفاوت با سیستم موقعیت‌یابی جهانی این است که در هر محیطی که امکان دیدن وجود داشته باشد، حتی محیط بسته، این سیستم موقعیت‌یابی لوکال بخوبی کار خواهد کرد. نکته قابل توجه این است که اسلمی که اجرا می‌شود بر روی خود ماژول است (و شما برای موقعیت سنجی بر روی کامپیوتر اصلی هیچ پردازشی نخواهید داشت) و خروجی موقعیت نرخ 200 هرتز دارد که بسیار خوب است.

----------
@roboticknowledge
1
#Tools

گاهی اوقات لازم است تا دوران‌ها را بررسی کنیم تا اطمینان پیدا کنیم ار برخی تبدیل‌ها. این وبسایت برای این چک‌ها خیلی خوب است:
https://www.andre-gaschler.com/rotationconverter/
مثلا دیتای nav_msgs/Odometry جهت‌گیری را با quaternion فرستاده است و شما می‌خواهید سریع roll-pitch-yaw را بررسی کنید. این ابزار اینجا به کار می‌آید!

—————
@roboticknowledge
🏆33🍾2
#ROS #Tools

زوایای دوران را در بسیاری از مواقع دوست داریم به بازه [pi pi-] انتقال دهیم. چرا؟ ما میدانیم که زاویه 380 درجه برابر با زاویه 20 درجه است و با این تبدیل همواره زوایای جهت‌گیری را در محدوده [pi pi-] نگه می‌داریم. مهم‌ترین مکان برای این تبدیل در بحث یادگیری ماشین است که تلاش می‌شود ورودی‌های شبکه بصورت normalized بشوند تا یادگیری آسان‌تر بشود.

به این تبدیل ssa یا smallest signed angle گفته می‌شود. فرمول ریاضی این تبدیل بصورت زیر است:


signed reminder((angle + pi), 2pi) - pi


در ROS یک کتابخانه وجود دارد به نام angles که این را پیاده‌سازی کرده‌اند و شما می‌توانید این تبدیل را براحتی انجام دهید:

static double angles::normalize_angle (double angle)


می‌توانید داکیومنت همه توابع این کتابخانه را اینجا ببینید:
http://docs.ros.org/en/jade/api/angles/html/angles_8h.html

—————
@roboticknowledge
6