ROBOWORKS-LOGO

ROBOWORKS Robofleet الگوریتم های چند عاملی

ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-PRODUCT

مشخصات

  • نام محصول: ROBOWORKS
  • نسخه: 20240501
  • تهیه شده توسط: وین لیو و جانت لین
  • تاریخ: 1 مه 2024

اطلاعات محصول

ROBOWORKS یک سیستم چند عاملی است که امکان اجرای الگوریتم های مختلف برای هماهنگی و ارتباط ربات را فراهم می کند.

سوالات متداول

س: اگر ربات نتواند به طور خودکار به Wifi متصل شود، چه کاری باید انجام دهم؟

پاسخ: اگر ربات به طور خودکار وصل نشد، سعی کنید کارت شبکه را جدا کرده و دوباره وصل کنید و دوباره سعی کنید وصل شوید.

خلاصه

این سند عمدتاً استفاده از بسته تابع تشکیل چند ربات به نام wheeltec_multi را توضیح می دهد.

این سند به چهار بخش تقسیم می شود:

  • بخش اول عمدتاً در مورد معرفی روش تشکیل چند روباتی است.
  • بخش دوم عمدتاً تنظیمات ارتباط چند ماشینی ROS، از جمله ارتباطات چند ماشینی ساخت ROS و مشکلاتی را که ممکن است در فرآیند ارتباط ROS با آن مواجه شود، توصیف می‌کند.
  • بخش سوم عمدتاً مراحل عملیات همزمان سازی زمان چند ماشینی را شرح می دهد.
  • بخش چهارم استفاده خاص از بسته تابع تشکیل چند ماشینی را توضیح می دهد.

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

مقدمه ای بر الگوریتم های چند عاملی

الگوریتم های تشکیل چند عاملی

این بسته ROS یک مشکل معمولی از چند عامل در کنترل مشترک در طول یک درایو تشکیل را ارائه می دهد. این آموزش پایه ای را برای توسعه آینده در مورد این موضوع ایجاد می کند. الگوریتم کنترل تشکیل به الگوریتمی اشاره دارد که چندین عامل را کنترل می کند تا تشکیلات خاصی را برای انجام یک کار تشکیل دهد. همکاری به همکاری بین چندین عامل با استفاده از یک رابطه محدودیت خاص برای تکمیل یک کار اشاره دارد. درایو تشکیل چند ربات را به عنوان نمونه قبلی در نظر بگیریدampهمکاری به این معنی است که چندین روبات با هم یک شکل دلخواه را تشکیل می دهند. ماهیت آن یک رابطه ریاضی مشخص است که بین موقعیت های هر ربات برقرار است. روش های سازند عمدتا به کنترل سازند متمرکز و کنترل سازند توزیع شده تقسیم می شوند. روش های کنترل تشکیلات متمرکز عمدتاً شامل روش ساختار مجازی، روش تئوری گرافیکی و روش پیش بینی مدل می باشد. روش های کنترل شکل گیری توزیع شده عمدتاً شامل روش رهبر-پیرو، روش مبتنی بر رفتار و روش ساختار مجازی است.
این بسته ROS از روش رهبر-پیرو در روش کنترل تشکیلات توزیع شده برای اجرای درایو تشکیل چند روباتی استفاده می کند. یک ربات در تشکیلات به عنوان رهبر و ربات های دیگر به عنوان برده برای پیروی از رهبر تعیین می شوند. این الگوریتم از مسیر حرکت ربات پیشرو استفاده می کند تا مختصاتی را تنظیم کند که توسط روبات های زیر با جهت و سرعت مشخصی ردیابی شوند. با تصحیح انحراف موقعیت از مختصات ردیابی، پیروان در نهایت انحراف بین دنبال کننده و مختصات ردیابی مورد انتظار را برای دستیابی به اهداف درایو سازند به صفر می‌رسانند. به این ترتیب، الگوریتم نسبتاً کمتر پیچیده است.

الگوریتم های اجتناب از موانع

