VPN-ийн эсрэг талын хоёр ROS 2 зангилаа бие биенийхээ сэдвүүдийг жагсааж чаддаг ч нэг ч мессеж хүргэж чаддаггүй. Илрүүлэлт болон хэрэглэгчийн өгөгдөл нь тусдаа замтай тусдаа солилцоо юм, илрүүлэлтийн сервер ачааг дамжуулдаггүй. Нэгийг шалгаад нөгөөг нь таамаглах нь туннель өгөгдлийг хэзээ ч зөөж байгаагүй байхад багууд middleware-ийг сольж эхлэх шалтгаан болдог. Доорх процедур ямар нэг зүйлийг солихоос өмнө хоёр үр дүнг салгадаг.

Илрүүлэлтийн сервер үнэндээ юу зөөдөг

Fast DDS-д Discovery Server төгсгөлийн цэгүүдийн талаар мэдээлэл түгээдэг: хэн нийтэлж, хэн захиалж, хэн ямар QoS хүлээж байна. Түншүүд бие биенээ мэдсэний дараа хэрэглэгчийн өгөгдөл тэр серверээр биш, шууд тэдний хооронд зорчдог. Серверт хүрэх нь танилцуулгын зуучлагч хариулж байгааг баталж, үүнээс өөр зүйл биш. Чиглүүлсэн VPN-д түншүүдийн зарласан хаягуудын хооронд хоёр чиглэлд ажиллах зам хэрэгтэй хэвээр.

Энэ ялгаа нь хэсэгчилсэн бүтэлгүйтлийг ч тайлбарладаг: одоо байгаа түншүүд өгөгдөл солилцсоор байхад шинэ илрүүлэлт ажиллахаа болино. Тэдгээрийг хоёр тусдаа мөрдөн шалгалт гэж үзээрэй.

Зангилаануудын үнэхээр ашиглаж буй RMW-ийг уншина уу

ROS 2 өөр өөр middleware ачаалж болох бөгөөд таны shell-д экспортолсон хувьсагч өөр газар эхлүүлсэн процессуудад хүрдэггүй. Терминалын түүхээс биш, ажиллаж буй системээс асуугаарай.

printenv RMW_IMPLEMENTATION
ros2 doctor --report | head -n 20

Тохируулаагүй хувьсагч ихэвчлэн суулгасан анхдагч утгыг илэрхийлдэг бөгөөд энэ нь нэг туршилтын машинуудын хооронд өөр байж болно. Тайлан мөн ашиглаж буй түгээлт болон middleware-ийг нэрлэдэг тул тэдгээрийг тохирч байна гэж таамаглахаас өмнө туннелийн хоёр талд харьцуулна уу. ROS-ийн командын мөрийн демон төлөвийг кэшэлдэг тул орчныг өөрчилсний дараа дахин эхлүүлээрэй, хуучин тохиргооны төлөө хуучирсан демон хариулахыг бүү зөвшөөр. Сесс нээлттэй байх хугацаанд хоёр хостын түгээлт болон RMW-ийг тестийн тэмдэглэлд бичнэ үү.

Илрүүлэлт болон өгөгдлийг хоёр үр дүн гэж шалгана уу

Хор хөнөөлгүй сэдэв сонгоод танилцуулгыг хүргэлтээс тусад нь хэмжинэ. info команд төгсгөлийн цэгүүд болон QoS-ийг жагсаадаг бол echo нэг мессеж үнэхээр холбоосыг гаталж байгааг баталдаг.

ros2 topic info /chatter --verbose
ros2 topic echo /chatter --once

info-гийн гаралтад төгсгөлийн цэгүүд гарч ирэх нь илрүүлэлтийн үр дүн. Мессеж захиалагчид хүрэх нь тээврийн үр дүн бөгөөд зөвхөн хоёр дахь нь програмын хэрэгтэй замыг туршдаг. Илрүүлэлт ажиллаж, echo хугацаа дуусахад илрүүлэлтийн үйлчилгээг биш, зарласан хаягууд болон буцах чиглэлийг шалгана уу. Хоёр командыг хоёр хостоос ажиллуулаарай, учир нь тэгш бус VPN чиглэл ихэвчлэн зөвхөн нэг талаас илэрдэг.

Нэг удаад нэг хамаарлыг өөрчил

Өгөгдлийн зам бүтэлгүйтэх үед нэг сесс дотор middleware, илрүүлэлтийн горим, мессежийн хэмжээг өөрчлөхөөс зайлсхийгээрэй, учир нь дараа нь ямар ч үр дүнг хамааруулж болохгүй. Zenoh RMW бол хууль ёсны хувилбар, гэхдээ түүний чиглүүлэгч туннелээр хүрэх боломжтой өөр нэг хамаарал болдог.

export RMW_IMPLEMENTATION=rmw_zenoh_cpp
ros2 run rmw_zenoh_cpp rmw_zenohd

Тэр RMW-ийн дор чиглүүлэгч илрүүлэлтийг Jazzy-гийн анхдагч зохион байгуулалтад зөөдөг бөгөөд тэнд multicast илрүүлэлт идэвхгүй байдаг тул энэ хамаарал нь өөр middleware-ээс зээлсэн таамаглалд биш, таны тэмдэглэлд хамаарна. Нэг тохиргоог өөрчлөх үед ажлын ачааллыг тогтвортой байлгаад, дараа нь echo тестийг давтаж, чиглэл, мессежийн хурд, холбоосын нөхцөлийг тэмдэглээрэй. Бодит сайжруулалтыг азтай дахин холболтоос ялгахын тулд харьцуулалтыг хоёр удаа ажиллуул. Хэрэв өөрчлөлт илрүүлэлтийг сайжруулж, хүргэлт хэвээр байвал та танилцуулгын үйлчилгээг зөөсөн, өгөгдлийн замыг биш.

Холбоотой нийтлэлүүд