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

دستان خود را با هاردور کثیف کنید. رباتیک در شبیه‌ساز یک چیز ساده است. در واقعیت اگر همه چیز در شبیه‌ساز خوب پیش رفته باشد، چالش‌های زیادی در sim to real وجود خواهد داشت. چالش‌های توسعه مکاترونیکی پلتفرم هم جای خود!

خود مکانیک و الکترونیک ربات داستان‌ها دارد. در ریسرچ الگوریتم در می‌آید، در مهندسی کار خود ربات بصورت Functional در واقعیت. کسی که رباتیک کار می‌کند هر دو را انجام می‌دهد. کسی که فقط بخشی از یک کار را انجام می‌دهد، کاری که می‌کند ارزش خاصی نخواهد داشت و اسم او نیز Roboticist نیست.

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

----------
@roboticknowledge
🫡9
#RL
#Isaac

برای task یادگیری تقویتی، Isaac Lab دو ساختار برای تعریف تسک آماده کرده است:

Manager-based RL
و
Direct RL

در ساختار Manager-based، مسأله بصورت ماژولار مدل شده است. به این صورت که شما یک کلاس برای Scene، یک کلاس برای Actions، یک کلاس برای Observation، یک کلاس برای Management محیط، یک کلاس برای Reward، و یک کلاس برای Terminations خواهید داشت.

فایده؟

تغییر هر کدام از این‌ها (که همگی مفاهیم پایه RL هستند) مستقل از دیگر چیزهای مسأله انجام می‌شود. بعبارتی شما می‌توانید خیلی راحت یک قسمت کار را عوض کنید بدون اینکه مجبور شوید بقیه جاها را هم دست بزنید. پس شما امکان Rapid Environment Modification دارید.

----------
@roboticknowledge
👨‍💻4
#منهای_رباتیک

در بلژیک یک راه جالب برای میلیونر شدن وجود دارد: پس از PhD خود یک محصول بر اساس PhD خود ایجاد کنید و برای آن کمپانی ثبت کنید. اینجا پول به حدی برای ایده زیاد است که به راحتی ۱۰۰ هزار یورو میتوانید برای یک سال اول دریافت کنید.

سپس آن را رشد دهید و کمی پخته که شد، با چند demo می‌توان آن را با قیمت چند ده میلیون یورو به فروش رساند.

این کار را چند نفر که جلوی چشمان خودم هستند انجام داده‌اند.

اما الزام آن چیست؟ داشتن Authority که با چند مقاله علمی خوب از PhD و پتنت بدست می‌آید. خلاصه که اگر‌چه در ایران با تحصیلات نمی‌توان میلیونر شد، اما در قسمت پولدار اروپا از این راه شدنی است و همچنان علم ارزش فراوانی دارد.

----------
@roboticknowledge
5
استادم امشب می‌گفت که چین و ایران بزرگ‌ترین صادر کنندگان مغز در جهان هستند؛ با این فرق که چین مغز‌هایش را برمی‌گرداند اما ایران چه؟

@BelObs
🤯7🫡2
#Isaac

استاندارد Isaac Sim و Nvidia برای توصیف ربات و محیط فرمتی به نام USD یا Universal Scene Description است. بر خلاف URDF که یک فایل متنی xml و قابل خواندن است، USD را نمی‌توان با دست ایجاد کرد و فایل آن نیز encrypted است و نمی‌توان آن را خارج از اکوسیستم Nvidia خواند.

کتابخانه‌ها و ابزارهایی وجود دارند که با آن‌ها می‌توان فایل USD را تولید کرد، از جمله یک کتابخانه پایتون برای این کار.

یک راه مهندسی هم این است که فایل‌های Mesh را در Isaac Sim باز کرد و با تعریف مفصل‌ها و متریال و فیزیک و غیره، آن را ذخیره کرد. با این روش بدون نیاز به اسکریپت نویسی می‌توانید USD های خودتان را ایجاد کنید. اگرچه دانستن پایه‌های یک USD مهم است و به شما درک بیشتری از کار می‌دهد.

اصلاح: در واقع USD را فشرده می‌کنند تا حجم آن کم شود، اما نسخه Human readable آن یعنی USDA را می‌توان با هر text editor ای باز و ویرایش کرد، اما حجم آن بسیار بزرگتر از فایل USD است.