یک الگوریتم رایج اجتناب از مانع، روش میدان پتانسیل مصنوعی است. حرکت ربات در یک محیط فیزیکی به عنوان حرکت در یک میدان نیروی مصنوعی مجازی در نظر گرفته می شود. نزدیکترین مانع توسط LiDAR شناسایی می شود. مانع یک میدان نیروی دافعه برای ایجاد دافعه برای ربات و نقطه هدف یک میدان گرانشی برای ایجاد نیروی گرانشی برای ربات فراهم می کند. به این ترتیب، تحت عمل ترکیبی دافعه و جاذبه، حرکت ربات را کنترل می کند.
این بسته ROS یک بهبود مبتنی بر روش میدان پتانسیل مصنوعی است. ابتدا، الگوریتم تشکیل، سرعت خطی و زاویه‌ای پیرو Slave را محاسبه می‌کند. سپس با توجه به الزامات اجتناب از مانع، سرعت خطی و زاویه ای را افزایش یا کاهش می دهد. هنگامی که فاصله بین پیرو Slave و مانع نزدیکتر باشد، نیروی دافعه مانع تا پیرو Slave بیشتر است. در این میان، تغییر سرعت خطی و تغییرات سرعت زاویه ای بیشتر است. هنگامی که مانع به جلوی پیرو Slave نزدیکتر باشد، دافعه مانع برای پیرو Slave بیشتر می شود (دفعه جلو بزرگترین و دفع جانبی کوچکترین است). در نتیجه تغییرات سرعت خطی و سرعت زاویه ای بیشتر است. از طریق روش میدان پتانسیل مصنوعی، زمانی که یک ربات می‌تواند در مقابل یک مانع از پاسخ دادن خودداری کند، راه حل را بهبود می‌بخشد. این به هدف اجتناب بهتر از موانع کمک می کند.

راه اندازی ارتباط چند عاملی

ارتباط چند عاملی یکی از مراحل کلیدی برای تکمیل یک شکل گیری چند روباتی است. هنگامی که موقعیت نسبی ربات های متعدد ناشناخته است، ربات ها باید اطلاعات یکدیگر را از طریق ارتباط به اشتراک بگذارند تا برقراری ارتباط را تسهیل کنند. معماری توزیع شده توسط ROS و ارتباطات شبکه بسیار قدرتمند هستند. این نه تنها برای ارتباطات بین فرآیندی بلکه برای ارتباط بین دستگاه های مختلف نیز مناسب است. از طریق ارتباطات شبکه، همه گره ها می توانند روی هر کامپیوتری اجرا شوند. وظایف اصلی مانند پردازش داده ها در سمت میزبان انجام می شود. ماشین های برده مسئول دریافت داده های محیطی جمع آوری شده توسط حسگرهای مختلف هستند. میزبان در اینجا مدیری است که گره Master را در ROS اجرا می کند. چارچوب ارتباطی چند عاملی فعلی از طریق یک مدیر گره و یک مدیر پارامتر برای مدیریت ارتباطات بین روبات های متعدد است.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (1)

مراحل راه اندازی ارتباطات چند عاملی

  • ROS Controls را در همان شبکه راه اندازی کنید
    • 2 راه برای تنظیم Master/Slave ROS Controls تحت یک شبکه وجود دارد.

گزینه 1:

Master Host با اجرای Master node manager یک وای فای محلی ایجاد می کند. به طور کلی، یکی از روبات هایی که به عنوان استاد تعیین شده است، این شبکه وای فای را ایجاد می کند. سایر ربات ها یا ماشین های مجازی به عنوان برده به این شبکه وای فای می پیوندند.

گزینه 2:

