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

اگر در training خود محیطی داشته باشید که رندرینگ آن برای سنسور ساده‌تر باشد، مشخصا FPS بیشتری خواهید گرفت. بصورت تجربی متوجه شدم که چنانچه از یک Primitive shape مانند Sphere به عنوان مانع استفاده کنید، FPS Drop بیشتری خواهید داشت نسبت به یک Cube.

دلیل؟

مشخصا رندر شدن یک Sphere از Cube برای سنسور سخت‌تر است چون تعداد سطح مش بیشتری دارد! پس یک راه برای افزایش سرعت آموزش استفاده از Cube بجای Sphere در بحث ایجاد محیط است.

این چیزها فقط و فقط با تجربه و درگیری زیاد با Isaac یادگیری و تجربه می‌شود. با این حال پشت فیزیک این ماجرا بحث‌های ray casting برای مدل‌سازی سنسورها برقرار است.

----------
@roboticknowledge
6🏆2
#پادکست

خیلی دوست دارم یک پادکست خیلی ساده داشته باشم که درباره رباتیک (و تکنولوژی‌های مربوط به آن) صحبت کنم. چیزی که بصورت فنی سخت نباشد و ساده باشد. معتقدم زیبایی و جاذبه در سادگی است.
دوست دارم بصورت هفتگی باشد و زمان آن نهایتاً ۱۰ دقیقه باشد.
نظر شما چیست؟ اساسا برای شما باحال است؟ چه چیزی صحبت بشود برای شما مورد علاقه خواهد بود؟

----------
@roboticknowledge
🏆21
#پادکست
خب این قرار هست پوستر ما باشه. بعدا کیفیت‌ها ممکنه بهتر بشه. :)

این سری از صحبت‌ها فارسی خواهد بود و در YouTube آپلود می‌کنیم:
https://www.youtube.com/@roboticknowledge

قسمت اول حالت مقدمه خواهد داشت و درباره این صحبت می‌کنم که چه چیز‌هایی رو توی این پادکست دنبال می‌کنیم.
🏆11🍾3🐳2
#Robotics

در مورد رباتیک اگر قبلا ماهی یک کار با impact چه در research و چه در صنعت می‌دیدم، الان هر هفته میانیگن دو یا سه کار عالی می‌بینم که مرزها را push می‌کنند. شتاب در کارهای خوب واقعا بالاست. در این شرایط دانستن اتفاقات خیلی تفاوت ایجاد می‌کند. فقط باید مراقب بود که در موج‌ها گم نشد و با جریان حرکت کرد. چشم‌ها باید به چند پیشرو باشد و در نقطه‌ای این امکان وجود دارد که بصورت نقطه‌ای به آن‌ها اضافه شد.

----------
@roboticknowledge
6🤯1
#Community

عاشق reddit شدم. یک سوال درباره یک کامپیوتر داشتم، در reddit پرسیدم و کمتر از دو ساعت چند جواب خوب گرفتم.

تاپیک‌های دیگه همون چنل رو چک کردم و دیدم چه چیزهای خوبی پرسیده و پاسخ داده شده و چند چیز جالب پیدا کردم. جالب اینجا بود که جواب‌هایی که آدم می‌بینه و می‌گیره معمولا این چت‌بات‌ها به شما در چند پرامپت اول نمیدن.

به دوستام به شوخی گفتم از این به بعد باید من رو با بیل از کف reddit جمع کنن! 😂

----------
@roboticknowledge
😁6
سال نو پارسی مبارک باشه ❤️
آرزو می‌کنم شاد و سلامت باشید توی این سال جدید 🌹
🍾94
#Jetson

اگر روزی از یک Carrier برد غیر رسمی Nvidia برای یک ماژول Jetson مانند Orin NX استفاده کردید بدانید که دستور

apt upgrade

بسیار خطرناک است و پکیج‌های لایه کرنل لینوکس را دچار ناسازگاری می‌کند و مجبور خواهید شد که مجدد Jetpack را Flash کنید تا کامپیوتر به درستی کار کند.

استفاده از Carrier board غیر رسمی هم بسیار رایج است برای سیستم‌های مشخص و احتمال چنین رخدادی چنانچه درگیر این سیستم‌ها شدید کم نیست.

----------
@roboticknowledge
👨‍💻3
#ROS

