Network Bridge adalah node ROS2 ringan yang dirancang untuk komunikasi yang kuat antara sistem robot melalui protokol jaringan yang berubah-ubah. Mendukung protokol UDP dan TCP, paket ini dengan mulus menjembatani topik ROS2 di seluruh jaringan, memfasilitasi komunikasi jarak jauh yang efektif antara stasiun pangkalan dan sistem robot, atau antara beberapa sistem robot.
Cukup kloning repositori ke ruang kerja ROS2 Anda dan bangun dengan 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
Cukup atur parameter antarmuka jaringan dan daftarkan topik yang Anda inginkan untuk memulai. Jika Anda menggunakan UDP melalui data seluler, disarankan untuk menyiapkan VPN untuk memfasilitasi koneksi. Perlu diketahui juga bahwa tidak ada enkripsi yang terjadi dalam paket ini. Saat ini, jika Anda ingin enkripsi, Anda harus menggunakan VPN.
Lihat config/Udp1.yaml
untuk deskripsi semua parameter, serta contoh file konfigurasi TCP.
Contoh konfigurasi berikut menunjukkan robot mengirimkan pesan pada /gps/fix
melalui UDP ke stasiun dasar yang kemudian akan menerbitkan ulang pesan tersebut. Ini berfungsi dengan lancar pada semua jenis pesan, selama pesan tersebut dibuat dan bersumber pada kedua ujung transmisi.
/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
Protokol jaringan diimplementasikan sebagai plugin pluginlib, memungkinkan pembuatan antarmuka arbitrer menggunakan kelas abstrak include/network_interfaces/network_interface_base.hpp
. Antarmuka apa pun yang dapat mengirim dan menerima byte secara teoritis dapat diimplementasikan, termasuk protokol yang melampaui komunikasi point-to-point, seperti ZMQ. Harap pertimbangkan untuk membuka permintaan tarik jika Anda menerapkan antarmuka jaringan baru.
Node ini dapat diluncurkan dengan DEBUG tingkat logger, yang memberikan informasi berguna untuk menyetel parameter kompresi, laju, dan pesan basi. Untuk setiap pesan yang dikirim, pihak penerima akan menampilkan jumlah byte yang diterima, ukuran dekompresi dalam byte, dan penundaan transmisi.
Paket ini dikembangkan untuk digunakan dalam Indy Autonomous Challenge oleh tim Purdue AI Racing. Inspirasi diambil dari mqtt_client (https://github.com/ika-rwth-aachen/mqtt_client/).