شبکه وای فای محلی توسط یک روتر شخص ثالث به عنوان مرکز رله اطلاعات ارائه می شود. همه ربات ها به یک روتر متصل هستند. روتر بدون اتصال به اینترنت نیز قابل استفاده است. یکی از روبات ها را به عنوان Master انتخاب کنید و Master node manager را اجرا کنید. ربات های دیگر به عنوان برده تعیین می شوند و مدیر گره اصلی را از Master اجرا می کنند.
تصمیم گیری در مورد اینکه کدام گزینه را انتخاب کنید به نیازهای پروژه شما بستگی دارد. اگر تعداد ربات‌هایی که نیاز به برقراری ارتباط دارند زیاد نیست، گزینه 1 توصیه می‌شود زیرا در هزینه صرفه‌جویی می‌کند و راه‌اندازی آن آسان است. وقتی تعداد ربات ها زیاد باشد، گزینه 2 توصیه می شود. محدودیت در قدرت محاسباتی کنترل اصلی ROS و محدود بودن پهنای باند وای فای داخلی می تواند به راحتی باعث تاخیر و اختلال در شبکه شود. یک روتر می تواند به راحتی این مشکلات را برطرف کند. لطفاً توجه داشته باشید که هنگام انجام ارتباطات چند عاملی، اگر ماشین مجازی به عنوان یک ROS Slave استفاده می‌شود، حالت شبکه آن باید روی حالت پل تنظیم شود.

متغیرهای محیط Master/Slave را پیکربندی کنید

بعد از اینکه همه ROS Master ها در یک شبکه هستند، متغیرهای محیطی برای ارتباطات چند عاملی باید تنظیم شوند. این متغیر محیطی در فایل .bashrc در دایرکتوری اصلی پیکربندی شده است. دستور gedit ~/.bashrc را اجرا کنید تا اجرا شود. لطفاً توجه داشته باشید که هر دو فایل .bashrc master و slave در ارتباطات چند عاملی باید پیکربندی شوند. آنچه باید تغییر کند آدرس های IP در انتهای فایل است. همانطور که در شکل 2-1-4 نشان داده شده است، دو خط ROS_MASTER_URI و ROS_HOSTNAME هستند. ROS_MASTER_URI و ROS_HOSTNAME میزبان ROS هر دو IP محلی هستند. ROS_MASTER_URI در فایل ROS Slave .bashrc باید به آدرس IP میزبان تغییر کند در حالی که ROS_HOSTNAME به عنوان یک آدرس IP محلی باقی می ماند.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (2)

ارتباط چند ماشینی ROS توسط نسخه انتشار ROS محدود نمی شود. در فرآیند ارتباط چند ماشینی، باید به موارد زیر توجه داشت:

  1. عملکرد برنامه برده ROS به برنامه اصلی ROS دستگاه اصلی ROS بستگی دارد. برنامه اصلی ROS باید قبل از اجرای برنامه Slave در دستگاه Slave ابتدا روی دستگاه اصلی اجرا شود.
  2. آدرس IP ماشین های اصلی و slave در ارتباطات چند ماشینی باید در یک شبکه باشد. این بدان معناست که آدرس IP و ماسک زیر شبکه تحت یک شبکه قرار دارند.
  3. ROS_HOSTNAME در فایل پیکربندی محیط .bashrc برای استفاده از localhost توصیه نمی شود. توصیه می شود از یک آدرس IP خاص استفاده کنید.
  4. در صورتی که آدرس IP برده به درستی تنظیم نشده باشد، دستگاه برده همچنان می تواند به ROS master دسترسی داشته باشد اما نمی تواند اطلاعات کنترل را وارد کند.
  5. اگر ماشین مجازی در ارتباط چند عاملی شرکت کند، حالت شبکه آن باید روی حالت پل تنظیم شود. IP استاتیک را نمی توان برای اتصال شبکه انتخاب کرد.
  6. ارتباط چند ماشینی نمی تواند view یا در موضوعاتی از نوع داده پیام که به صورت محلی وجود ندارند مشترک شوید.
  7. شما می توانید از دموی شبیه سازی لاک پشت کوچک برای بررسی موفقیت آمیز بودن ارتباط بین ربات ها استفاده کنید:
    • a. فرار از استاد
      • Rescore #راه اندازی خدمات ROS
      • لاک پشت های منبر turtlesim_node #launch Turtles interface
    • b. از برده فرار کن
      • اجرای مجدد لاک پشت ها لاک پشت_کلید_تلئوپ #راه اندازی گره کنترل صفحه کلید برای لاک پشت ها

