Robotic Knowledge
388 subscribers
242 photos
62 videos
2 files
172 links
دانش و برنامه‌نویسی برای رباتیک
Download Telegram
#ROS2 #ROS
یکی از سختی‌های کار در استفاده از نرم‌افزارهای متن‌باز compatible بودن آن‌ها با سیستم شماست.
برای مثال شما برای داشتن مزیت LTS یا Long Time Support سراغ ROS 2 Humble می‌روید، اما برای استفاده از الگوریتم Volumetric Mapper می‌بینید که با اینکه پکیج جدیدی است،‌ اما در ROS توسعه پیدا کرده است و براحتی نمی‌توانید از آن استفاده کنید.
به همین دلیل است که بسیاری از نرم‌افزارهای رباتیکی و اکوسیتم ROS همچنان بر روی ROS پایه و توزیع‌های قدیمی آن که روی اوبنتو 18 یا 20 قابل نصب هست، توسعه می‌یابد - متاسفانه. دلیل هم این است که زنجیره وار بر روی نسخه‌های قدیمی توسعه ادامه دارد و تا پایه‌ها منتقل نشوند، نمی‌توان براحتی روی توزیع‌های جدید چیزی توسعه داد.

به الگوریتم Volumetric Mapper اشاره شد که اینجا قابل یافتن است و برای مپینگ می‌تواند به شما نقشه آنلاین ‌Occupency Grid به همراه Euclidean Distance Transform بدهد:
https://github.com/JINXER000/GIE-mapping

—————
@roboticknowledge
👍3
Robotic Knowledge
#ROS2 #ROS یکی از سختی‌های کار در استفاده از نرم‌افزارهای متن‌باز compatible بودن آن‌ها با سیستم شماست. برای مثال شما برای داشتن مزیت LTS یا Long Time Support سراغ ROS 2 Humble می‌روید، اما برای استفاده از الگوریتم Volumetric Mapper می‌بینید که با اینکه پکیج…
#مفاهیم
در بحث نقشه‌های رباتیک، منظور از Euclidean Distance Transform یا EDT در واقع یک نقشه سه بعدی است که هر المان آن - به آن ‌Voxl گفته می‌شوند - عددی است بیانگر فاصله کمینه تا اولین شی در نقشه است. بنابراین با گرادیان روی EDT می‌توانید کارهایی مثل حرکت در جهت دور شدن از نزدیک‌ترین مانع انجام دهید.
—————
@roboticknowledge
👍2
#LearnEveryDay
#Nvidia

گویا Nvidia آموزش‌های خوبی دارد - تحت عنوان training یا course.
از برنامه‌نویسی با CUDA تا رباتیک با Isaac Sim.
چک می‌کردم تعدادی از مورد علاقه‌های خودم را، بین ۳۰ تا ۹۰ دلار هزینه داشتند. البته برخی نیز رایگان بودند.
----------
@roboticknowledge
👍5
#Computer #Jetson #Nvidia

چیز دیگری که امروز برق از سر من پراند، آشنایی با Jetson AGX Orin Developer Kit بود. عملکرد AI آن معادل TOPS 275 است! ۶۴ گیگ رم و ۱۲ هسته cpu. ابعاد آن حدود ۱۰ سانت در ۱۰ سانت است. این یعنی با ۲۵۰۰ دلار می‌توانید کارهای فوق سنگین پرسپشنی را روی ربات خود انجام دهید، با عملکردی فوق‌العاده.
----------
@roboticknowledge
👍72
🔠🔠🔠🔠🔠🔠🔠💡🔠🔠🔠🔠🔠🔠🔠🔠🔠 😄😄😄
Please open Telegram to view this post
VIEW IN TELEGRAM
🐳2👀21
#Docker
داکر در اینترنت بعضی‌ها از جمله خودم = بیچارگی!

با هیچ vpn و dns رایگان و غیر رایگانی نمی‌توان یک pull کرد! آخرش این است که به شما پیام rate limit می‌دهد! اگر شما این مشکل را قبلا داشته‌اید، چطوری حل کردین؟

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

در کل چیز خوبی هست (داکر!)، اما نه برای هر اینترنتی.
----------
@roboticknowledge
#مفاهیم
#Neural_Networks #NN #AI

ما شبکه‌های عصبی را با ساختار MLP می‌شناسیم، جایی که توابع فعالسازی ثابت اما وزن اتصالات یادگیری شونده است.

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

مزیت چیست؟ نخست اینکه یک شبکه KAN با تعداد نورون‌های خیلی کم می‌تواند دقت بهتری از یک شبکه MLP با تعداد زیادی نورون بدهد. دوم اینکه شبکه KAN می‌تواند فیزیک مسأله را یاد بگیرد - به لطف اینکه تابع غیرخطی فعال‌سازی چون spline یادگیری می‌شود - و مشخصا آنچه که یادگرفته قابل تفسیر است و مقدار Black Box بودن مسأله بسیار کم می‌شود.