----------
@roboticknowledge
👨‍💻4
#Perception

مدل YOLOv5 برای من یک مدل بسیار ارزشمند بوده است همیشه که برای Object detection همواره بحث Perception در کار رباتیک را برای من حل کرده است و ارتباط دلی با این مدل دارم. ❤️

اکنون در یک پروژه به Semantic Segmentation و مدل‌هایی که این کار را بکنند نیاز دارم. کمی جستجو کردم و مدل‌هایی مثل SegNet یا DeepLab یا Unet را پیدا کردم. اما متوجه شدم که این مدل‌ها FPS خوبی ندارند و نهایتاً با سرعت ۳۰ هرتز کار می‌کنند.

سری به وضعیت نسخه‌های جدید YOLO زدم که دیدم بله، در YOLOv11 نه فقط Object detection، بلکه Semantic Segmentation و Pose Estimation و چیزهای معروف دیگر هم ارائه شده است! بنچمارک‌ها را نیز که نگاه می‌کردم خیلی سرعت و عملکرد خوبی دارد.

اگرچه در همین YOLOv11 هم بحث سرعت و یا inference time برای کار Segmentation از کار Detection بیشتر است - به دلیل ذات مسأله - اما واقعا YOLO و حجم چیزهایی که برای آن در دسترس است با اختلاف آن را از چیزهای دیگر برای بحث Perception Engineering محبوب‌تر می‌کند - حداقل برای من.

----------
@roboticknowledge
5
Duckietown.com

در X پست آن‌ها را دیدم که توسط Open Robotic بازنشر داده شده بود. چند پلتفرم ساده برای آموزش یا کارهای رباتیکی ساده اما باحال دارند. شخصا وسوسه شدم یکی از پلتفرم‌های آن‌ها را درست کنم و کمی بازی کنم! :)

----------
@roboticknowledge
😎3
#RL

در جایی که لبه تکنولوژی و نوآوری ترکیب می‌شود، از RL و نخبه‌های این زمینه برای قدرت راه رفتن و یاد دادن آن به ربات در کلاس انسان به ربات‌های تسلا قرار است استفاده شود.

جالب است که همچنان عده‌ای RL را صرفا یک حل کننده بازی دو بعدی می‌دانند و اعتقاد دارند که ارزش ندارد. در مجموع نه RL و نه MPC یا هر چیزی در مهندسی و علم جای تعصب نیست. هنر در حل مسأله در یک چارچوب مشخص است. باید تشخیص داده شود کجا یک مسأله را می‌توان به چه روشی حل کرد و کجا نمی‌توان.

----------
@roboticknowledge
🤯5🏆2🐳1
Robotic Knowledge
#Perception مدل YOLOv5 برای من یک مدل بسیار ارزشمند بوده است همیشه که برای Object detection همواره بحث Perception در کار رباتیک را برای من حل کرده است و ارتباط دلی با این مدل دارم. ❤️ اکنون در یک پروژه به Semantic Segmentation و مدل‌هایی که این کار را بکنند…
#Perception

آمدم که با کمک کتابخانه Ultralytic و yolov11 کار segmentation را انجام دهم، به یک مشکل اساسی خوردم: Bounding Box based Segmentation

اساس Yolo (تا جایی که میدانم) استفاده از Bounding Box برای بیان Region of Interest یا RoI است. بنابراین دیتاست من برای این هدف سازگار نبود چونکه برای Semantic Segmentation شما به عنوان label یک تصویر دارید که صرفا یک mask است و نواحی برچسب خورده دارای مقدار مشخص پیکسلی هستند.

بنابراین به کتابخانه Segmentation Models PyTorch یا SMP که بر اساس PyTorch ایجاد شده است، مراجعه کردم. اینجا براحتی Data Set را خواندم و معماری مدل Unet را استفاده کردم. در این کتابخانه مدل‌های مهم برای کار Segmentation از جمله
UNet, Unet++, DeepLavV3, DeepLabV3+, FPN, PSPNet, Linknet, MAnet, PAN, UPerNet, and Segformer

در دسترس است.