اگر بتوانید حرکات لاک پشت را از صفحه کلید روی Slave دستکاری کنید، به این معنی است که ارتباط master/slave با موفقیت برقرار شده است.

اتصال وای فای خودکار در ROS

مراحل زیر نحوه پیکربندی ربات را برای اتصال خودکار به شبکه میزبان یا شبکه روتر توضیح می دهد.

تنظیم خودکار اتصال وای فای برای Jetson Nano

  1. Jetson Nano را از طریق ابزار کنترل از راه دور VNC یا مستقیماً به صفحه رایانه متصل کنید. روی نماد وای فای در گوشه سمت راست بالا کلیک کنید سپس روی «ویرایش اتصالات.» کلیک کنید.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (3)
  2. روی دکمه + در Network Connections کلیک کنید:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (4)
  3. در پنجره «انتخاب نوع اتصال»، روی منوی کشویی کلیک کنید و روی دکمه «ایجاد…» کلیک کنید:ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (5)
  4. در کنترل پنل روی گزینه Wifi کلیک کنید. نام وای فای را برای اتصال در فیلدهای "Connection Name" و SSID وارد کنید. "Client" را در منوی کشویی "Mode" و "wlan0" را در منوی کشویی "Device" انتخاب کنید.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (6)
  5. در کنترل پنل، گزینه “General” را کلیک کرده و “Automatically connect to this network…” را علامت بزنید. اولویت اتصال را در گزینه "اولویت اتصال برای فعال سازی خودکار" روی 1 قرار دهید. گزینه «همه کاربران ممکن است به این شبکه متصل شوند» را علامت بزنید. هنگامی که این گزینه در "اولویت اتصال برای فعال سازی خودکار" برای سایر وای فای روی 0 تنظیم شده است، به این معنی است که این شبکه وای فای ترجیحی در گذشته بوده است.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (7)
  6. روی گزینه "Wi-Fi Security" در کنترل پنل کلیک کنید. "WPA & WPA2 Personal" را در قسمت "Security" انتخاب کنید. سپس رمز وای فای را در قسمت "Password" وارد کنید.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (8)

توجه: اگر ربات نتواند به طور خودکار پس از بوت شدن به شبکه وای فای متصل شود، زمانی که اولویت وای فای روی 0 تنظیم شده است، ممکن است به دلیل مشکل سیگنال وای فای ضعیف باشد. برای جلوگیری از این مشکل، می توانید تمام گزینه های وای فای را که در گذشته متصل شده اند حذف کنید. فقط شبکه وای فای ایجاد شده توسط میزبان یا روتر را نگه دارید. روی گزینه «تنظیمات IPv4» در کنترل پنل تنظیمات شبکه کلیک کنید. گزینه “Manual” را در قسمت “Method” انتخاب کنید. سپس روی «افزودن» کلیک کنید، آدرس IP دستگاه برده را در فیلد «آدرس» پر کنید. "24" را در قسمت "Netmask" پر کنید. بخش شبکه IP را در "Gateway" پر کنید. سه رقم آخر بخش شبکه IP را به "1" تغییر دهید. هدف اصلی این مرحله رفع آدرس IP است. پس از تکمیل این کار برای اولین بار، هنگام اتصال به همان WIFI، آدرس IP بدون تغییر باقی می ماند.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (9)

پس از پیکربندی همه تنظیمات، روی "ذخیره" کلیک کنید تا تنظیمات ذخیره شوند. پس از موفقیت آمیز بودن ذخیره، ربات به طور خودکار به شبکه میزبان یا روتر متصل می شود.

توجه:

  1. آدرس IP تنظیم شده در اینجا باید با آدرس IP تنظیم شده در فایل .bashrc در بخش 2.1 یکسان باشد.
  2. آدرس IP master و هر slave باید منحصر به فرد باشد.
  3. آدرس IP اصلی و برده باید در یک بخش شبکه باشند.
  4. قبل از اینکه ربات برده روشن شود و به طور خودکار به شبکه WiFi متصل شود، باید منتظر بمانید تا میزبان یا روتر سیگنال WiFi را ارسال کند.
  5. پس از پیکربندی تنظیمات، اگر ربات نمی تواند به طور خودکار به WiFi متصل شود، لطفاً کارت شبکه را وصل کرده و جدا کنید و دوباره سعی کنید وصل شوید.

