Network Bridge เป็นโหนด ROS2 น้ำหนักเบาที่ออกแบบมาเพื่อการสื่อสารที่แข็งแกร่งระหว่างระบบหุ่นยนต์ผ่านโปรโตคอลเครือข่ายที่กำหนดเอง รองรับโปรโตคอล UDP และ TCP ทันที แพ็คเกจนี้เชื่อมโยงหัวข้อ ROS2 ข้ามเครือข่ายได้อย่างราบรื่น อำนวยความสะดวกในการสื่อสารระยะไกลที่มีประสิทธิภาพระหว่างสถานีฐานและระบบหุ่นยนต์ หรือระหว่างระบบหุ่นยนต์หลายระบบ
เพียงโคลนพื้นที่เก็บข้อมูลลงในพื้นที่ทำงาน ROS2 ของคุณและสร้างด้วย colcon build
ros2 launch network_bridge tcp.launch.py
ros2 topic pub /tcp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"
ros2 topic echo /tcp2/MyDefaultTopic
ros2 launch network_bridge udp.launch.py
ros2 topic pub /udp1/MyDefaultTopic std_msgs/msg/String "data: 'Hello World'"
ros2 topic echo /udp2/MyDefaultTopic
เพียงตั้งค่าพารามิเตอร์อินเทอร์เฟซเครือข่ายและรายการหัวข้อที่คุณต้องการเพื่อเริ่มต้น หากคุณใช้ UDP ผ่านข้อมูลเซลลูลาร์ ขอแนะนำให้ตั้งค่า VPN เพื่ออำนวยความสะดวกในการเชื่อมต่อ นอกจากนี้ โปรดทราบว่า ไม่มีการเข้ารหัส เกิดขึ้นภายในแพ็คเกจนี้ ในปัจจุบัน หากคุณต้องการเข้ารหัส คุณต้องใช้ VPN
ดู config/Udp1.yaml
สำหรับคำอธิบายของพารามิเตอร์ทั้งหมด รวมถึงไฟล์การกำหนดค่าตัวอย่าง TCP
ตัวอย่างการกำหนดค่าต่อไปนี้สาธิตหุ่นยนต์ที่ส่งข้อความบน /gps/fix
ผ่าน UDP ไปยังสถานีฐานที่จะเผยแพร่ข้อความอีกครั้ง วิธีนี้ทำงานได้อย่างราบรื่นกับข้อความทุกประเภท ตราบใดที่ข้อความเหล่านั้นถูกสร้างขึ้นและมาจากปลายทั้งสองด้านของการส่ง
/udp_sender:
ros__parameters:
UdpInterface:
local_address: "192.168.1.2"
receive_port: 5001
remote_address: "192.168.1.3"
send_port: 5000
topics:
- "/gps/fix"
/udp_receiver:
ros__parameters:
UdpInterface:
local_address: "192.168.1.3"
receive_port: 5000
remote_address: "192.168.1.2"
send_port: 5001
โปรโตคอลเครือข่ายถูกนำมาใช้เป็นปลั๊กอิน Pluginlib ซึ่งอนุญาตให้สร้างอินเทอร์เฟซตามอำเภอใจโดยใช้คลาสนามธรรม include/network_interfaces/network_interface_base.hpp
อินเทอร์เฟซใดๆ ที่สามารถส่งและรับไบต์สามารถนำไปใช้ในทางทฤษฎีได้ รวมถึงโปรโตคอลที่นอกเหนือไปจากการสื่อสารแบบจุดต่อจุด เช่น ZMQ โปรดพิจารณาเปิดคำขอดึงหากคุณใช้อินเทอร์เฟซเครือข่ายใหม่
โหนดนี้สามารถเปิดใช้งานได้ด้วย DEBUG ระดับตัวบันทึก ซึ่งให้ข้อมูลที่เป็นประโยชน์สำหรับการปรับแต่งพารามิเตอร์การบีบอัด อัตรา และข้อความเก่า สำหรับแต่ละข้อความที่ส่ง ฝั่งรับจะแสดงจำนวนไบต์ที่ได้รับ ขนาดที่คลายการบีบอัดเป็นไบต์ และความล่าช้าในการส่ง
แพ็คเกจนี้ได้รับการพัฒนาเพื่อใช้ใน Indy Autonomous Challenge โดยทีม Purdue AI Racing แรงบันดาลใจนำมาจาก mqtt_client (https://github.com/ika-rwth-aachen/mqtt_client/)