مشکل شبکه‌های KAN این است که با GPU نمی‌تواند آموزش ببیند، اگرچه برای یادگیری فیزیک‌های نه چندان بزرگ با CPU های قوی بخوبی می‌توان بر روی KAN ها حساب باز کرد.

مقاله کامل در آی تریپل ای اسپکتروم قابل خواندن است.
https://spectrum.ieee.org/kan-neural-network

----------
@roboticknowledge
4🤯2🫡1
#مفاهیم #طراحی

ایشان آقای Brooks هستند، سازنده ربات (بیشتر ربات ساخته‌اند تا کار تحقیقاتی کرده باشند) و در جاهای معروفی چون irobot بوده‌اند.
سه قانون برای ربات‌ها دارند - ربات‌هایی که قرار است بتوانند در جهان واقعی کار کنند و نه فقط دموی آزمایشی باشند:

1. The visual appearance of a robot makes a promise about what it can do and how smart it is. It needs to deliver or slightly over deliver on that promise or it will not be accepted.

2. When robots and people coexist in the same spaces, the robots must not take away from people’s agency, particularly when the robots are failing, as inevitably they will at times.

3. Technologies for robots need 10+ years of steady improvement beyond lab demos of the target tasks to mature to low cost and to have their limitations characterized well enough that they can deliver 99.9 percent of the time. Every 10 more years gets another 9 in reliability.

در باره این قانون‌ها در بلاگ خود توضیح داده‌اند که جالب بود.

----------
@roboticknowledge
41
Robotic Knowledge
#مفاهیم #طراحی ایشان آقای Brooks هستند، سازنده ربات (بیشتر ربات ساخته‌اند تا کار تحقیقاتی کرده باشند) و در جاهای معروفی چون irobot بوده‌اند. سه قانون برای ربات‌ها دارند - ربات‌هایی که قرار است بتوانند در جهان واقعی کار کنند و نه فقط دموی آزمایشی باشند: 1.…
#طراحی

درباره ظاهر یک ربات، قانون اول، می‌گویند ظاهر باید بتواند به مشتری یا کسی که از ربات استفاده می‌کند درباره توانایی ربات اطلاعات دهد.
یک مثال دارند که ربات roomba از irobot است. ایشان می‌گویند طراحی گرد ربات می‌گوید که می‌تواند درجا بدون برخورد با چیزی دور بخورد هنگام پاکسازی‌. ارتفاع کم ربات می‌گوید که این امکان را دارد تا زیر کابینت و ... را پاک کند. و نهایتا دسته‌ای که روی آن است بیان می‌کند که صاحب آن راحت میتواند آن را در سطح دیگری قرار دهد برای پاکسازی. همچنین ظاهر ربات می‌گوید که نمی‌تواند دیوار یا شیشه را پاک کند و انتظار بیخود به مشتری نمی‌دهد!
----------
@roboticknowledge
41
#Linux
دوستی منابعی برای یکپارچه‌سازی دانش لینوکس برای من ارسال کردند تحت عنوان LPIC. کتاب‌های بسیار ارزشمند و جامعی برای محکم کردن دانش لینوکس هستند.
https://learning.lpi.org/en/

----------
@roboticknowledge
5🐳1
#RL #Isaac #IsaacGym

شبیه‌سازهای زیادی در عالم برای رباتیک وجود دارد (مثلا Drake)، اما اکثر آنها برای Reinforcement Learning مناسب (بهینه) نیستند، اما Isaac Gym بسیار مناسب است!

بطور سنتی یک شبیه‌ساز، فیزیک را با CPU حل میکند و فقط قسمت مدل یادگیری شونده با GPU در بهترین حالت آموزش می‌بیند. این ترکیب - یعنی CPU برای فیزیک و GPU برای آموزش مدل - یک ترکیب ناکارآمد است زیرا معماری ذاتی آنها تفاوت اساسی دارد و این یعنی افت در سرعت و نیاز به منابع سخت‌افزاری زیاد.

بر اساس این ناکارآمدی، تیم توسعه Isaac Gym در Nvidia آمد و فیزیک را نیز با کمک Physx که خودشان توسعه داده‌اند، با GPU حل کرد. بعبارتی در Isaac Gym هم فیزیک، هم گرافیک، و هم مدل یادگیری (همه چیز) در یک GPU پیاده می‌شود و همین نکته باعث سرعت بسیار زیاد و قابلیت داشتن Parallel Simulation می‌شود. در بنچمارک‌ها کاری را که حدود ۳۰۰۰۰ هسته CPU برای rl در یک شبیه‌ساز کلاسیک انجام می‌شود، در Isaac Gym فقط با یک GPU انجام میدهند!