چیزی که در در SMP برای من جذاب است، این است که شما می‌توانید معماری شبکه را کاملا عوض کنید و انواع Encoder از جمله ResNet یا MobileNet و ... استفاده کنید! به همین دلیل بر اساس trade off بین پیچیدگی مسأله و سنگینی مدل میتوان به حالت بهینه رسید.

من بر روی یک دیتاست مصنوعی از محیط جنگلی با 5000 تصویر با backbone مدلی resnet34 و انکودر ImageNet برای یک تسک باینری با دقت 99.5% مدل Unet را آموزش دارم. باید ببینم Inference time آن چگونه است و اگر برای Edge computer و الگوریتم کنترلی من مناسب نبود، آن را باید تغییر دهم و سبک سازی کنم، حتی به هزینه کمی دقت کمتر.

----------
@roboticknowledge
🫡4
Robotic Knowledge
#Perception آمدم که با کمک کتابخانه Ultralytic و yolov11 کار segmentation را انجام دهم، به یک مشکل اساسی خوردم: Bounding Box based Segmentation اساس Yolo (تا جایی که میدانم) استفاده از Bounding Box برای بیان Region of Interest یا RoI است. بنابراین دیتاست…
#Perception

یک نکته در استفاده از SMP این است که بر خلاف Yolo که ابعاد تصویر ورودی اهمیتی ندارد، اینجا برای Unet شما ابعاد بخشپذیر بر 32 باید داشته باشید. پس اگر تصویر شما 1280 در 720 است، باید عرض آن به 736 با کمک مکانیزم Padding افزایش یابد. این قید بر اساس معماری ابعادی encoder است.

----------
@roboticknowledge
👨‍💻1
#طراحی

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

دیدم سرعت کار کم است و به تعطیلات سال نو میلادی برخورد کردیم، خودم دست به کار شدم. اینجا با نرم‌افزار Inventor طراحی می‌کنیم (دانشگاه ما لایسنس محصولات Autodesk را دارد). انصافاً خیلی نرم‌افزار راحتی است و در حد Solid Works راحت و خوش دست است.

چک کردم موتور انتخاب شده اولیه را و دیدم بله، دانشجوی جوان خامی کرده و با آن توان امکان نصب Propeller نهایتا سه اینچی را داریم که صرفا امکان Hovering آن هم با Throttle زیاد (آمپرکشی و خالی شدن سریع باتری) وجود دارد و مانورپذیری وجود ندارد.

بنابراین رفتم و موتوری قوی‌تر که امکان Maneuver خوب با 70% Throttle می‌دهد را انتخاب کردم. موتوری که انتخاب کردم می‌تواند یک‌ Propeller با سایز تا ۵ اینچ را در طراحی من بچرخاند.

تغییر موتور یعنی نیاز به تغییر طراحی Frame و البته به دلیل افزایش ابعاد Propeller تغییر طراحی چند بخش دیگر.

طراحی مکانیکی فرآیندی Iterative است و تا به نقطه بهینه برسید، چالش دارید؛ اما وقتی چیزی را خلق کردید که کار بکند، 10X چیزهایی به شما برمی‌گردد.

ما چندین Fabrication Lab داریم که تعداد زیادی ابزار و ماشین مکانیکی از جمله Laser Cutter و 3D Printers وجود دارند تا همه چیز را بتوانیم بسازیم و امکان چندین مرحله نمونه‌سازی برای تثبیت طراحی وجود دارد.

----------
@roboticknowledge
🤯62🐳2
این ربات‌ها که قابلیت های حرکتی ترکیبی دارند را Hybrid Mobility Robots نام می‌دهند و طراحی‌های جالبی دارند.

در خصوص این چند پاها با قطعیت و آگاهی می‌گویم که با RL به آن‌ها یک Policy برای Navigation مشخص آموزش می‌دهند و اساسا کار Model based بسیار دردآور خواهد بود برای چنین سیستم‌های پیچیده‌ای.

-----------
@roboticknowledge
Forwarded from زانکو (Javad Amirian)
Media is too big
VIEW IN TELEGRAM
یکی از فرم‌های رباتیک که من واقعا ازش لذت می‌برم، این ربات‌های چرخدار-پادار هستند. هم سریع و بهینه مثل ماشین‌ها. و هم مثل چهارپاها انعطاف‌پذیرند و می‌تونن روی سطوح متفاوت حرکت کنن (روی پله، جاهای ناهموار...).

