Dans cette instruction, nous enverrons un flux vidéo h264 codé par caméra Logitech C920 transmis depuis BeagleBone Blue via un réseau wifi à un ordinateur portable, puis nous le porterons au nœud gscam ROS et rechercherons et reconnaîtrons des images de cartes de tarot et d'une bouteille de ketchup le long du chemin du robot EduMIP.
Il s'agit d'une continuation d'une série de mes articles,
dans le dernier nous nous sommes concentrés sur le fait que via gstreamer, nous avons envoyé la vidéo à un ordinateur portable .
ROS a un paquet qui peut recevoir de la vidéo de gstreamer, qui s'appelle gscam, voici sa
documentation et le
code source .
Nous avons besoin de la dernière version de gscam avec le support de gstreamer-1.0, nous allons donc installer à partir de la dernière version du code source.
cd catkin_ws/src git clone https://github.com/ros-drivers/gscam cd .. catkin_make -DGSTREAMER_VERSION_1_x=On
Maintenant, nous devons créer un fichier de lancement et y entrer la commande gstreamer qui enverra la vidéo à ffmpegcolorspace.
-v udpsrc port=6666 ! application/x-rtp, encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! ffmpegcolorspace
Le fichier résultant ~ / catkin_ws / src / gscam / examples / streamc920.launch ressemblera à ceci:
<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>
Maintenant, si nous l'exécutons:
roslaunch gscam streamc920.launch
Il recevra un flux vidéo de la caméra, maintenant dans ROS, nous avons cette vidéo comme sujet creative_cam / image_raw.
À partir d'une des leçons précédentes, nous allons commencer la recherche et la reconnaissance d'images de carte en changeant de sujet:
rosrun find_object_2d find_object_2d image:=/creative_cam/image_raw
Vous pouvez voir le résultat du test du robot EduMIP sur une piste improvisée dans la vidéo au début de l'article. Malgré les tremblements dus à l'équilibre du robot, l'image est toujours reconnaissable, mais sur un robot à trois ou quatre roues, je pense que tout ira beaucoup mieux.
J'ai également connecté l'ordinateur portable à un routeur wifi à paire torsadée et abaissé le débit à 1 Mbps avec des images clés une fois par seconde, ce qui a réduit le délai de transmission vidéo à 0,2 seconde.
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

Pour ceux qui veulent voir le robot en direct, le 7 juillet, je parlerai du projet
EduMIP au
DIYorDIE Meetup à Moscou.