#ROS2
#bag
#tools
یک کتابخانه بسیار کاربردی دیگر برای تبدیل فایلهای bag نیز وجود دارد: rosbags
با این ابزار میتوانید در ترمینال فایلهای لاگ را از ROS2 به ROS1 و بر عکس تبدیل کنید. اهمیت این مورد در این است که خیلی از مواقع ابزارهای پردازش bag بهتری برای ROS1 وجود دارد (مانند ROS Bag Viewer در Simulink). تبدیل نیز بدین شکل است:
—————
@roboticknowledge
#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
#Simulink
#Algorithm
#Design
#Tools
در ادامه امکانات مربوط به لاگهای ROS (فایلهای bag)، مورد محبوب دیگری نیز وجود دارد: Simulink
در سیمولینک بلوکهایی برای خواندن این فایلها وجود دارد. برای مثال من در تصویر دیتای IMU را (شتاب خطی) ترسیم کردهام. این امکان به شما در توسعه الگوریتم سرعت بالایی میدهد؛ براحتی فایلهای لاگ را بالا میاورید و با دادههای آن الگوریتم را توسعه میدهید و تست میکنید - همین کار را من برای Localization دارم انجام میدهم. نهایتا میتوان از الگوریتم نیز کد هسته آن را تولید کرد — توسط Code Generation (بعدا در این مورد صحبت خواهم کرد).
—————
@roboticknowledge
👍3
#موقعیت_یابی
#Localization #Navigation
در بحث موقعیت یابی (Localization) دو عبارت INS و IMU زیاد استفاده میشود که باید مراقب باشید آنها متفاوت از هم هستند:
بنابراین دیگر دچار این اشتباه نمیشوید که چنانچه رباتی تنها IMU دارد، میتوانید برای آن سیستم موقعیتیابی جهانی توسعه دهید.
—————
@roboticknowledge
#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 پر میکنم:
—————
@roboticknowledge
در پردازش دادههای سنسور زمان اهمیت فراوانی دارد. الگوریتم شما باید دادهها را بصورت 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
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
YouTube
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)…
The localization node uses IMU data (for finding the robot global orientation)…
👍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
چنانچه تا کنون از rviz برای ترسیم دادههای ربات خود استفاده میکردید، شما را به استفاده از Foxglove دعوت میکنم.
فاکس گلو بسیار سادهتر، تطبیقپذیرتر، و دوستانهتر از rviz2 میباشد. همچنین درگیر مسائل سردردآور کمتری میشوید.
—————
@roboticknowledge
👍4
#ROS2 #Nav2 #Moveit2
یکی از Stack های مهم در اکوسیستم ROS2 استک Nav2 هست. این خبر را دیدم درباره Nav2 و بنظرم مهم است. در واقع یادگیری استکهای مهم مانند همین Nav2 (برای رباتهای پایه متحرک) بسیار مهم است - در سطح توسعه پیشرفته. یادگیری اینها ساده نیست و به زمان و انرژی نیاز دارد، اما بلند مدت ارزش آفرین خواهد بود. Moveit2 در بازوان رباتیک هم همین داستان را دارد.
—————
@roboticknowledge
یکی از Stack های مهم در اکوسیستم ROS2 استک Nav2 هست. این خبر را دیدم درباره Nav2 و بنظرم مهم است. در واقع یادگیری استکهای مهم مانند همین Nav2 (برای رباتهای پایه متحرک) بسیار مهم است - در سطح توسعه پیشرفته. یادگیری اینها ساده نیست و به زمان و انرژی نیاز دارد، اما بلند مدت ارزش آفرین خواهد بود. Moveit2 در بازوان رباتیک هم همین داستان را دارد.
—————
@roboticknowledge
👍1
Forwarded from MatlabTips
This media is not supported in your browser
VIEW IN TELEGRAM
اکنون ChatGPT یک بدن هم دارد، ربات Figure 01 که هوشمندانه با دیگران ارتباط برقرار میکند
https://www.figure.ai/
https://www.figure.ai/
👍3
#نیازمندی
سلام دوستان.
من امروز به یک کامپیوتر (سرور) با GPU 3080/3090 و حداقل هشت هسته CPU و 32 گیگابایت رم و OS Ubuntu 20 نیاز جدی دارم.
با سیمرغ امیرکبیر و GPURUN صحبت کردم، سیستم آزاد ندارند - البته سرعت نت سیمرغ هم واقعا جالب نیست طبق تجربه خودم.
آیا مرکزی رو سراغ دارید که بتونه چنین چیزی رو در اختیارم قرار بده در لحظه؟ ممنون اگر میتونید راهنمایی کنید!
این آی دی خودم هست: @MJavadZallaghi
سلام دوستان.
من امروز به یک کامپیوتر (سرور) با GPU 3080/3090 و حداقل هشت هسته CPU و 32 گیگابایت رم و OS Ubuntu 20 نیاز جدی دارم.
با سیمرغ امیرکبیر و GPURUN صحبت کردم، سیستم آزاد ندارند - البته سرعت نت سیمرغ هم واقعا جالب نیست طبق تجربه خودم.
آیا مرکزی رو سراغ دارید که بتونه چنین چیزی رو در اختیارم قرار بده در لحظه؟ ممنون اگر میتونید راهنمایی کنید!
این آی دی خودم هست: @MJavadZallaghi
🫡2
Robotic Knowledge
#نیازمندی سلام دوستان. من امروز به یک کامپیوتر (سرور) با GPU 3080/3090 و حداقل هشت هسته CPU و 32 گیگابایت رم و OS Ubuntu 20 نیاز جدی دارم. با سیمرغ امیرکبیر و GPURUN صحبت کردم، سیستم آزاد ندارند - البته سرعت نت سیمرغ هم واقعا جالب نیست طبق تجربه خودم. آیا…
#GPU
ستاپ کردن CUDA روی سیستم ریموت کار بسیار دردناکی هست و زمانی که این جدول زیبا رو میبینید، چند عدد فریاد YESSS کاملا طبیعی هست!
—————
@roboticknowledge
ستاپ کردن CUDA روی سیستم ریموت کار بسیار دردناکی هست و زمانی که این جدول زیبا رو میبینید، چند عدد فریاد YESSS کاملا طبیعی هست!
—————
@roboticknowledge
😁7
سال نو پارسی و باستانی ما ایرانیان بر همه عزیزان مبارک باشه!
🍎🟩
آرزوی سلامتی، شادی و پیشرفت میکنم براتون.
این هفته خبرهای بسیار جالبی در دنیای رباتیک مطرح شد که خرد خرد پست میکنم! :=]
—————
@roboticknowledge
🍎🟩
آرزوی سلامتی، شادی و پیشرفت میکنم براتون.
این هفته خبرهای بسیار جالبی در دنیای رباتیک مطرح شد که خرد خرد پست میکنم! :=]
—————
@roboticknowledge
👏11
Robotic Knowledge
#ros2webots https://www.linkedin.com/feed/update/urn:li:activity:7173544868470894592/
#تجربه #ros2webots
پروژههای ساده و جذاب در رباتیک + ترکیب طلایی LinkedIn + GitHub
این پست من در لینکدین توسط Open Robotics بازنشر داده شد و حدود 19 هزار ایمپرشن تا اکنون گرفته است!
پس از آن سیلی از درخواست اتصال پدیدار شد که عمدتا حسابهای تایید شده با شبکه قوی در رباتیک بودند.
حضور و فعالیت حرفهای در LinkedIn و GitHub برای شبکهسازی غنی در رباتیک ارزش فراوانی دارد — البته صبر و انرژی قابلی هم نیاز خواهد داشت. درس شخصی برای من این است که با تعریف کردن پروژههای متن باز، ساده و جذاب (به مانند کاری که من برای پروژه ros2webots انجام دادم) برای گرفتن موقعیتهای خوب یا حداقل جذب توجه افراد موقعیتدار مینوان شانس خود را افزایش داد.
—————
@roboticknowledge
پروژههای ساده و جذاب در رباتیک + ترکیب طلایی LinkedIn + GitHub
این پست من در لینکدین توسط Open Robotics بازنشر داده شد و حدود 19 هزار ایمپرشن تا اکنون گرفته است!
پس از آن سیلی از درخواست اتصال پدیدار شد که عمدتا حسابهای تایید شده با شبکه قوی در رباتیک بودند.
حضور و فعالیت حرفهای در LinkedIn و GitHub برای شبکهسازی غنی در رباتیک ارزش فراوانی دارد — البته صبر و انرژی قابلی هم نیاز خواهد داشت. درس شخصی برای من این است که با تعریف کردن پروژههای متن باز، ساده و جذاب (به مانند کاری که من برای پروژه ros2webots انجام دادم) برای گرفتن موقعیتهای خوب یا حداقل جذب توجه افراد موقعیتدار مینوان شانس خود را افزایش داد.
—————
@roboticknowledge
👍15
#Simulink #C #Cpp #Algorithm #CodeGeneration #Python
شبیهسازهای مطرح RL همگی از Python استفاده میکنند و شما یک ++C/C نویس هستید. تکلیف چیست؟
شاید برای افرادی که از Python برای کار رباتیکی خود استفاده میکنند و زیاد از ++C/C در کار خود استفاده نکردهاند، پایتون یک بهشت باشد اما برای افرادی که به ++C/C نویسی عادت دارند، نوشتن Python بصورت فراتر از یک اسکریپت ساده عذاب بزرگی خواهد بود از بس که محدودیت دارد این زبان و وقتی قدرت C بزرگ را بدانید متوجه خواهید شد - خصوصا اگر C را از Simulink تولید کنید!
حال تصویر کنید در Isaac Gym یا هر Gym دیگری ربات و محیط شما باید با اسکریپت Python شبیهسازی و کنترل شود — که دردناک خواهد بود برای همان دسته توسعهدهنگان صنعتیتر.
اما خیلی راحت میتوان الگوریتم را با C نوشت (یا کد C از آن در Simulink تولید کرد) و آن را کامپایل کرد و یک کتابخانه AlgoSDK.so از آن تولید کرد. از اینجا به بعد براحتی مینوانید فایل so. کتابخانه C را در اسکریپت مینیمال پایتون خود صدا بزنید:
—————
@roboticknowledge
شبیهسازهای مطرح RL همگی از Python استفاده میکنند و شما یک ++C/C نویس هستید. تکلیف چیست؟
شاید برای افرادی که از Python برای کار رباتیکی خود استفاده میکنند و زیاد از ++C/C در کار خود استفاده نکردهاند، پایتون یک بهشت باشد اما برای افرادی که به ++C/C نویسی عادت دارند، نوشتن Python بصورت فراتر از یک اسکریپت ساده عذاب بزرگی خواهد بود از بس که محدودیت دارد این زبان و وقتی قدرت C بزرگ را بدانید متوجه خواهید شد - خصوصا اگر C را از Simulink تولید کنید!
حال تصویر کنید در Isaac Gym یا هر Gym دیگری ربات و محیط شما باید با اسکریپت Python شبیهسازی و کنترل شود — که دردناک خواهد بود برای همان دسته توسعهدهنگان صنعتیتر.
اما خیلی راحت میتوان الگوریتم را با C نوشت (یا کد C از آن در Simulink تولید کرد) و آن را کامپایل کرد و یک کتابخانه AlgoSDK.so از آن تولید کرد. از اینجا به بعد براحتی مینوانید فایل so. کتابخانه C را در اسکریپت مینیمال پایتون خود صدا بزنید:
from ctypes import * #Import ctypes library
libc = CDLL("./AlgoSDK.so") #Load library
—————
@roboticknowledge
👍3👀2🫡2
Robotic Knowledge
#Simulink #C #Cpp #Algorithm #CodeGeneration #Python شبیهسازهای مطرح RL همگی از Python استفاده میکنند و شما یک ++C/C نویس هستید. تکلیف چیست؟ شاید برای افرادی که از Python برای کار رباتیکی خود استفاده میکنند و زیاد از ++C/C در کار خود استفاده نکردهاند،…
#Simulink #C #Cpp #Algorithm #CodeGeneration #Python
پایتون در توسعه و پیادهسازی الگوریتم کنترلی = SHIT
بسیار افراد متخصص و صاحب موقعیت در آکادمیا دیدهام که نمیدانند Code Generation چیست و چگونه باید از قابلیتهای آن استفاده کنند — واقعا نصف عمرشان بر فنا هست حتی بیشتر! در رباتیک واقعی و هر جا که به سیستم امبدد منتهی شود، پایتون یک SHIT است — البته برای افرادی که با ++C/C پیمان قلبی دارند و میدانند چقدر قابل هستند!
و وقتی برای آن دسته از افراد مواردی از امکانات Code Generation ارائه میکنم، متوجه میشوم حسرت را در نگاهشان که وای از چه نعمتی غافل بودیم. 😎
—————
@roboticknowledge
پایتون در توسعه و پیادهسازی الگوریتم کنترلی = SHIT
بسیار افراد متخصص و صاحب موقعیت در آکادمیا دیدهام که نمیدانند Code Generation چیست و چگونه باید از قابلیتهای آن استفاده کنند — واقعا نصف عمرشان بر فنا هست حتی بیشتر! در رباتیک واقعی و هر جا که به سیستم امبدد منتهی شود، پایتون یک SHIT است — البته برای افرادی که با ++C/C پیمان قلبی دارند و میدانند چقدر قابل هستند!
و وقتی برای آن دسته از افراد مواردی از امکانات Code Generation ارائه میکنم، متوجه میشوم حسرت را در نگاهشان که وای از چه نعمتی غافل بودیم. 😎
—————
@roboticknowledge
👍2🤯1🍾1👀1
#موقعیت_شغلی
چنانچه:
✅ برنامهنویسی ++C/C را دوست دارید و در آن بکگراند دارید
✅ با مباحث مهندس کنترل و الگوریتمهای کنترل آشنا هستید
✅ به توسعه نرمافزار برای ADAS و رانندگی خودمختار علاقه دارید
✅ و به کار تیمی و اخلاق حرفهای متعهد هستید
ما در یک شرکت چینی فعال در صنعت توسعه نرمافزار خودران میتوانیم شما را به عنوان نیروی جدید خود داشته باشیم (پس از طی مراحل مرسوم). موقعیت کاری ریموت است اما رفتار سازمانی و حرفهای کاملا حاکم است (5 روز در هفته، 9 صبح تا 18).
در صورت علاقه رزومه خود را برای من ایمیل کنید:
[email protected]
با چنانچه سوالی داشتید مستقیم به من پیام بدهید:
@MJavadZallaghi
چنانچه:
✅ برنامهنویسی ++C/C را دوست دارید و در آن بکگراند دارید
✅ با مباحث مهندس کنترل و الگوریتمهای کنترل آشنا هستید
✅ به توسعه نرمافزار برای ADAS و رانندگی خودمختار علاقه دارید
✅ و به کار تیمی و اخلاق حرفهای متعهد هستید
ما در یک شرکت چینی فعال در صنعت توسعه نرمافزار خودران میتوانیم شما را به عنوان نیروی جدید خود داشته باشیم (پس از طی مراحل مرسوم). موقعیت کاری ریموت است اما رفتار سازمانی و حرفهای کاملا حاکم است (5 روز در هفته، 9 صبح تا 18).
در صورت علاقه رزومه خود را برای من ایمیل کنید:
[email protected]
با چنانچه سوالی داشتید مستقیم به من پیام بدهید:
@MJavadZallaghi
👍4
#AGV #Iran
در این مطلب محصول رباتیک یک شرکت ایرانی برای دستهبندی مرسولههای پستی ارائه شده است. خروجی آنها بسیار جذاب است. اگر این پست را میبینید، خسته نباشید! دیدن کار شما لذتبخش بود — که چنین سیستمی در چنین مرتبهای توسعه دادهاید (به تعداد رباتهای در حال کار و الگوریتم کنترل آنها توجه کنید).
—————
@roboticknowledge
در این مطلب محصول رباتیک یک شرکت ایرانی برای دستهبندی مرسولههای پستی ارائه شده است. خروجی آنها بسیار جذاب است. اگر این پست را میبینید، خسته نباشید! دیدن کار شما لذتبخش بود — که چنین سیستمی در چنین مرتبهای توسعه دادهاید (به تعداد رباتهای در حال کار و الگوریتم کنترل آنها توجه کنید).
—————
@roboticknowledge
Linkedin
alireza pirhaji on LinkedIn: رباتهای AGV و نقش آنها در جداسازی مرسولات پستی
این رباتها با قابلیت… | 11 comments
این رباتها با قابلیت… | 11 comments
رباتهای AGV و نقش آنها در جداسازی مرسولات پستی
این رباتها با قابلیت تعامل و مسیریابی بهینه به صورت گسسته و نیز ممیزی وزن مرسولات به جداسازی بهینه مرسولات از… | 11 comments on LinkedIn
این رباتها با قابلیت تعامل و مسیریابی بهینه به صورت گسسته و نیز ممیزی وزن مرسولات به جداسازی بهینه مرسولات از… | 11 comments on LinkedIn
👏2🏆2