تنظیم خودکار اتصال وای فای برای Raspberry Pi

رویه Raspberry Pi همانند Jetson Nano است.

تنظیم خودکار اتصال WiFi برای Jetson TX1

تنظیمات در Jetson TX1 تقریباً مشابه Jetson Nano است، با یک استثنا، Jetson TX1 باید دستگاه "wlan1" را در "Device" در کنترل پنل تنظیمات شبکه انتخاب کند.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (10)

راه اندازی همگام سازی چند عاملی

در پروژه تشکیل چند عاملی، تنظیم همگام سازی زمان چند عاملی یک گام بسیار مهم است. در فرآیند شکل گیری به دلیل زمان سیستم ناهمزمان هر ربات مشکلات زیادی ایجاد خواهد شد. همگام سازی زمانی چند عاملی به دو وضعیت تقسیم می شود، یعنی وضعیتی که در آن ربات های Master و Slave هر دو به شبکه متصل هستند و وضعیتی که در آن هر دو از شبکه جدا می شوند.

اتصال شبکه اصلی/فرهنگ موفق

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

عیب یابی قطع شدن شبکه

پس از پیکربندی ارتباط چند عاملی، اگر دستگاه های اصلی و slave نتوانند با موفقیت به شبکه متصل شوند، لازم است زمان را به صورت دستی همگام سازی کنید. برای تکمیل تنظیمات زمان از دستور date استفاده می کنیم.

ابتدا ابزار Terminator را نصب کنید. از ابزار پایان‌دهنده، از ابزار تقسیم پنجره برای قرار دادن پایانه‌های کنترلی master و slave در یک پنجره ترمینال استفاده کنید (برای تنظیم یک پنجره تقسیم راست کلیک کنید و با ssh در ویندوزهای مختلف وارد ماشین‌های master و slave شوید) .

  • sudo apt-get install terminator # برای تقسیم پنجره ترمینال، ترمیناتور را دانلود کنید

روی دکمه سمت چپ بالا کلیک کنید، گزینه [Broadcast to all]/[Broadcast all] را انتخاب کنید و دستور زیر را وارد کنید. سپس از ابزار Terminator برای تنظیم زمان یکسان برای master و slave استفاده کنید.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (11)

  • sudo date -s "2022-01-30 15:15:00" # تنظیم زمان دستی

بسته ROS چند عامله

معرفی بسته ROS

نام برده را تنظیم کنید

در بسته تابع wheeltec_multi، برای جلوگیری از خطا، لازم است برای هر ربات برده یک نام منحصر به فرد تعیین شود. برای مثالample، شماره 1 برای slave1 و شماره 2 برای slave2 و غیره. هدف از تنظیم نام های مختلف، گروه بندی گره های در حال اجرا و تمایز آنها با فضای نام های مختلف است. برای مثالample، موضوع رادار برده 1/slave1/scan و گره LiDAR برده 1/slave1/laser است.

مختصات برده را تنظیم کنید

بسته wheeltec_multi می تواند تشکیلات سفارشی را پیاده سازی کند. هنگامی که تشکیلات مختلف مورد نیاز است، فقط مختصات مورد نظر ربات های برده را تغییر دهید. Slave_x و slave_y مختصات x و y Slave با master به عنوان نقطه مرجع اصلی هستند. جلوی Master جهت مثبت مختصات x و سمت چپ جهت مثبت مختصات y است. پس از تکمیل تنظیمات، یک Slave مختصات TF به عنوان مختصات مورد انتظار برده صادر می شود. اگر یک Master و دو Slave وجود داشته باشد، شکل زیر را می توان تنظیم کرد:

  1. شکل دهی افقی: می توانید مختصات Slave در سمت چپ را روی slave_x:0، slave_y: 0.8 و مختصات Slave در سمت راست را slave_x:0، slave_y:-0.8 قرار دهید.
  2. شکل گیری ستون: مختصات یک برده را می توان روی: slave_x:-0.8، slave_y:0 ​​و مختصات Slave دیگر را روی: slave_x:-1.8، slave_y:0 ​​تنظیم کرد.
  3. شکل مثلثی: مختصات یک برده را می توان روی: slave_x:-0.8، slave_y: 0.8 و مختصات Slave دیگر را می توان روی: slave_x:-0.8، slave_y:-0.8 تنظیم کرد.

