2
1

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.

ラズパイ上のROS2で圧縮した画像をPublishする

Posted at

はじめに

ROS2にて圧縮画像をPublishする記事に辿り着けなかったので備忘録として残します。
本記事では、ラズパイから圧縮した画像をPublishするための流れをはじめから順に追っていきます。

環境

・Raspberry Pi4
・Ubuntu20.04(PCとラズパイ双方)
・ROS2 foxy(PCとラズパイ双方)
・webカメラ

本記事では言及がない限り、ラズパイのターミナルで作業を行っています。

webカメラを認識させる

ラズパイにwebカメラを認識させるため、/boot/firmware/config.txtに以下の内容を追記します。

/boot/firmware/config.txt
start_x=1
gpu_mem=128

追記後、ラズパイを再起動させます。
webカメラを認識しているか確認するため、次のパッケージをインストールします。

sudo apt install v4l-utils

インストールのあと、以下のコマンドを実行します。

v4l2-ctl --list-devices

実行後、以下のような出力がされます。

$ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
	/dev/video10
	/dev/video11
	/dev/video12
	/dev/media1

bcm2835-isp (platform:bcm2835-isp):
	/dev/video13
	/dev/video14
	/dev/video15
	/dev/video16
	/dev/media0

mmal service 16.1 (platform:bcm2835-v4l2):
	/dev/video0

ここで、Cannot open device /dev/video0, exitingと出ていなければ認識されています。

画像をPublishするためのパッケージをインストールする

以下のコマンドを実行して非圧縮で画像をPublishするパッケージをインストールします。

sudo apt install ros-foxy-v4l2-camera

次に、ROS2で圧縮して画像を送信するためのパッケージをインストールします。

sudo apt install ros-foxy-image-transport
sudo apt install ros-foxy-image-transport-plugins

ラズパイから圧縮画像をPublishする

はじめに、以下のコマンドでラズパイから圧縮画像をPublishします。

ros2 run v4l2_camera v4l2_camera_node

実行すると、カメラのキャリブレーションを行うためのファイルが見つからないというエラーメッセージがでますが、
ひとまず無視して構いません。

topicを確認すると、圧縮画像がPublishされていることが分かります。
/image_raw/compressedというtopicが圧縮画像のメッセージです。

$ ros2 topic list -t
/camera_info [sensor_msgs/msg/CameraInfo]
/image_raw [sensor_msgs/msg/Image]
/image_raw/compressed [sensor_msgs/msg/CompressedImage]
/image_raw/compressedDepth [sensor_msgs/msg/CompressedImage]
/image_raw/theora [theora_image_transport/msg/Packet]
/parameter_events [rcl_interfaces/msg/ParameterEvent]
/rosout [rcl_interfaces/msg/Log]

圧縮画像をSubscribeする

次に、同一ネットワークにいるパソコンで圧縮画像を受け取ります。
パソコン側のターミナルで以下のコマンドを実行します。

ros2 run rqt_image_view rqt_image_view

すると、以下のように圧縮画像がSubscribeできていることが分かります。
Screenshot from 2022-02-28 19-03-22.png

配信周期の確認

圧縮前と後で、どの程度配信周期が変わったのか確認します。
初めに、圧縮前の周期を確認します。
ros2 topic hz image_raw/compressedというコマンドで確認できます。

圧縮前の配信周期
$ ros2 topic hz image_raw
average rate: 21.042
	min: 0.009s max: 0.143s std dev: 0.03588s window: 22
average rate: 22.968
	min: 0.009s max: 0.143s std dev: 0.02852s window: 47
average rate: 22.130
	min: 0.009s max: 0.145s std dev: 0.02956s window: 68
average rate: 21.363
	min: 0.009s max: 0.246s std dev: 0.03489s window: 88
average rate: 21.803
	min: 0.009s max: 0.246s std dev: 0.03334s window: 112
average rate: 21.399
	min: 0.009s max: 0.246s std dev: 0.03394s window: 132

次に、圧縮後の配信周期を確認します。
ros2 topic hz image_raw/compressedというコマンドで確認できます。

圧縮後の周期
$ ros2 topic hz image_raw/compressed
average rate: 29.964
	min: 0.014s max: 0.055s std dev: 0.01013s window: 32
average rate: 29.719
	min: 0.012s max: 0.057s std dev: 0.00996s window: 63
average rate: 29.966
	min: 0.012s max: 0.057s std dev: 0.01028s window: 94
average rate: 30.000
	min: 0.012s max: 0.057s std dev: 0.00937s window: 125
average rate: 29.997
	min: 0.012s max: 0.057s std dev: 0.00851s window: 155
average rate: 30.024
	min: 0.012s max: 0.057s std dev: 0.00797s window: 186

このように、圧縮を行うことで配信周期を向上させることができました。

参考

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?