داستان ROS 1 هم از نظر توسعه رسمی تا انتهای May به پایان خواهد رسید اگرچه حداقل تا چند سال دیگر توزیع Noetic همچنان با قدرت محبوب‌ترین توزیع خواهند ماند.

عمده Autonomy Stack های فعلی برای Noetic هستند و فرآیند Migration طولانی. بنابراین همچنان ROS 1 محبوب خواهد ماند.

----------
@roboticknowledge
1🤯1
#Hardware #ROS #Design #Jetson

در یک ربات مدرن به به یک ترکیب کارا از سنسورها و کامپیوتر و سخت‌افزار کامل رسیدن کار پیچیده‌ای است. طراحی در رباتیک دانش زیادی می‌خواهد که در این مطلب کمی توضیح می‌دهم.

برای مثال شما نیاز به یک Stereo Camera دارید. گزینه‌ها RealSense، OAK-D، ZED و کلی چیز دیگر مانند Astra و ... هستند. همه این‌ سنسورها دارای رنجی از ویژگی‌های مشابه در نسخه‌های مختلف هستند. شما چجوری باید انتخاب کنید؟

باید چک بشود که سنسور دارای پشتیبانی و نرم‌افزار ROS است. آیا فقط نرم‌افزار ROS 1 دارد؟ آیا نرم‌افزار ROS 2 هم دارد؟ آیا نرم‌افزار با Autonomy Stack شما conflict ندارد؟ آیا افراد چنانچه open issue داشته‌اند، برنامه‌نویس‌های آن شرکت یا community آن مسأله را حل کرده‌اند؟

این‌ها فقط بخشی کوچکی از سوالات نرم‌افزاری تنها برای یک سنسور است. برای همه سنسورها این چک‌ها باید انجام شود، سازگاری نرم‌افزاری و سخت‌افزاری با autonomy stack تایید شود، سنسور بصورت مکانیکی و الکتریکی قابل یکپارچه سازی با ربات باشد (سازگاری الکتریکی با Onboard computer و power unit) و خواسته اندازه‌گیری و observation شما از محیط را بتواند محقق کند تا autonomy stack کار بکند.

این طراحی تنها از دست یک فرد که رباتیک مدرن را می‌شناسد، بر‌می‌آید. کامپیوترها، سنسورها، نرم افزارها و الگوریتم‌ها و حتی سخت‌افزار مکانیکی در رباتیک با نرخ بالا در مرتبه سال تغییر می‌کنند و طراح رباتیکی مدرن این چیز‌ها را می‌داند و آگاه هست.

اگر غیر از این بود که رباتیک شاخه آسانی بود‌. بر خلاف بسیاری از فیلدها که افراد فقط با کامپیوتر و سطح ساده‌‌ای از coding درگیر هستند، رباتیک درگیری زیادی با latest art در سخت‌افزار الکترونیکی و مکانیکی دارد‌‌. این‌ها در کنار الگوریتم‌های کنترلی و طرح‌ریزی که همگی نیازمند ریاضی قوی هستند، الگوریتم‌های ادراکی که امروز با کمک هوش مصنوعی قوی شده‌اند، شبکه‌های عصبی برای کنترل ربات‌های پیشرفته با کمک RL و چیزهای بسیار دیگر در مدل‌سازی و شبیه‌سازی رباتیک را پیچیده می‌کند. این‌ فیلد جای استفاده از تکنولوژی‌های روز برای حل مسائل سخت است و ویترین زیبای آن بدون تلاش و سخت‌کوشی در این موارد که اشاره شد، ایجاد نشده است.

----------
@roboticknowledge
🏆8🤯1😎1
#Hardware

عادت دارم مراحل کار با سخت‌افزار و نرم‌افزار یک سیستم رباتیک را مستند کنم تا خودم و افراد تیم در آینده کار تکراری انجام ندهیم.

قبلا سنسور RealSense D455 را روی یک دسکتاپ و Ubuntu 20 برای تست الگوریتم راه‌اندازی کرده بودم. درایور آن و لانچ‌ فایل‌ها و مراحل نصب و اجرا را مستند کرده بودم تا امروز که یک ماه قبل پیش‌بینی کرده بودم بر روی Jetson Orin NX سریع همان مراحل را اجرا کنم. میان راه دیدم مشکل دارم.

