はじめに
ROS の初心者が、とっても簡単なROSアプリを作ってみました。(連載記事です)
今回の記事の概要
- 以前の記事で定義したメッセージに従い画像ファイルを待ち受け、取得(Subscribe)した画像ファイルを指定ディレクトリに保存する ROS アプリを構築する
- 作成したソースファイルを GitHub に登録する
- 今回の記事に該当するソースファイルは、以下のアドレスから参照可能です
構築
関連パッケージ
-
画像データ取り扱いに関連して OpenCV を使用している
$ sudo apt install -y python-opencv ros-melodic-cv-bridge
ROS アプリ作成 : scripts/sub_photo.py
-
今回の記事のアプリソースファイルの作成
- 画像データ受信(=Subscribe)する
- 受信した画像データをファイルに保存する
-
以下(↓)は具体的な手順(下記例では、GitHubよりファイルを取得)
$ mkdir -p ${HOME}/ros_ws/src/picam_ros/scripts $ cd ${HOME}/ros_ws/src/picam_ros/scripts $ curl -s -o sub_photo.py https://raw.githubusercontent.com/higuchi-toshio-intec/example-picam/master/picam_ros/scripts/sub_photo.py $ chmod +x sub_photo.py
ソースファイルの主要部分説明
-
画像ファイルの待ち受け(Subscriber)
- トピック名称:example_picam_photo
- データ型:picam_photo
- Callback:save_photo
- 以下(↓)は対応する部分
def sub_photo(): rospy.init_node('sub_photo', anonymous=True) rospy.Subscriber('example_picam_photo', picam_photo, save_photo) rospy.spin()
-
Callback (メッセージ picam_photo が届いたら呼び出される処理)
- 引数の数:1
- データ型:picam_photo
- 以下(↓)は対応する部分
def save_photo(msg): print("[INFO] Call : save_photo") ### 以降省略 ### 画像ファイル作成などの処理 ###
GitHub への登録
-
作成したファイル全てを GitHub に登録
- clone 済みなので、add/commit/push を実行
- commit メッセージは、あとでどのような commit であるかわかるようにすると良い
-
以下(↓)は具体的な手順
$ cd ${HOME}/ros_ws/src/picam_ros $ git add . $ git commit -m 'CommitMessage' $ git push
-
念のため、ブラウザで以下のアドレスに接続し GitHub の登録状況を確認する
アプリ起動
- 以下(↓)は具体的な手順
$ cd ${HOME}/ros_ws
$ source /opt/ros/${ROS_DISTRO}/setup.bash
$ source devel/setup.bash
$ rosrun picam_ros sub_photo.py