آنچه که نوشتم بر اساس مقاله اصلی Isaac Gym می‌باشد. برای خبره شدن در این مباحث، خواندن عمیق مقاله‌ها و کدها واجب و ضروری است.
----------
@roboticknowledge
4
Robotic Knowledge
#RL #Isaac #IsaacGym شبیه‌سازهای زیادی در عالم برای رباتیک وجود دارد (مثلا Drake)، اما اکثر آنها برای Reinforcement Learning مناسب (بهینه) نیستند، اما Isaac Gym بسیار مناسب است! بطور سنتی یک شبیه‌ساز، فیزیک را با CPU حل میکند و فقط قسمت مدل یادگیری شونده…
#Isaac #IsaacSim #IsaacGym
دوستان Isaac Sim با Isaac Gym یکی نیستن و می‌نویسم که خودم هم قاطی نکنم. 😂

Isaac Sim: Omniverse based simulator for robotics.

Isaac Gym: High performance GPU-based robotic simulator for RL applications, a python module.

----------
@roboticknowledge
Please open Telegram to view this post
VIEW IN TELEGRAM
5👨‍💻22
#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
#تجربه
این سبزها نشانگر توسعه پایدار برای من هستند.
خاکستری یعنی چیزی مانع توسعه شده است. مشخص است که دو هفته پیش سرماخوردگی شدیدی داشته‌ام! 🙃
استاد من با کامیت‌های من آنچه را که دارم پیش میبرم می‌بیند و این مکانیزم زندگی کاری من است.
—————
@roboticknowledge
421
#تجریه

https://t.iss.one/htuniversity/245

دوست ما نکته صحیحی درباره لینکدین نوشته‌اند.

فارسی‌نویس‌ها در #لینکدین آنچنان مطالب کم ارزشی می‌نویسند که شخصا هر کسی که کوچکترین فعالیتی در آن فضا (بصورت فارسی و کم ارزش) داشته باشد را از شبکه خود حذف می‌کنم. حتی کسایی که لایک می‌کنند آن محتوای کم ارزش را، حذف می‌شوند از شبکه‌هایی که دنبال ارزش هستند.

در لینکدین، گیتهاب و ایکس باید جنتلمن باشید و فاخر اگر به دنبال موفقیت در آن (شبکه‌ و برندسازی) هستید. بنابراین اگر شبکه شما اینچنین نیست، ‌حتما آن‌را پاک‌سازی کنید و چیزی فاخر برای خود بسازید.
—————
@roboticknowledge
5🫡2
#ROS2 #Build #Conflict

اخیرا دچار یک conflict در سیستم بیلد خود برای ROS 2 humble شدم. این conflict ناشی از انتخاب پایتون Anaconda بجای پایتون سیستم توسط colcon ایجاد شده بود.

خود Open Robotics می‌گوید که conflict بین colcon و Anaconda وجود دارد و توصیه کرده هر دو با هم نباشند. توصیه غلطی است زیرا شاید شخصی به هر دو نیاز داشته باشد!

راه حل چیست؟
ابتدا باید ببینیم که خود conflict چه بوده است. Conflict این بود که executer انتخاب شده توسط colcon هنگام اجرای دستور colcon build، از Anaconda انتخاب می‌شود نه سیستم.
من آمدم و در محیط base برای Anaconda، پایتون ۱۰ و پکیج ament_pkg را نصب کردم. محیط base را فعال کردم، در آن ROS 2 را source کردم و نهایتا دستور
colcon build

بدون خطا اجرا شد.

راه‌های دیگری مثل دستکاری متغیرهای محیطی را تست کردم و جواب نداد. همچین colcon در رفرنس خود گفته است که می‌توان با آرگومان executer-- اجرا کننده را تعریف کرد، که باز هم کار نکرد! نهایتاً آنچه که colcon لازم دارد را در محیط base آناکندا نصب کردم و مسأله حل شد.
----------
@roboticknowledge
41
#طراحی #رباتیک #OOP
در برنامه‌نویسی برای رباتیک، یک برنامه‌نویس خوب دیتای پارامترها و هر آنچه را که جزئی از بخش طراحی الگوریتم نیست، در خارج از منبع اصلی در یک yaml یا json فایل تعریف می‌کند و فقط با پارس کردن فایل configuration، برنامه خود را اجرا می‌کند.

یک برنامه‌نویس بهتر ساختاری را پیاده می‌کند که کاربر برنامه (دیگران) بتوانند با ایجاد yaml فایل‌های استاندارد برای آن کار، کل نرم‌افزار را برای خود شخصی‌سازی کنند. در این صورت کد شما کد خوبی است و برای این هدف باید OOP را برای نرم‌افزار خود پیاده کنید.

باز یک برنامه‌نویس بهتر می‌آید و Logger کنسولی پیاده می‌کند تا استفاده کننده بداند خطا یا هشدار چیست و چطوری باید آن را رفع کند. همیشه قرار نیست خطا ببینید، همینکه در کنسول به کاربر Information بدهید درباره current stage خود بسیار مهم است.

—————
@roboticknowledge
174