3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

動画をROSで送信

Last updated at Posted at 2021-09-11

1.概要

動画をROSメッセージとして送信したいと思い、方法を調べたところvideo_stream_opencvというパッケージでそのようなことができることが分かりました。
ここでは、このパッケージを使って動画をROSメッセージで送信する方法を説明します。

2.パッケージのインストール

sudo apt install ros-noetic-video-stream-opencv

3.使い方

このパッケージには,mp4 fileを送信するためのlaunchが用意されていてその中身は次のようになります。

これを見ると,camera.launchの引数のvideo_stream_providerにファイル名を入れることで動画が出力できることが分かる。

他にも

visualize=true : gui上に動画出力
loop_videofile : videoを繰り返し再生

等の設定ができます。

/opt/ros/noetic/share/video_stream_opencv/launch/video_file.launch
<?xml version="1.0"?>
<launch>
   <!-- launch video stream -->
   <include file="$(find video_stream_opencv)/launch/camera.launch" >
        <!-- node name and ros graph name -->
        <arg name="camera_name" value="videofile" />
        <!-- full path to the video file -->
        <!-- wget http://techslides.com/demos/sample-videos/small.mp4 -O /tmp/small.mp4 -->
        <arg name="video_stream_provider" value="/tmp/small.mp4" />
        <!-- set camera fps to (video files not affected) -->
        <!-- <arg name="set_camera_fps" value="30"/> -->
        <!-- set buffer queue size of frame capturing to -->
        <arg name="buffer_queue_size" value="1000" />
        <!-- throttling the querying of frames to -->
        <arg name="fps" value="30" />
        <!-- setting frame_id -->
        <arg name="frame_id" value="videofile_frame" />
        <!-- camera info loading, take care as it needs the "file:///" at the start , e.g.:
        "file:///$(find your_camera_package)/config/your_camera.yaml" -->
        <arg name="camera_info_url" value="" />
        <!-- flip the image horizontally (mirror it) -->
        <arg name="flip_horizontal" value="false" />
        <!-- flip the image vertically -->
        <arg name="flip_vertical" value="false" />
        <!-- enable looping playback -->
        <arg name="loop_videofile" value="true" />
        <!-- start frame of video -->
        <arg name="start_frame" default="0"/>
        <!-- stop frame of video, -1 means the end of video -->
        <arg name="stop_frame" default="-1"/>
        <!-- visualize on an image_view window the stream generated -->
        <arg name="visualize" value="true" />
   </include>
</launch>

4.実行

4.1サンプルの動画を再生

サンプル動画を再生します。

まず動画をダウンロードします。

wget http://techslides.com/demos/sample-videos/small.mp4 -O /tmp/small.mp4

そして実行します。

roslaunch video_stream_opencv video_file.launch

するとサンプルの動画が再生されます。

Screenshot from 2021-09-11 16-34-25.png

4.2オリジナルの動画を送信

次にオリジナルファイルを再生する場合です。

この場合はcamera.launchを使用します。

video_stream_providerのファイル名はご自身のものに合わせていただき、次のように実行します。(※ファイル名は絶対パスを入れることに注意が必要です)

# GUI表示あり
roslaunch video_stream_opencv camera.launch video_stream_provider:=/home/hoshina/Downloads/sample-5s.mp4 visualize:=true loop_videofile:=true

# GUI表示なし
roslaunch video_stream_opencv camera.launch video_stream_provider:=/home/hoshina/Downloads/sample-5s.mp4 loop_videofile:=true

すると次のようにGUI上に動画が再生され、ros imageとしても出力されました。

Screenshot from 2021-09-11 15-30-06.png

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?