تشکیلات دیگر را می توان در صورت نیاز سفارشی کرد.

توجه داشته باشید:

  • فاصله توصیه شده بین دو ربات 0.8 تنظیم شده است و توصیه می شود کمتر از 0.6 نباشد. فاصله بین Slave و Master توصیه می شود که زیر 2.0 تنظیم شود. هرچه از Master دورتر باشد، سرعت خطی Slave در هنگام چرخش استاد بیشتر است. با توجه به محدودیت حداکثر سرعت، در صورت عدم رعایت شرایط، سرعت Slave منحرف می شود. شکل گیری ربات آشفته خواهد شد.

اولیه سازی موقعیت برده

  1. موقعیت اولیه Slave به طور پیش فرض در مختصات مورد انتظار است. قبل از اجرای برنامه، فقط ربات برده را نزدیک به مختصات مورد انتظارش قرار دهید تا مقدار دهی اولیه کامل شود. این تابع توسط گره pose_setter در فایلی با نام turn_on_wheeltec_robot.launch در بسته wheeltec_multi اجرا می شود، همانطور که در شکل 4-1-3 نشان داده شده است.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (12)

اگر کاربر بخواهد موقعیت اولیه slave را سفارشی کند، فقط باید مقادیر slave_x و slave_y را مطابق شکل 4-1-4 در wheeltec_slave.launch تنظیم کند. مقادیر slave_x و slave_y به turn_on_wheeltec_robot.launch منتقل می شود و به گره pose_setter اختصاص داده می شود. فقط قبل از اجرای برنامه، ربات را در یک موقعیت سفارشی قرار دهید.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (13)

پیکربندی موقعیت

در یک ساختار چند عاملی، اولین مشکلی که باید حل شود، قرار گرفتن ارباب و برده است. استاد ابتدا یک نقشه دو بعدی می سازد. پس از ایجاد و ذخیره نقشه، بسته ناوبری دوبعدی را اجرا کنید و از الگوریتم موقعیت یابی تطبیقی ​​مونت کارلو (موقعیت یابی amcl) در بسته ناوبری دو بعدی برای پیکربندی موقعیت یابی اصلی استفاده کنید. از آنجایی که Master و Slave در یک شبکه هستند و مدیر گره یکسانی دارند، Master نقشه را از بسته ناوبری دوبعدی راه اندازی کرده است، همه Slave می توانند از نقشه یکسان تحت مدیریت گره یکسان استفاده کنند. بنابراین، برده نیازی به ایجاد نقشه ندارد. در wheeltec_slave.launch، موقعیت یابی مونت کارلو (موقعیت یابی amcl) را اجرا کنید، بردها می توانند موقعیت خود را با استفاده از نقشه ایجاد شده توسط master پیکربندی کنند.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (14)

نحوه ایجاد فرماسیون و حفظ شکل گیری

در روند حرکت شکل گیری، حرکت استاد را می توان با Rviz، صفحه کلید، کنترل از راه دور و سایر روش ها کنترل کرد. Slave سرعت خود را از طریق گره slave_tf_listener محاسبه می کند تا حرکت خود را کنترل کند و به هدف شکل گیری برسد. گره slave_tf_listener سرعت slave را محدود می کند تا از سرعت بیش از حد توسط محاسبه گره جلوگیری کند که باعث ایجاد یک سری اثرات می شود. مقدار خاص را می توان در wheeltec_slave.launch تغییر داد.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (15)

پارامترهای مربوط به الگوریتم تشکیل به شرح زیر است: ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (16)

اطلاعات اجتناب از موانع

