Nesta instrução, enviaremos um fluxo de vĂdeo h264 codificado por câmera Logitech C920 transmitido do BeagleBone Blue via rede wifi para um laptop, depois o levaremos ao nĂł ROS gscam e procuraremos e reconheceremos imagens de cartões de tarĂ´ e uma garrafa de ketchup ao longo do caminho do robĂ´ EduMIP.
Esta é a continuação de uma série de meus artigos,
nos Ăşltimos focamos no fato de que, por meio do gstreamer, enviamos o vĂdeo para o laptop .
O ROS possui um pacote que pode receber vĂdeo do gstreamer, chamado gscam, aqui está a
documentação e o
cĂłdigo fonte .
Como precisamos da versĂŁo mais recente do gscam com suporte ao gstreamer-1.0, instalaremos a partir da versĂŁo mais recente do cĂłdigo-fonte.
cd catkin_ws/src git clone https://github.com/ros-drivers/gscam cd .. catkin_make -DGSTREAMER_VERSION_1_x=On
Agora, precisamos criar um arquivo de inicialização e inserir o comando gstreamer, que enviará o vĂdeo para ffmpegcolorspace.
-v udpsrc port=6666 ! application/x-rtp, encoding-name=H264 ! rtph264depay ! h264parse ! avdec_h264 ! videoconvert ! ffmpegcolorspace
O arquivo resultante ~ / catkin_ws / src / gscam / examples / streamc920.launch terá a seguinte aparência:
<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>
Agora, se o executarmos:
roslaunch gscam streamc920.launch
Ele receberá um fluxo de vĂdeo da câmera, agora em ROS, temos este vĂdeo como tĂłpico creative_cam / image_raw.
A partir de uma das lições anteriores, iniciaremos a pesquisa e o reconhecimento de imagens de mapas alterando o tópico:
rosrun find_object_2d find_object_2d image:=/creative_cam/image_raw
VocĂŞ pode ver o resultado do teste do robĂ´ EduMIP em uma faixa improvisada no vĂdeo no inĂcio do artigo. Apesar do tremor devido ao equilĂbrio do robĂ´, a imagem ainda pode ser reconhecida, mas em um robĂ´ de trĂŞs ou quatro rodas, acho que tudo ficará muito melhor.
TambĂ©m conectei o laptop a um roteador de par trançado wifi e reduzi a taxa de bits para 1 Mbps com quadros-chave uma vez por segundo, o que reduziu o atraso da transmissĂŁo de vĂdeo para 0,2 segundos.
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

Para quem quiser ver o robĂ´ ao vivo, no dia 7 de julho, falarei com o projeto
EduMIP no
DIYorDIE Meetup em Moscou.