البته قبلا استارتاپ سوییسی AnyBotics یه نسخه از اینو معرفی کرده بود.
ولی دموی جدید ربات Unitree (شرکت رباتیک چینی رقیب Boston Dynamics) سطح جدیدی از توانایی ها رو به نمایش گذاشته. جالبه بدونیم این سطح از مانورپذیری با الگوریتم‌های سنتی رباتیک بدست نمیاد و این ربات با کمک روش‌های یادگیری تقویتی RL آموزش داده شده.

در نهایت اینکه Unitree ربات‌هاش رو با قیمتی بسیار پایین‌تر نسبت به رقبای آمریکایی و اروپایی تولید می‌کنه. باید ببینیم این رقابت تو سال آینده به کجا میرسه.

زانکو
3
موردی که ترکیب پرنده و پادار بود.
Forwarded from Robotic Knowledge
#حرکت_ترکیبی
ربات سگ پرنده mini pupper

خیلی از معرفی ربات LEONARDO نمی‌گذرد که شاهد ارائه نسخه پرنده ربات متن باز آموزشی چهارپای mini pupper خواهیم بود.

بدین ترتیب این پلتفرم چهارپا قابلیت Hybrid motion پیدا خواهد کرد. این تبدیل با اضافه کردن قاب کوادروتور به تنه ربات بدست می‌آید.

—————
@roboticknowledge
🤯1🍾1
Forwarded from Robotic Knowledge
تصویر: نسخه پرنده ربات متن باز آموزشی mini pupper با قابلیت Hybrid motion.
#RL #Navigation

مهندسی دردآور یک Reward Function برای تسک مشخص Navigation

شما یک ربات دارید که در شبیه‌ساز چند هزار محیط موازی برای آموزش آن ایجاد می‌کنید. نکته اساسی در اینکه RL را چگونه استفاده کنید نیست، زیرا در این شبیه‌سازها اساسا ساده‌ترین کار صدا زدن الگوریتم‌های State of the Art مانند PPO یا Actor Critic است.

چیزی که در چنین آموزش‌هایی دردآور است مهندسی Reward Function است. ممکن است چند ماه زمان ببرد تا بتوانید یک Reward Function طراحی بکنید تا بتواند مسأله مشخص شما را حل کند و ربات بتواند با آن Navigation یاد بگیرد.

حال شما اگر Terrain را تغییر دهید یا ربات را تغییر دهید، مجدد باید با یک Policy جدید بر اساس یک Reward Function جدید آموزش بدهید.

در بحث AGI برای فقط کاری مثل آموزش Navigation (یک AGI که بتواند انواع ربات در یک کلاس مشخص را را در انواع Terrain حرکت بدهد)، گپ اساسی همین مسأله است که چیزی وجود ندارد که Reward Function برای شما طراحی کند و این یک کار مهندسی و Human in the loop سخت و زمان بر است.

----------
@roboticknowledge
😁2
#ROS2 #Gazebo

برای انتقال داده از ROS2 به Gazebo و برعکس به یک پل به نام ros_ign_bridge نیاز است که در واقع خود یک ROS پکیج است.

وقتی شبیه‌سازی در Gazebo اجرا می‌شود، داده‌ها به خودی خود در برابر ROS دچار expose نمی‌شوند و شما باید تاپیک‌های مطلوب را پل کنید که با این پکیج ممکن می‌شود.

این یک مثال است که من چگونه در Launch فایل تاپیک سرعت موتور در ROS را به همان تاپیک در Ignition پل می‌کنم:

Node(
package='ros_ign_bridge',
executable='parameter_bridge',
arguments=['/model/X4/command/motor_speed/m0@std_msgs/msg/[email protected]'],
output='screen'
),

اینجا بطور مشخص داده تاپیک /model/X4/command/motor_speed/m0 که از نوع std_msgs/msg/Float32 است از ROS به Ign ارسال می‌شود و نوع نهایی آن نیز ignition.msgs.Float خواهد شد.
----------
@roboticknowledge
🍾1👨‍💻1