در یک ساختار چند عاملی، استاد می تواند از گره move_base برای کامل کردن اجتناب از موانع استفاده کند. با این حال، مقداردهی اولیه Slave از گره move_base استفاده نمی کند. در این مرحله، گره multi_avoidance باید در برنامه slave فراخوانی شود. گره اجتناب از موانع به طور پیش فرض در بسته فعال است. در صورت لزوم، اجتناب را می توان روی "نادرست" تنظیم کرد تا گره اجتناب از مانع غیرفعال شود. ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (17)

برخی از پارامترهای مربوط به گره اجتناب از مانع در شکل زیر نشان داده شده است، جایی که safe_distance حد مسافت ایمن مانع است، و danger_distance حد فاصله خطرناک مانع است. هنگامی که مانع در فاصله ایمن و فاصله خطر قرار دارد، برده موقعیت خود را برای اجتناب از مانع تنظیم می کند. هنگامی که مانع در خطر باشد، برده از مانع دور می شود.ROBOWORKS-Robofleet-MULTI-AGENT-ALGORITHMS-Fig- (18)

رویه عملیات

دستور اجرا را وارد کنید

آماده سازی قبل از شروع تشکیل چند عامل:

  • Master و Slave به یک شبکه متصل می شوند و ارتباط چند عاملی را به درستی تنظیم می کنند
  • استاد یک نقشه دو بعدی از قبل می سازد و آن را ذخیره می کند
  • Master در نقطه شروع نقشه قرار می گیرد، و Slave در نزدیکی موقعیت اولیه (موقعیت تشکیل Slave پیش فرض) قرار می گیرد.
  • پس از ورود به Jetson Nano/Raspberry Pi از راه دور، همگام سازی زمان را انجام دهید.

sudo date -s “2022-04-01 15:15:00”

  • مرحله 1: یک نقشه دو بعدی از استاد باز کنید.

roslaunch turn_on_wheeltec_robot navigation.launch

  • مرحله 2: برنامه formation را از همه Slave ها اجرا کنید.

roslaunch wheeltec_multi wheeltec_slave.launch

  • مرحله 3: گره کنترل صفحه کلید را از Master باز کنید یا از جوی استیک برای کنترل از راه دور حرکت اصلی استفاده کنید.

راه اندازی مجدد wheeltec_robot_rc keyboard_teleop.launch

  • مرحله 4: (اختیاری) حرکات ربات را از Rviz مشاهده کنید.

rviz

توجه: 

  1. قبل از اجرای برنامه حتما عملیات همگام سازی زمان را کامل کنید.
  2. هنگام کنترل استاد سازند چند عاملی، سرعت زاویه ای نباید خیلی سریع باشد. سرعت خطی توصیه شده 0.2 متر بر ثانیه، درجه سرعت زاویه ای زیر 0.3 راد بر ثانیه است. هنگامی که استاد در حال چرخش است، هرچه برده از استاد دورتر باشد، سرعت خطی بیشتری مورد نیاز است. به دلیل محدودیت سرعت خطی و سرعت زاویه ای در بسته، زمانی که ماشین برده نتواند به سرعت مورد نیاز برسد، شکل گیری آشفته خواهد بود. به طور کلی، سرعت خطی بیش از حد می تواند به راحتی به ربات آسیب برساند.
  3. هنگامی که تعداد برده ها بیش از یک نفر باشد، به دلیل پهنای باند محدود میزبان ROS، ایجاد تاخیرهای قابل توجه و قطع ارتباط چند عامله آسان است. استفاده از روتر می تواند این مشکل را به خوبی حل کند.
  4. درخت TF سازند چند روباتی (2 برده) عبارت است از: rqt_tf_tree
  5. نمودار رابطه گره تشکیل چند ربات (2 برده) به صورت زیر است: rqt_graph

اسناد / منابع

ROBOWORKS Robofleet الگوریتم های چند عاملی [pdf] دفترچه راهنمای کاربر
Robofleet الگوریتم های چند نماینده، Robofleet، الگوریتم های چند عامل، الگوریتم های عامل، الگوریتم ها

مراجع

نظر بدهید

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند *