Cara menggunakan kamera USB dengan ROS pada Raspberry Pi atau BeagleBone Blue - untuk streaming video ke komputer besar



Panduan ini adalah tentang menghubungkan kamera USB ke Raspberry Pi atau BeagleBone Blue dan menggunakannya dengan ROS (Sistem Operasi Robot) - untuk membaca data dari kamera melalui ROS image_view dan bahkan streaming streaming video ke browser web!

Di akhir video ada demonstrasi di robot EduMip.

1) Sebagai bonus, kami akan membuat sistem ROS terdistribusi.

2) Aplikasi Roscore dan aplikasi untuk melihat gambar akan berfungsi pada PC (master) dan node kamera pada Raspberry Pi (slave).

3) Untuk mengkonfigurasi master dan slave, kita perlu memperbarui variabel lingkungan di kedua perangkat.

4) Pada wisaya: temukan alamat IP perangkat. Untuk ethernet, net_dev dapat berupa enpXXs0 atau ethX:

$ ifconfig {net_dev} ifconfig enp61s0   ifconfig 

5) Gunakan alamat IP sebagai nilai untuk variabel ROS_IP:

 $ export ROS_IP="10.42.0.1" 

6) Dan untuk ROS_MASTER_URI:

 $ export ROS_MASTER_URI="http://10.42.0.1:11311" 

7) Jika Anda ingin menggunakan nilai-nilai ini untuk sesi mendatang, Anda dapat menyimpan nilai dalam file .bashrc di direktori home Anda:

 $ echo 'export ROS_IP="10.42.0.1"' >> ~/.bashrc $ echo 'export ROS_MASTER_URI="http://10.42.0.1:11311"' >> ~/.bashrc 

8) Sambungkan ke Raspberry Pi via ssh:

 $ ssh {user}@{raspberry_ip} 

9) Untuk RPi, sebagai seorang budak, tambahkan alamat IP master untuk ROS_MASTER_URI

10) Dan alamat IP Raspberry Pi untuk ROS_IP

 $ export ROS_IP="10.42.0.65" $ export ROS_MASTER_URI="http://10.42.0.1:11311"  $ echo 'export ROS_IP="10.42.0.65"' >> ~/.bashrc $ echo 'export ROS_MASTER_URI="http://10.42.0.1:11311"' >> ~/.bashrc 

11) Sekarang saatnya menghubungkan kamera USB.

12) Periksa apakah kamera dikenali oleh sistem ::

 $ lsusb $ ls /dev | grep video* 

13) Instal simpul usb_cam ROS dengan dependensi yang diperlukan:

 $ sudo apt install ros-kinetic-usb-cam 

14) Tuan rumah usb_cam sudah memiliki file peluncuran uji:

 $ cat /opt/ros/kinetic/share/usb_cam/launch/usb_cam-test.launch 

15) Sebelum memulai file ini, mari kita jalankan kernel ROS pada master:

 $ roscore 

16) Dan sekarang jalankan node usb_cam pada slave:

 $ roslaunch usb_cam usb_cam-test.launch 

17) Sekarang kita bisa melihat topik yang dibuat. Kita bisa memeriksanya di master atau slave.

18) Pindahkan proses saat ini ke latar belakang menggunakan CTRL + Z dan jalankan perintah bg untuk terus berjalan di latar belakang. (pada versi Ubuntu tidak desktop penuh dan tanpa layar, cukup luncurkan terminal lain)

19) Untuk melihat topik di terminal:

 $ rostopic list 

20) ... atau dalam antarmuka grafis:

 $ rqt_graph 

21) Membaca data kamera menggunakan image_view:

 $ rosrun image_view image_view image:=/usb_cam/image_raw 



22) Atau menggunakan rqt_image_view

23) Bawa tugas latar belakang ke latar depan:

 $ fg 

24) Eksperimen terbaru hingga saat ini adalah streaming web

25) Menginstal server video web host ROS:

 $ sudo apt install ros-kinetic-web-video-server 

26) Untuk melakukan ini dengan benar, buat ruang kerja untuk catkin untuk file startup kustom kami:

 $ mkdir -p ~/rosvid_ws/src $ cd ~/rosvid_ws $ catkin_make $ source devel/setup.bash 

27) Kemudian buat paket ROS:

 $ cd src $ catkin_create_pkg vidsrv std_msgs rospy roscpp 

28) Buat file startup menggunakan nano, vim, dll .:

 $ mkdir -p vidsrv/launch $ nano vidsrv/launch/vidsrv.launch 

kirim kode dari sini

Pada Beaglebone Blue dengan kamera usb A4Tech, kode ini berfungsi untuk saya:

 <launch> <!-- This node description you can take from usb_cam-test.launch --> <node name="usb_cam" pkg="usb_cam" type="usb_cam_node" output="screen" > <param name="video_device" value="/dev/video0" /> <param name="image_width" value="352" /> <param name="image_height" value="288" /> <param name="pixel_format" value="mjpeg" /> <param name="camera_frame_id" value="usb_cam" /> <param name="io_method" value="mmap"/> </node> <!-- This node will launch web video server --> <node name="web_video_server" pkg="web_video_server" type="web_video_server" \ /> </launch> 

29) Kumpulkan paket:

 $ cd .. $ catkin_make 

30) Jalankan kernel ROS pada master lagi:

 $ roscore 

31) Dan jalankan file startup yang dibuat:

 $ roslaunch vidsrv vidsrv.launch 

32) Port server video web default adalah 8080

33) Buka URL di browser web: {RPi_IP}: 8080

Tautan dokumentasi:

Node server video
simpul kamera USB
penampil gambar rqt
Modul Modul Kamera Raspberry Pi

Kamera USB dapat digunakan hampir semua yang memiliki driver untuk linux, Anda juga dapat menggunakan tautan Modul Kamera Raspberry Pi yang serupa di atas.

Contoh cara kerjanya di BeagleBone Blue dengan kamera A4Tech:



Cari kartu rangkap tiga di video dari kamera BealeBone Blue USB (algoritma pengenalan berfungsi pada laptop dengan master ROS).

Source: https://habr.com/ru/post/id414859/


All Articles