はじめに
ROS の初心者が、とっても簡単なROSアプリを作ってみました。(連載記事です)
今回の記事の概要
- GitHub に、今回の記事用の repository を作成
- GitHub アカウントを必要とします
- 新規 ROS パッケージを作成
- 画像ファイルの受け渡しに使用するメッセージを定義
- 作成したソースファイルを GitHub に登録
- 今回の記事に該当するソースファイルは、以下のアドレスから参照可能です
使用環境
- Docker(ROS) 環境起動
$ sudo docker pull ros:melodic-ros-base
$ sudo docker run -dit --name hajimete_rdbox_ros --net host ros:melodic-ros-base
$ sudo docker exec -it hajimete_rdbox_ros /bin/bash
root@hajimete_rdbox_ros:/#
連載記事内共通情報
- ROS アプリのソースファイルは GitHub にて管理/共有しています
- ROS アプリによって、コンパイルおよび実行環境が異なる(amd64/arm)ため、GitHub を仲介してソースファイルを共有しています
GitHub に新規 repository 作成
- GitHub の使い方に関する説明は省略します
- 作成する repository 名は「picam_ros」
- 'Initialize this repository with a README' にチェックを入れておくと良い
GitHub から clone/pull
- 必要に応じて、GitHub から clone や pull します
$ mkdir -p ${HOME}/ros_ws/src
$ cd ${HOME}/ros_ws/src
$ git clone https://github.com/YourGitHubAccount/picam_ros.git
# 以下は clone 済みの場合
$ cd ${HOME}/ros_ws/src/picam_ros
$ git pull
構築
ROS パッケージ作成
-
パッケージ作成
- パッケージ名は「picam_ros」
- 関連パッケージ
パッケージ名 説明 roscpp c++用パッケージ rospy python用パッケージ std_msgs 基本的なデータ型用メッセージ形式 sensor_msgs 画像を含むセンサー類のメッセージ形式 -
以下(↓)は具体的な手順
- 実行後、${HOME}/ros_ws/src/picam_ros ディレクトリ以下にファイルが作成される
$ cd ${HOME}/ros_ws/src
$ catkin_create_pkg picam_ros roscpp rospy std_msgs sensor_msgs
msg/picam_photo.msg
- 今回の一連の記事で使用する ROS メッセージの定義ファイルの作成
- 以下の情報を含むメッセージとする
- 撮影日時情報
- 撮影端末識別情報
- 画像データ
- ROS アプリ(sub_photo.py および take_pub_photo.py)で使用する
- 以下(↓)は具体的な手順(下記例では、GitHubよりファイルを取得)
$ cd ${HOME}/ros_ws/src/picam_ros
$ mkdir msg
$ cd msg
$ curl -s -o picam_photo.msg https://raw.githubusercontent.com/higuchi-toshio-intec/example-picam/master/picam_ros/msg/picam_photo.msg
CMakeLists.txt
- 自動作成された CMakeLists.txt を ROS アプリ picam_ros 用に修正(修正箇所は diff で確認)
- 新たにメッセージ型を作成するため message_generation の記述を追加、generate_messages 関連の記述を有効化
- 新たなメッセージ型として picam_photo.msg の記述を追加
- パッケージの依存関係の記述を有効化
- 以下(↓)は具体的な手順(下記例では、GitHubより修正済みファイルを取得)
$ cd ${HOME}/ros_ws/src/picam_ros
$ mv CMakeLists.txt CMakeLists.txt.orig
$ curl -s -o CMakeLists.txt https://raw.githubusercontent.com/higuchi-toshio-intec/example-picam/master/picam_ros/CMakeLists.txt
$ diff -up CMakeLists.txt.orig CMakeLists.txt
catkin_make
-
コンパイル実行
- 実行コマンドは catkin_make
- 「catkin_make: command not found」となった場合は、以下のコマンドを実行
$ source /opt/ros/${ROS_DISTRO}/setup.bash
以下(↓)は具体的な手順
$ cd ${HOME}/ros_ws/
$ catkin_make
GitHub への登録
- 作成したファイル全てを GitHub に登録
- clone 済みなので、add/commit/push を実行
- commit メッセージは、あとでどのような commit であるかわかるようにすると良い
- 以下(↓)は具体的な手順
$ cd ${HOME}/ros_ws/src/picam_ros
$ git add .
$ git commit -m 'CommitMessage'
$ git push
- 念のため、ブラウザで以下のアドレスに接続し GitHub の登録状況を確認する