بله، کامپیوتر دسکتاپ معماری پردازنده AMD داشت و Jetson معماری ARM دارد. هر چه بافته بودم پنبه شد. درگیر طی کردن همان مراحل برای ARM ها شدم که شب شد و ذهن آشفته و رها کردم برای فردا، از ریخت خطاها مشخص بود دقت لازم است که دیگر حوصله آن را نداشتم.

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

----------
@roboticknowledge
3🏆1
Please open Telegram to view this post
VIEW IN TELEGRAM
#ROS #RL #NN

پیاده‌سازی (deployment) یک شبکه عصبی در یک ROS Node با ++C

من از کتابخانه PyTorch برای آموزش مدل‌های عصبی که در Autonomy Stack ربات‌هایم نقشی دارند استفاده می‌کنم. مدل را می‌توان بصورت یک torch script با پسوند pt. ذخیره کرد. سپس این مدل را می‌توان با کتابخانه libtorch که یک کتابخانه ++C برای torch است را در محیط مبتنی بر ++C/C خواند و اجرا کرد.

کتابخانه libtorch می‌تواند بر روی CUDA بصورت accelerated مدل‌ها را اجرا کند. برای اینکه در یک ROS Node از جنس ++C این کار را بکنید، فقط لازم است تا CMakeLists آن ROS Package را به گونه‌ای تغییر دهید تا از محل کتابخانه libtorch و cuda_toolkit شما آگاه باشد و در سورس ROS Node از جنس ++C هم torch/torch.h را include کنید تا به توابع آن دسترسی داشته باشید.

به این ترتیب می‌توان مدل‌های PyTorch را در شرایط deployment و در اکوسیستم ROS با زبان ++C استفاده کرد. انجام Unit test را فراموش نکنید تا مطمئن شوید مدل به درستی کار می‌کند.

راهنمای خوب:
https://docs.pytorch.org/tutorials/advanced/cpp_export.html

----------
@roboticknowledge
🏆5🫡1
#Meme
وقتی که بهتر است ربات نداند چه کاربری دارد! 😂

----------
@roboticknowledge
😁8👨‍💻11
#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
#Planning

کمی در حال مطالعه درباره ماژول‌های safety در ربات‌های خودران بودم و مفاهیم جالبی را متوجه شدم. اساس مباحث safery و سطح آن خروجی یک ماژول است که Collision Check and Prediction نام دارد. گارانتی ایمنی (در سطوح مختلف) در برابر تصادف بر اساس عملکرد و طراحی این ماژول تعیین می‌شود. با این که تنها یک ماژول در Autonomy Stack یک ربات مدرن است، اما دنیایی دارد و ریاضیات آن نیز از ساده تا پیچیده را در بر می‌گیرد. از بررسی‌های ساده هندسی تا PDE‌ها و آمار و احتمال.

شاید برخی مفاهیم رایج در ماژول Collision Check and Prediction را بعدا پست کردم.
—————
@roboticknowledge
31
Robotic Knowledge
#Planning کمی در حال مطالعه درباره ماژول‌های safety در ربات‌های خودران بودم و مفاهیم جالبی را متوجه شدم. اساس مباحث safery و سطح آن خروجی یک ماژول است که Collision Check and Prediction نام دارد. گارانتی ایمنی (در سطوح مختلف) در برابر تصادف بر اساس عملکرد…
#Planning

این بحث collision checking الگوریتم‌های فراوانی دارد که عمده آن‌ها برای کارهای گرافیکی ایجاد شده‌اند. موتورهای گرافیکی در رندر کردن بازی‌ها و انیمیشن‌ها رفتار اجسام را با در نظر گرفتن برخورد یا عدم برخورد آن‌ها پس از collision checking مدل می‌کنند. در یک صحنه بازی یا انیمیشن هزاران قطعه صلب و الاستیک وجود دارند که در هر فریم باید وضعیت حرکت و برخورد آن‌ها حل شود. در واقع صنعت بازی‌سازی و گرافیک بر این پاشنه می‌چرخد. سرریز این کار به ایجاد safety همراه با ضمانت برای جلوگیری از تصادف در ربات‌های خودران رسیده است!

—————
@roboticknowledge
2
#Meme

حقیقت در این میم موج می‌زند.

@roboticknowledge
🫡33