#منهای_رباتیک
در بلژیک یک راه جالب برای میلیونر شدن وجود دارد: پس از PhD خود یک محصول بر اساس PhD خود ایجاد کنید و برای آن کمپانی ثبت کنید. اینجا پول به حدی برای ایده زیاد است که به راحتی ۱۰۰ هزار یورو میتوانید برای یک سال اول دریافت کنید.
سپس آن را رشد دهید و کمی پخته که شد، با چند demo میتوان آن را با قیمت چند ده میلیون یورو به فروش رساند.
این کار را چند نفر که جلوی چشمان خودم هستند انجام دادهاند.
اما الزام آن چیست؟ داشتن Authority که با چند مقاله علمی خوب از PhD و پتنت بدست میآید. خلاصه که اگرچه در ایران با تحصیلات نمیتوان میلیونر شد، اما در قسمت پولدار اروپا از این راه شدنی است و همچنان علم ارزش فراوانی دارد.
----------
@roboticknowledge
در بلژیک یک راه جالب برای میلیونر شدن وجود دارد: پس از PhD خود یک محصول بر اساس PhD خود ایجاد کنید و برای آن کمپانی ثبت کنید. اینجا پول به حدی برای ایده زیاد است که به راحتی ۱۰۰ هزار یورو میتوانید برای یک سال اول دریافت کنید.
سپس آن را رشد دهید و کمی پخته که شد، با چند demo میتوان آن را با قیمت چند ده میلیون یورو به فروش رساند.
این کار را چند نفر که جلوی چشمان خودم هستند انجام دادهاند.
اما الزام آن چیست؟ داشتن Authority که با چند مقاله علمی خوب از PhD و پتنت بدست میآید. خلاصه که اگرچه در ایران با تحصیلات نمیتوان میلیونر شد، اما در قسمت پولدار اروپا از این راه شدنی است و همچنان علم ارزش فراوانی دارد.
----------
@roboticknowledge
⚡5
Forwarded from مشاهدات من در بلژیک
استادم امشب میگفت که چین و ایران بزرگترین صادر کنندگان مغز در جهان هستند؛ با این فرق که چین مغزهایش را برمیگرداند اما ایران چه؟
@BelObs
@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
استاندارد 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
مدل 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
در X پست آنها را دیدم که توسط Open Robotic بازنشر داده شده بود. چند پلتفرم ساده برای آموزش یا کارهای رباتیکی ساده اما باحال دارند. شخصا وسوسه شدم یکی از پلتفرمهای آنها را درست کنم و کمی بازی کنم! :)
----------
@roboticknowledge
😎3
#RL
در جایی که لبه تکنولوژی و نوآوری ترکیب میشود، از RL و نخبههای این زمینه برای قدرت راه رفتن و یاد دادن آن به ربات در کلاس انسان به رباتهای تسلا قرار است استفاده شود.
جالب است که همچنان عدهای RL را صرفا یک حل کننده بازی دو بعدی میدانند و اعتقاد دارند که ارزش ندارد. در مجموع نه RL و نه MPC یا هر چیزی در مهندسی و علم جای تعصب نیست. هنر در حل مسأله در یک چارچوب مشخص است. باید تشخیص داده شود کجا یک مسأله را میتوان به چه روشی حل کرد و کجا نمیتوان.
----------
@roboticknowledge
در جایی که لبه تکنولوژی و نوآوری ترکیب میشود، از 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 از جمله
در دسترس است.
چیزی که در در SMP برای من جذاب است، این است که شما میتوانید معماری شبکه را کاملا عوض کنید و انواع Encoder از جمله ResNet یا MobileNet و ... استفاده کنید! به همین دلیل بر اساس trade off بین پیچیدگی مسأله و سنگینی مدل میتوان به حالت بهینه رسید.
من بر روی یک دیتاست مصنوعی از محیط جنگلی با 5000 تصویر با backbone مدلی resnet34 و انکودر ImageNet برای یک تسک باینری با دقت 99.5% مدل Unet را آموزش دارم. باید ببینم Inference time آن چگونه است و اگر برای Edge computer و الگوریتم کنترلی من مناسب نبود، آن را باید تغییر دهم و سبک سازی کنم، حتی به هزینه کمی دقت کمتر.
----------
@roboticknowledge
آمدم که با کمک کتابخانه 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
یک نکته در استفاده از 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
در حال طراحی یک ربات پرنده خاص هستیم و چند دانشجوی ارشد دارم که طراحی مکانیکی را در نرمافزار پیش میبرند، بر اساس چیزهایی که از آنها میخواهم.
دیدم سرعت کار کم است و به تعطیلات سال نو میلادی برخورد کردیم، خودم دست به کار شدم. اینجا با نرمافزار Inventor طراحی میکنیم (دانشگاه ما لایسنس محصولات Autodesk را دارد). انصافاً خیلی نرمافزار راحتی است و در حد Solid Works راحت و خوش دست است.
چک کردم موتور انتخاب شده اولیه را و دیدم بله، دانشجوی جوان خامی کرده و با آن توان امکان نصب Propeller نهایتا سه اینچی را داریم که صرفا امکان Hovering آن هم با Throttle زیاد (آمپرکشی و خالی شدن سریع باتری) وجود دارد و مانورپذیری وجود ندارد.
بنابراین رفتم و موتوری قویتر که امکان Maneuver خوب با 70% Throttle میدهد را انتخاب کردم. موتوری که انتخاب کردم میتواند یک Propeller با سایز تا ۵ اینچ را در طراحی من بچرخاند.
تغییر موتور یعنی نیاز به تغییر طراحی Frame و البته به دلیل افزایش ابعاد Propeller تغییر طراحی چند بخش دیگر.
طراحی مکانیکی فرآیندی Iterative است و تا به نقطه بهینه برسید، چالش دارید؛ اما وقتی چیزی را خلق کردید که کار بکند، 10X چیزهایی به شما برمیگردد.
ما چندین Fabrication Lab داریم که تعداد زیادی ابزار و ماشین مکانیکی از جمله Laser Cutter و 3D Printers وجود دارند تا همه چیز را بتوانیم بسازیم و امکان چندین مرحله نمونهسازی برای تثبیت طراحی وجود دارد.
----------
@roboticknowledge
🤯6⚡2🐳2
این رباتها که قابلیت های حرکتی ترکیبی دارند را Hybrid Mobility Robots نام میدهند و طراحیهای جالبی دارند.
در خصوص این چند پاها با قطعیت و آگاهی میگویم که با RL به آنها یک Policy برای Navigation مشخص آموزش میدهند و اساسا کار Model based بسیار دردآور خواهد بود برای چنین سیستمهای پیچیدهای.
-----------
@roboticknowledge
در خصوص این چند پاها با قطعیت و آگاهی میگویم که با RL به آنها یک Policy برای Navigation مشخص آموزش میدهند و اساسا کار Model based بسیار دردآور خواهد بود برای چنین سیستمهای پیچیدهای.
-----------
@roboticknowledge
Forwarded from زانکو (Javad Amirian)
Media is too big
VIEW IN TELEGRAM
یکی از فرمهای رباتیک که من واقعا ازش لذت میبرم، این رباتهای چرخدار-پادار هستند. هم سریع و بهینه مثل ماشینها. و هم مثل چهارپاها انعطافپذیرند و میتونن روی سطوح متفاوت حرکت کنن (روی پله، جاهای ناهموار...).
البته قبلا استارتاپ سوییسی AnyBotics یه نسخه از اینو معرفی کرده بود.
ولی دموی جدید ربات Unitree (شرکت رباتیک چینی رقیب Boston Dynamics) سطح جدیدی از توانایی ها رو به نمایش گذاشته. جالبه بدونیم این سطح از مانورپذیری با الگوریتمهای سنتی رباتیک بدست نمیاد و این ربات با کمک روشهای یادگیری تقویتی RL آموزش داده شده.
در نهایت اینکه Unitree رباتهاش رو با قیمتی بسیار پایینتر نسبت به رقبای آمریکایی و اروپایی تولید میکنه. باید ببینیم این رقابت تو سال آینده به کجا میرسه.
زانکو
البته قبلا استارتاپ سوییسی AnyBotics یه نسخه از اینو معرفی کرده بود.
ولی دموی جدید ربات Unitree (شرکت رباتیک چینی رقیب Boston Dynamics) سطح جدیدی از توانایی ها رو به نمایش گذاشته. جالبه بدونیم این سطح از مانورپذیری با الگوریتمهای سنتی رباتیک بدست نمیاد و این ربات با کمک روشهای یادگیری تقویتی RL آموزش داده شده.
در نهایت اینکه Unitree رباتهاش رو با قیمتی بسیار پایینتر نسبت به رقبای آمریکایی و اروپایی تولید میکنه. باید ببینیم این رقابت تو سال آینده به کجا میرسه.
زانکو
⚡3
Forwarded from Robotic Knowledge
#حرکت_ترکیبی
ربات سگ پرنده mini pupper
خیلی از معرفی ربات LEONARDO نمیگذرد که شاهد ارائه نسخه پرنده ربات متن باز آموزشی چهارپای mini pupper خواهیم بود.
بدین ترتیب این پلتفرم چهارپا قابلیت Hybrid motion پیدا خواهد کرد. این تبدیل با اضافه کردن قاب کوادروتور به تنه ربات بدست میآید.
—————
@roboticknowledge
ربات سگ پرنده 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
مهندسی دردآور یک 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 پل میکنم:
اینجا بطور مشخص داده تاپیک /model/X4/command/motor_speed/m0 که از نوع std_msgs/msg/Float32 است از ROS به Ign ارسال میشود و نوع نهایی آن نیز ignition.msgs.Float خواهد شد.
----------
@roboticknowledge
برای انتقال داده از 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
#Python
اگر قصد داشتید در پایتون از کیبورد یا ماوس داده بخوانید، از کتابخانه pynput استفاده کنید. این کتابخانه به شما یک Thread برای مانیتور کردن کیبورد یا ماوس میدهد.
در موازی با کمک ماژول threading و انجام multi threading میتوانید برنامه خود را در یک Thread دیگر اجرا کنید و با یک متغیر global خروجی کیبورد را در ترد برنامه اصلی استفاده کنید.
برای Data collection در یک شبیهسازی لازم بود که یک ربات را با کیبورد حرکت دهم که یک Thread برای شبیهسازی ایجاد کردم و یک Thread هم برای مانیتور کردن کیبورد و شبیهساز سرعت لحظهای ربات را بر اساس متغیر جهانی سرعت که توسط ترد مانیتورینگ کیبورد بروز میشود را برای کنترلکننده سرعت در نظر میگیرد.
بدین ترتیب شما Parallel Processing انجام میدهید و حلقه شبیهسازی شما مستقل از حلقه callback کیبورد کارش را انجام میدهد، بصورت موازی.
----------
@roboticknowledge
اگر قصد داشتید در پایتون از کیبورد یا ماوس داده بخوانید، از کتابخانه pynput استفاده کنید. این کتابخانه به شما یک Thread برای مانیتور کردن کیبورد یا ماوس میدهد.
در موازی با کمک ماژول threading و انجام multi threading میتوانید برنامه خود را در یک Thread دیگر اجرا کنید و با یک متغیر global خروجی کیبورد را در ترد برنامه اصلی استفاده کنید.
برای Data collection در یک شبیهسازی لازم بود که یک ربات را با کیبورد حرکت دهم که یک Thread برای شبیهسازی ایجاد کردم و یک Thread هم برای مانیتور کردن کیبورد و شبیهساز سرعت لحظهای ربات را بر اساس متغیر جهانی سرعت که توسط ترد مانیتورینگ کیبورد بروز میشود را برای کنترلکننده سرعت در نظر میگیرد.
بدین ترتیب شما Parallel Processing انجام میدهید و حلقه شبیهسازی شما مستقل از حلقه callback کیبورد کارش را انجام میدهد، بصورت موازی.
----------
@roboticknowledge
⚡4
Robotic Knowledge
#Python اگر قصد داشتید در پایتون از کیبورد یا ماوس داده بخوانید، از کتابخانه pynput استفاده کنید. این کتابخانه به شما یک Thread برای مانیتور کردن کیبورد یا ماوس میدهد. در موازی با کمک ماژول threading و انجام multi threading میتوانید برنامه خود را در یک…
Linkedin
Mohammad Javad Zallaghi on LinkedIn: #robotics #isaacgym #multithreading
For My Robot Simulation in Isaac Gym: Real-Time Keyboard-based Control Parallel with the Simulation Loop
If you want to read data from a keyboard or mouse in…
If you want to read data from a keyboard or mouse in…
🏆2