#ROS2
کدی به شما داده میشود، با ابعادی بزرگ.
این کد در واقع یک استک کنترلی رباتیک است که بر اساس استک دیگری چند سال پیش (۳ سال) توسعه یافته است. حال شما وارد میشوید که از آن استفاده کنید، اما استک پایه در این چند سال مداوم آپدیت شده است (آپدیت سنگین).
اولین چیزی که لازم دارید تا کد قدیمی را با پایه جدید سازگار کنید، طبیعتاً دانش آن دو سیستم است. دومین چیزی که لازم دارید، اعصاب پولادین است. چرا؟
خطاها میتوانند در compile time رخ بدهند یا در run time. شما هنگام compile time میتوانید همیشه دیباگ کنید، زیرا کامپایلر بنده خدا به شما سر نخ میدهد. اما در run time شما همیشه امکان traceback ندارید. در آن نقطه شرط ادامه دادن وجود اعصاب پولادین است! ریزبینی هم بسیار مهم است که چطور خطاها را از بین ببرید.
در مجموع #رباتیک یک ویترین خوشگل دارد که همه میبینند و به عشق آن ویترین رویای بزرگ شدن در آن را دارند، اما در حقیقت پشت ویترین چیزهایی وجود دارد پیچیده، که کار هر کسی نیست رسیدن به یک نقطه خوب.
----------
@roboticknowledge
کدی به شما داده میشود، با ابعادی بزرگ.
این کد در واقع یک استک کنترلی رباتیک است که بر اساس استک دیگری چند سال پیش (۳ سال) توسعه یافته است. حال شما وارد میشوید که از آن استفاده کنید، اما استک پایه در این چند سال مداوم آپدیت شده است (آپدیت سنگین).
اولین چیزی که لازم دارید تا کد قدیمی را با پایه جدید سازگار کنید، طبیعتاً دانش آن دو سیستم است. دومین چیزی که لازم دارید، اعصاب پولادین است. چرا؟
خطاها میتوانند در compile time رخ بدهند یا در run time. شما هنگام compile time میتوانید همیشه دیباگ کنید، زیرا کامپایلر بنده خدا به شما سر نخ میدهد. اما در run time شما همیشه امکان traceback ندارید. در آن نقطه شرط ادامه دادن وجود اعصاب پولادین است! ریزبینی هم بسیار مهم است که چطور خطاها را از بین ببرید.
در مجموع #رباتیک یک ویترین خوشگل دارد که همه میبینند و به عشق آن ویترین رویای بزرگ شدن در آن را دارند، اما در حقیقت پشت ویترین چیزهایی وجود دارد پیچیده، که کار هر کسی نیست رسیدن به یک نقطه خوب.
----------
@roboticknowledge
This media is not supported in your browser
VIEW IN TELEGRAM
این ربات گرامی در حال جارو کردن طبقه ما در دانشکده بود که رفتم و یکم اذیتش کردم. :)
----------
@roboticknowledge
----------
@roboticknowledge
😁7 3😎2
چهار Ubuntu برای چهار هدف مختلف! یک ۲۲، سه ۲۰.
وقتی که چیزهای مختلفی نیازی داری، اما compatible نیستند، ناچار به این کار هستید. :)
--------
@roboticknowledge
وقتی که چیزهای مختلفی نیازی داری، اما compatible نیستند، ناچار به این کار هستید. :)
--------
@roboticknowledge
😁3👨💻1
#Isaac #ROS2
از طرفی Omni Graph با نسخه ۴.۱ و بالاتر ویژگیهای جدید را دارد! طبیعتاً Isaac ROS بسیار با ارزشتر است، پس ورژن را بر میگردانم. اما meme «اسیر شدیم» برازنده شرایط است!
----------
@roboticknowledge
Isaac Sim 4.1 and Isaac Sim 4.2 are not compatible with any version of Isaac ROS.
از طرفی Omni Graph با نسخه ۴.۱ و بالاتر ویژگیهای جدید را دارد! طبیعتاً Isaac ROS بسیار با ارزشتر است، پس ورژن را بر میگردانم. اما meme «اسیر شدیم» برازنده شرایط است!
----------
@roboticknowledge
😁5
#Isaac #IssacSim
عمده آموزشهای Isaac Sim را که اکنون طی کردهام و در میانههای Learning Curve آن هستم، نظرم را درباره این شبیهساز مینویسم.
✅ با فاصله بهترین گرافیک را ارائه میکند - به عبارتی Photorealistic ترین شبیهساز رباتیکی جهان است و چیزهای دیگر در برابر آن جک هستند.
✅ با ROS 2 با کمک Bridge ارتباط میگیرد. در نسخه 4.2 ارتباط با نسخههای قدیمی ROS ممکن نیست که بدیهی است.
✅ تعدادی از الگوریتمهای معروف رباتیکی در پکیج Isaac ROS پیاده شدهاند و در شبیهساز قابل استفاده هستند.
✅ با مفاهیم Standalone Scripting به شما اجازه میدهد براحتی کل شبیهسازی را با تمام core API ها کنترل و customize کنید.
✅ چند صد اکستنشن برای Isaac Sim Platform توسعه یافته که کار شما را آسان کند؛ یک مثال Isaac Lab است که برای RL است.
✅ شما میتوانید اکستنشن خود را برای کار خود توسعه دهید و اگر چیز خوبی شد، برای community بصورت open source منتشر کنید.
✅ امکان deploy بصورت SITL با این شبیهساز برقرار است، به شرط اینکه ربات هاردور استاندارد داشته باشد (مشخصا از خاندان Jetson).
موارد دیگر را بعدا مکتوب میکنم. اگر درباره Isaac Sim سوال داشتید، میتوانید بپرسید.
----------
@roboticknowledge
عمده آموزشهای Isaac Sim را که اکنون طی کردهام و در میانههای Learning Curve آن هستم، نظرم را درباره این شبیهساز مینویسم.
✅ با فاصله بهترین گرافیک را ارائه میکند - به عبارتی Photorealistic ترین شبیهساز رباتیکی جهان است و چیزهای دیگر در برابر آن جک هستند.
✅ با ROS 2 با کمک Bridge ارتباط میگیرد. در نسخه 4.2 ارتباط با نسخههای قدیمی ROS ممکن نیست که بدیهی است.
✅ تعدادی از الگوریتمهای معروف رباتیکی در پکیج Isaac ROS پیاده شدهاند و در شبیهساز قابل استفاده هستند.
✅ با مفاهیم Standalone Scripting به شما اجازه میدهد براحتی کل شبیهسازی را با تمام core API ها کنترل و customize کنید.
✅ چند صد اکستنشن برای Isaac Sim Platform توسعه یافته که کار شما را آسان کند؛ یک مثال Isaac Lab است که برای RL است.
✅ شما میتوانید اکستنشن خود را برای کار خود توسعه دهید و اگر چیز خوبی شد، برای community بصورت open source منتشر کنید.
✅ امکان deploy بصورت SITL با این شبیهساز برقرار است، به شرط اینکه ربات هاردور استاندارد داشته باشد (مشخصا از خاندان Jetson).
موارد دیگر را بعدا مکتوب میکنم. اگر درباره Isaac Sim سوال داشتید، میتوانید بپرسید.
----------
@roboticknowledge
Robotic Knowledge
#Isaac #IssacSim عمده آموزشهای Isaac Sim را که اکنون طی کردهام و در میانههای Learning Curve آن هستم، نظرم را درباره این شبیهساز مینویسم. ✅ با فاصله بهترین گرافیک را ارائه میکند - به عبارتی Photorealistic ترین شبیهساز رباتیکی جهان است و چیزهای دیگر…
#Isaac #IssacSim
این موجود (Isaac Sim) یک اکوسیستم است که خود بر اساس موجود بزرگ دیگری به نام Omniverse است.
در این تصویر نمایی از این اکوسیستم میبینید، هر چند اکستنشنهای Third party در آن دیده نمیشود که بخشی از قدرت پنهان این پلتفرم است.
----------
@roboticknowledge
این موجود (Isaac Sim) یک اکوسیستم است که خود بر اساس موجود بزرگ دیگری به نام Omniverse است.
در این تصویر نمایی از این اکوسیستم میبینید، هر چند اکستنشنهای Third party در آن دیده نمیشود که بخشی از قدرت پنهان این پلتفرم است.
----------
@roboticknowledge
#RL #IsaacLab #Isaac
چهار کتابخانه سازگار با Isaac Lab که مشخصا SKRL از بقیه بهتر است. در Isaac Lab هر چهار کتابخانه بصورت workflow براحتی قابل استفاده هستند.
----------
@roboticknowledge
چهار کتابخانه سازگار با Isaac Lab که مشخصا SKRL از بقیه بهتر است. در Isaac Lab هر چهار کتابخانه بصورت workflow براحتی قابل استفاده هستند.
----------
@roboticknowledge
#رباتیک #تجربه #داستان
چند وقت پیش دوستی از من پرسید کار تو چیست؟ گفتم کار من رباتیک است؛ کمی بیشتر توضیح دهم، کنترل ایمن ربات برای حرکت است (مسأله را باز نکردم). پرسید با چه روشی؟ گفتم کنترل کلاسیک را قرار است با روشهای مبتنی بر یادگیری ترکیب کنیم. سپس گفت که پس تو رباتیک کار نمیکنی و هوش مصنوعی کار میکنی!!!
شوکه شدم و کمی بحث کردیم. فایده نداشت چون کسی که رباتیک کار نکرده نمیفهمد ابعاد کاری رباتیک را. این پست لینکدین را دیدم و یاد آن بحث افتادم:
https://www.linkedin.com/posts/enzo-ghisoni-robotics_ros2-robotics-opensource-activity-7258827911242076160-c8A3
نتیجه اینکه رباتیک را کسانی درک میکنند که ابعاد آن را چشیدهاند. کسی با صرف کار نظری، یا شبیهسازی تنها، یا فقط جنبه مکانیکی یا الکتریکی یا کامپیوتری دیدن، بدون در نظر گرفتن ابعاد دیگر، نمیتواند درک کند رباتیک چیست و چرا افرادی که معتقد هستند Robotics کار میکنند خیلی تفاوت دارند با افرادی که صرفا هوش مصنوعی یا کنترل یا هر چیز دیگری به تنهایی کار میکنند.
شب بخیر! :)))))
----------
@roboticknowledge
چند وقت پیش دوستی از من پرسید کار تو چیست؟ گفتم کار من رباتیک است؛ کمی بیشتر توضیح دهم، کنترل ایمن ربات برای حرکت است (مسأله را باز نکردم). پرسید با چه روشی؟ گفتم کنترل کلاسیک را قرار است با روشهای مبتنی بر یادگیری ترکیب کنیم. سپس گفت که پس تو رباتیک کار نمیکنی و هوش مصنوعی کار میکنی!!!
شوکه شدم و کمی بحث کردیم. فایده نداشت چون کسی که رباتیک کار نکرده نمیفهمد ابعاد کاری رباتیک را. این پست لینکدین را دیدم و یاد آن بحث افتادم:
https://www.linkedin.com/posts/enzo-ghisoni-robotics_ros2-robotics-opensource-activity-7258827911242076160-c8A3
نتیجه اینکه رباتیک را کسانی درک میکنند که ابعاد آن را چشیدهاند. کسی با صرف کار نظری، یا شبیهسازی تنها، یا فقط جنبه مکانیکی یا الکتریکی یا کامپیوتری دیدن، بدون در نظر گرفتن ابعاد دیگر، نمیتواند درک کند رباتیک چیست و چرا افرادی که معتقد هستند Robotics کار میکنند خیلی تفاوت دارند با افرادی که صرفا هوش مصنوعی یا کنترل یا هر چیز دیگری به تنهایی کار میکنند.
شب بخیر! :)))))
----------
@roboticknowledge
Linkedin
Enzo Ghisoni on LinkedIn: #ros2 #robotics #opensource #community #startup | 12 comments
The life of a robotics engineer in a start-up
The thing I like most about the start-up environment is that everything has to be done, and if nobody knows how… | 12 comments on LinkedIn
The thing I like most about the start-up environment is that everything has to be done, and if nobody knows how… | 12 comments on LinkedIn
#Isaac #RL
در یادگیری تقویتی محیطهای موازی سرعت آموزش را تا 1000X زیاد میکنند. چگونه؟
تعدد محیط یعنی تعدد sample برای observation. پس عملیات گرادیان گیری یادگیری شبکه با batch سایز بزرگتر میتواند انجام شود که سرعت زیاد برای آموزش شبکه را محقق میکند. بنابراین شما میتوانید با یک GPU در شبیهسازی مثل Isaac Gym اقدام به آموزش یک Policy در چند دقیقه تا چند ساعت بکنید.
البته به این سادگی که نوشتم نیست و زحمت زیادی دارد. برای مثال صرفا یک Reward Function درست نوشتن کار خیلی سادهای نیست، بماند که توانایی پیادهسازی درست با Torch هم خود چالش دیگر این ماجرا است.
----------
@roboticknowledge
در یادگیری تقویتی محیطهای موازی سرعت آموزش را تا 1000X زیاد میکنند. چگونه؟
تعدد محیط یعنی تعدد sample برای observation. پس عملیات گرادیان گیری یادگیری شبکه با batch سایز بزرگتر میتواند انجام شود که سرعت زیاد برای آموزش شبکه را محقق میکند. بنابراین شما میتوانید با یک GPU در شبیهسازی مثل Isaac Gym اقدام به آموزش یک Policy در چند دقیقه تا چند ساعت بکنید.
البته به این سادگی که نوشتم نیست و زحمت زیادی دارد. برای مثال صرفا یک Reward Function درست نوشتن کار خیلی سادهای نیست، بماند که توانایی پیادهسازی درست با Torch هم خود چالش دیگر این ماجرا است.
----------
@roboticknowledge
🏆3
#RL
شما وقتی یک Agent را در محیط train میکنید، باید شرایطی را تعریف کنید تا آموزش در یک Episode متوقف شود و اصطلاحا محیط را reset کنید. طی reset کردن محیط، میتوانید Target را نیز بصورت تصادفی بروز کنید تا شبکه generalized بشود و حالتهای مختلف را یاد بگیرد.
اما چه زمانی باید یک Episode را reset کرد؟ بسته به طراحی دارد، اما یک مثال ساده این است که agent در محیط crash کند. حال مهندسی مسأله این است که crash را چطوری ببینید. مثلا اگه مقدار tilt یک ربات پرنده یا زاویه پای یک ربات انسان نما از حدی تجاوز کرد، آن شرایط را میتوان بهعنوان trigger برای ثبت یک crash در نظر گرفت.
----------
@roboticknowledge
شما وقتی یک Agent را در محیط train میکنید، باید شرایطی را تعریف کنید تا آموزش در یک Episode متوقف شود و اصطلاحا محیط را reset کنید. طی reset کردن محیط، میتوانید Target را نیز بصورت تصادفی بروز کنید تا شبکه generalized بشود و حالتهای مختلف را یاد بگیرد.
اما چه زمانی باید یک Episode را reset کرد؟ بسته به طراحی دارد، اما یک مثال ساده این است که agent در محیط crash کند. حال مهندسی مسأله این است که crash را چطوری ببینید. مثلا اگه مقدار tilt یک ربات پرنده یا زاویه پای یک ربات انسان نما از حدی تجاوز کرد، آن شرایط را میتوان بهعنوان trigger برای ثبت یک crash در نظر گرفت.
----------
@roboticknowledge
⚡2
#منهای_رباتیک
اگر ایدهآل عمر انسان ۱۰۰ سال باشد، میشود ۵۲۰۰ هفته.
امروز چک کردم و دیدم من ۱۳۹۹ هفته را در زندگی خود گذراندهام.
باید از هفته به هفته این فرصت استفاده کنیم. هر هفته خروجی خوب در کار خود داشته باشیم؛ هفتههای سبز داشته باشیم. میراثی درست کنیم که در آینده به آن افتخار کنیم و با سربلندی درباره زمانی که گذشته است، صحبت کنیم (البته صحبت بکنند😉)
دو راه وجود دارد: هفتههای معمولی و بدون خروجی، هفتههای سخت اما با خروجی - هر چند کوچک. اثرگذاری برآیند گامهای مثبت است. میتوانید سختی نکشید و میراثی هم نداشته باشید، و میتوانید سختی را دوست خود کنید و در آینده پرچمداری کنید. سخت است، اما به شیرینی میراث آینده میارزد.
----------
@roboticknowledge
اگر ایدهآل عمر انسان ۱۰۰ سال باشد، میشود ۵۲۰۰ هفته.
امروز چک کردم و دیدم من ۱۳۹۹ هفته را در زندگی خود گذراندهام.
باید از هفته به هفته این فرصت استفاده کنیم. هر هفته خروجی خوب در کار خود داشته باشیم؛ هفتههای سبز داشته باشیم. میراثی درست کنیم که در آینده به آن افتخار کنیم و با سربلندی درباره زمانی که گذشته است، صحبت کنیم (البته صحبت بکنند😉)
دو راه وجود دارد: هفتههای معمولی و بدون خروجی، هفتههای سخت اما با خروجی - هر چند کوچک. اثرگذاری برآیند گامهای مثبت است. میتوانید سختی نکشید و میراثی هم نداشته باشید، و میتوانید سختی را دوست خود کنید و در آینده پرچمداری کنید. سخت است، اما به شیرینی میراث آینده میارزد.
----------
@roboticknowledge
⚡7🫡3
#کنترل
در سیستمهای کنترل تحقق Stability هدف اصلی است، اما مفاهیم دیگری نیز وجود دارند که باید محقق شوند. یکی از مهمترینها Safety است.
خروجی کنترلکننده شما اگرچه باید سیستم را پایدار کند، اما آیا آن را safe هم میکند؟
لایههای بالادستی کنترلی بر روی سیستمهای Pre Controlled از این سوال به وجود میآیند. معمولا Safety با تعریف constraints بر روی state یا inputs تعریف میشود.
وقتی شما بر سر خروجی کنترلکننده اصلی یک rate limiter قرار میدهید کاری که میکنید از نوع safety controller است، اما چیزی ساده و همراه با عدم تضمین safety است.
این اساس وجودی چیزی به نام Reference Governor یا RG است که ورودی کنترلی r را به صورت اصلاحی به ورودی v مپ میکند تا سیستم تضمین برای عدم عبور از قیود داشته باشد.
حالا روی همین RG اخیرا کاری که میشود چک کردن Feasible بودن فرمان است. در مباحث Safe Control اگر خروجی برای سیستم Feasible نباشد اساسا بدرد بخور نخواهد بود چون تضمینها را زیر سوال میبرد.
----------
@roboticknowledge
در سیستمهای کنترل تحقق Stability هدف اصلی است، اما مفاهیم دیگری نیز وجود دارند که باید محقق شوند. یکی از مهمترینها Safety است.
خروجی کنترلکننده شما اگرچه باید سیستم را پایدار کند، اما آیا آن را safe هم میکند؟
لایههای بالادستی کنترلی بر روی سیستمهای Pre Controlled از این سوال به وجود میآیند. معمولا Safety با تعریف constraints بر روی state یا inputs تعریف میشود.
وقتی شما بر سر خروجی کنترلکننده اصلی یک rate limiter قرار میدهید کاری که میکنید از نوع safety controller است، اما چیزی ساده و همراه با عدم تضمین safety است.
این اساس وجودی چیزی به نام Reference Governor یا RG است که ورودی کنترلی r را به صورت اصلاحی به ورودی v مپ میکند تا سیستم تضمین برای عدم عبور از قیود داشته باشد.
حالا روی همین RG اخیرا کاری که میشود چک کردن Feasible بودن فرمان است. در مباحث Safe Control اگر خروجی برای سیستم Feasible نباشد اساسا بدرد بخور نخواهد بود چون تضمینها را زیر سوال میبرد.
----------
@roboticknowledge
🏆3
#Tools
#Computer
فیدبک موقعیت و جهتگیری یک پلتفرم رباتیک بخش بسیار پایهای و مهم در سیستم است. این داده اگر در پلتفرم پایه متحرک مورد نیاز باشد، باید توسط SLAM و Odometery محاسبه شود.
ماژولهای سختافزاری وجود دارد که این مسأله را حل کردهاند. یک نمونه معروف Realsense T265 است که دارای دو fish eye و یک IMU است و با روشهای Visual Slam با دقت مناسبی اطلاعات موقعیتی Local را برای کامپیوتر Master تامین میکند. تفاوت با سیستم موقعیتیابی جهانی این است که در هر محیطی که امکان دیدن وجود داشته باشد، حتی محیط بسته، این سیستم موقعیتیابی لوکال بخوبی کار خواهد کرد. نکته قابل توجه این است که اسلمی که اجرا میشود بر روی خود ماژول است (و شما برای موقعیت سنجی بر روی کامپیوتر اصلی هیچ پردازشی نخواهید داشت) و خروجی موقعیت نرخ 200 هرتز دارد که بسیار خوب است.
----------
@roboticknowledge
#Computer
فیدبک موقعیت و جهتگیری یک پلتفرم رباتیک بخش بسیار پایهای و مهم در سیستم است. این داده اگر در پلتفرم پایه متحرک مورد نیاز باشد، باید توسط SLAM و Odometery محاسبه شود.
ماژولهای سختافزاری وجود دارد که این مسأله را حل کردهاند. یک نمونه معروف Realsense T265 است که دارای دو fish eye و یک IMU است و با روشهای Visual Slam با دقت مناسبی اطلاعات موقعیتی Local را برای کامپیوتر Master تامین میکند. تفاوت با سیستم موقعیتیابی جهانی این است که در هر محیطی که امکان دیدن وجود داشته باشد، حتی محیط بسته، این سیستم موقعیتیابی لوکال بخوبی کار خواهد کرد. نکته قابل توجه این است که اسلمی که اجرا میشود بر روی خود ماژول است (و شما برای موقعیت سنجی بر روی کامپیوتر اصلی هیچ پردازشی نخواهید داشت) و خروجی موقعیت نرخ 200 هرتز دارد که بسیار خوب است.
----------
@roboticknowledge
⚡1
#رباتیک
دستان خود را با هاردور کثیف کنید. رباتیک در شبیهساز یک چیز ساده است. در واقعیت اگر همه چیز در شبیهساز خوب پیش رفته باشد، چالشهای زیادی در sim to real وجود خواهد داشت. چالشهای توسعه مکاترونیکی پلتفرم هم جای خود!
خود مکانیک و الکترونیک ربات داستانها دارد. در ریسرچ الگوریتم در میآید، در مهندسی کار خود ربات بصورت Functional در واقعیت. کسی که رباتیک کار میکند هر دو را انجام میدهد. کسی که فقط بخشی از یک کار را انجام میدهد، کاری که میکند ارزش خاصی نخواهد داشت و اسم او نیز Roboticist نیست.
درک این دو فضا منتج به ایده برای حل مسائل واقعی میشود. برای این است کسانی که دست به هاردور نزدهاند عموما شکست میخورند و بر عکس، آدمهای موفق در این زمینه همه با کل مجموعه کار میکنند و خروجیهای خوبی ایجاد میکنند.
----------
@roboticknowledge
دستان خود را با هاردور کثیف کنید. رباتیک در شبیهساز یک چیز ساده است. در واقعیت اگر همه چیز در شبیهساز خوب پیش رفته باشد، چالشهای زیادی در sim to real وجود خواهد داشت. چالشهای توسعه مکاترونیکی پلتفرم هم جای خود!
خود مکانیک و الکترونیک ربات داستانها دارد. در ریسرچ الگوریتم در میآید، در مهندسی کار خود ربات بصورت Functional در واقعیت. کسی که رباتیک کار میکند هر دو را انجام میدهد. کسی که فقط بخشی از یک کار را انجام میدهد، کاری که میکند ارزش خاصی نخواهد داشت و اسم او نیز Roboticist نیست.
درک این دو فضا منتج به ایده برای حل مسائل واقعی میشود. برای این است کسانی که دست به هاردور نزدهاند عموما شکست میخورند و بر عکس، آدمهای موفق در این زمینه همه با کل مجموعه کار میکنند و خروجیهای خوبی ایجاد میکنند.
----------
@roboticknowledge
🫡9