Dalam instruksi ini, kami akan mengirim aliran video h264 yang dikodekan dengan kamera Logitech C920 yang ditransmisikan dari BeagleBone Blue melalui jaringan wifi ke laptop, kemudian kami akan membawanya ke simpul gscam ROS dan mencari serta mengenali gambar kartu tarot dan botol saus tomat di sepanjang jalur robot EduMIP.
Ini adalah kelanjutan dari serangkaian artikel saya,
yang terakhir kami fokus pada kenyataan bahwa melalui gstreamer kami mengirim video ke laptop .
ROS memiliki paket yang dapat menerima video dari gstreamer, yang disebut gscam, berikut adalah
dokumentasi untuknya dan
kode sumbernya .
Kami memerlukan versi terbaru gscam dengan dukungan gstreamer-1.0, jadi kami akan menginstal dari versi terbaru dari kode sumber.
cd catkin_ws/src git clone https://github.com/ros-drivers/gscam cd .. catkin_make -DGSTREAMER_VERSION_1_x=On
Sekarang kita perlu membuat file peluncuran dan memasukkan perintah gstreamer di sana yang akan mengirim video ke ffmpegcolorspace.
-v udpsrc port=6666 ! application/x-rtp, encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! ffmpegcolorspace
File yang dihasilkan ~ / catkin_ws / src / gscam / example / streamc920.launch akan terlihat seperti ini:
<launch> <arg name="cam_name" value="creative_cam" /> <env name="GSCAM_CONFIG" value="-v udpsrc port=6666 ! application/x-rtp, encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! ffmpegcolorspace" /> <node pkg="gscam" type="gscam" name="$(arg cam_name)"> <param name="camera_name" value="$(arg cam_name)" /> <param name="camera_info_url" value="package://localcam/calibrations/${NAME}.yaml" /> <remap from="camera/image_raw" to="$(arg cam_name)/image_raw" /> </node> <node pkg="image_proc" type="image_proc" name="creative_image_proc" ns="$(arg cam_name)" /> <node pkg="image_view" type="image_view" name="creative_view" > <remap from="image" to="/$(arg cam_name)/image_raw" /> </node> </launch>
Sekarang jika kita jalankan:
roslaunch gscam streamc920.launch
Ini akan menerima aliran video dari kamera, sekarang di ROS kami memiliki video ini sebagai topik creative_cam / image_raw.
Dari salah satu pelajaran sebelumnya, kami akan memulai pencarian dan pengenalan gambar peta dengan mengubah topik:
rosrun find_object_2d find_object_2d image:=/creative_cam/image_raw
Anda dapat melihat hasil pengujian robot EduMIP pada trek improvisasi dalam video di awal artikel. Meski guncangan karena keseimbangan robot, gambar masih bisa dikenali, tetapi pada robot roda tiga atau roda empat, saya pikir semuanya akan jauh lebih baik.
Saya juga menghubungkan laptop ke router wifi twisted-pair dan menurunkan bitrate menjadi 1 Mbps dengan frame kunci sekali per detik, yang mengurangi penundaan transmisi video menjadi 0,2 detik.
gst-launch-1.0 uvch264src initial-bitrate=1000000 average-bitrate=1000000 iframe-period=1000 name=src auto-start=true src.vidsrc ! video/x-h264,width=160,height=120,framerate=30/1 ! h264parse ! rtph264pay ! udpsink host=192.168.1.196 port=6666

Bagi mereka yang ingin melihat robot secara langsung, pada 7 Juli saya akan berbicara dengan proyek
EduMIP di
DIYorDIE Meetup di Moskow.