Dalam tutorial ini kita akan mempelajari cara menggunakan perpustakaan uROS untuk micropython: https://github.com/mgtm98/uRos
ROS adalah Sistem Operasi untuk Robot di mana “node” yang berbeda berkomunikasi dengan server pusat melalui pesan TCP dalam format JSON.
Pustaka ini memungkinkan kita mengimplementasikan node ROS di SBC. Ini akan terhubung ke server dan akan dapat mengirim (menerbitkan) atau menerima (berlangganan) pesan.
Kode untuk mengirim pesan adalah sebagai berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | mengimpor jaringan dari uro mengimpor * dari uros.std_msgs mengimpor std_Bool lan = jaringan.LAN().aktif(Benar).ifconfig( ( "10.0.0.1", "255.255.255.0", "10.0.0.2", "8.8.8.8" )) sementara(lan.status() != 3 ): mencetak( "", end="" ) waktu.tidur(1) mencetak( "Terhubung!" ) kamuRos = Ros( "10.0.0.2", 9090 ) #membuat objek uRos baru msg = std_Bool( data = Benar ) #membuat objek pesan string Ros kamuRos.menerbitkan( "uRosTopik", pesan ) #menerbitkan objek pesan mencetak("Selesai") |
Dalam kode ini pertama-tama kita terhubung ke jaringan LAN dan kemudian ke server ROS; kami menentukan format pesan kami dan akhirnya kami mempublikasikannya.
Di PC kami menjalankan kode dengan python yang bertindak sebagai server ROS. Untuk mempermudah, kode ini hanyalah server soket yang mencetak data ke konsol.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | mengimpor stopkontak mengimpor sys def soket_server( tuan rumah, pelabuhan ): s = stopkontak.soket (soket.AF_INET, soket.SOCK_STREAM) s.mengikat((host, port)) s.mendengarkan(1) sementara Benar: samb, tambahan = s.menerima() mencetak('Terhubung oleh', tambahan) sementara Benar: data = conn.penerimaan(1024) if tidak Data: istirahat mencetak(data) samb.Menutup() mencetak("koneksi ditutup") S.Menutup() mencetak("sudah tutup") soket_server( '10.0.0.2', 9090 ) mencetak("Selesai") |
Hasilnya, data yang diterima di server ditampilkan:
Jika kita memeriksa data kita melihat dua bagian:
1. Definisi pesan uRosTopic kami. Ini hanya dikirim satu kali untuk setiap jenis pesan baru.
2. Dan data yang dipublikasikan. Ini dikirim setiap kali kami menerbitkan nilai baru.
Sekarang Anda siap untuk menghubungkan SBC Anda ke perangkat ROS apa pun melalui ethernet, tentukan pesan khusus dan kirimkan hanya dengan beberapa baris kode python.