この記事は私が金沢工業大学ロボティクス学科で担当している2018年度後学期開講の講義ロボットプログラミングⅡ用です。ROSでHellow Worldと表示するプログラムを作り、ビルドして実行してみましょう。この記事は以下のROS Wikiの記事を参考にしています。
———————–
1. ワークスペース(作業場所)の作成
これからROSでいろいろなプログラムを作っていきます。まずは、その作業用ディレクトリ(フォルダ)を作りましょう。ROSではこれをワークスペースとよびます。catkin_init_workspaceコマンドでワークスペースを作ります。以下のコマンドを実行してください。なお、先頭の$は入力を受け付けるコマンドプロンプトなので打つ必要はありません。
(1) セットアップする。なお、sourceコマンドはファイルに書かれたコマンドを現在のシェルで実行するコマンドです。
$ source /opt/ros/kinetic/setup.bash
(2) mkdirコマンドでディレクトリを作る。-pのオプションはcatkin_wsディレクトリをない場合はそれを作り、その中にsrcディレクトリを作ってくれる便利なオプション。なお、~はホームディレクトリの意味。
$ mkdir -p ~/catkin_ws/src
(3) cdコマンドでディレクトリを移動する。
$ cd ~/catkin_ws/src
(4) 次のコマンドでワークスペースを初期化する。
$ catkin_init_workspace
2. ビルドの方法
ROSではソースコードをビルドするときにcatkin_makeコマンドを使います。このコマンドを実行するときは~/catkin_wsにcdコマンドで移動しなければいけません。これはとても重要なので覚えておきましょう。
次のコマンドを実行してください。
$ cd ~/catkin_ws
$ catkin_make
実行後にlsコマンドを実行すると、buildとdevelディレクトリが新たに作成されていることがわかります。
3. 設定
ここで作成したcatkin_wsを有効にするためには以下のコマンドを実行する必要があります。
$ source ~/catkin_ws/devel/setup.bash
毎回、実行するのは面倒なので~/.bashrcの一番最後にテキストエディターgeditで、上のコマンドを付け加え保存しましょう。まず、geditがインストールされていない場合は次のコマンドでインストールしてください。
$ sudo apt install gedit
ホームディレクトリに移動します。
$ cd
次のコマンドでgeditを実行します。
$ gedit .bashrc
.bashrcの中にsource /opt/ros/kinetic/setup.bashがない場合は、上図赤枠のように2行追加してください。また、下から2行目のexport DISPLAYの行と1行目のGAZEBO_IPの行がない場合は、上図と同じに追記してください。
保存はgeditの上ツールバー右にある「Save」をクリックします。では、うまく設定されたか、次のコマンドで確認しましょう。
$ source .bashrc
$ echo $ROS_PACKAGE_PATH
つぎのように表示されたら成功です。
失敗した場合は、設定をもう一度実行してください。打ち間違えがないか注意しましょう。
4. パッケージの作成
準備ができたので早速、パッケージを作りましょう。パッケージは次のcatkin_create_pkgコマンドで作ります。依存パッケージはそのパッケージを作るために必要なパッケージです。
catkin_create_pkg <パッケージ名> [依存パッケージ1] [依存パッケージ2] [依存パッケージ3]
helloパッケージを作りましょう!
$ cd ~/catkin_ws/src
$ catkin_create_pkg hello roscpp
上手く作成できたか確認します。
$ cd ~/catkin_ws/src/hello
$ ls
CMakeLIsts.txt, include, package.xml, srcができていれば成功です。
package.xmlに作成者(maintainer)の情報などを書きます。ここでは省略します。ROS Wikiのpackage.xmlを参考にしてください。
5. ソースコードの作成とビルド
$ cd ~/catkin_ws/src/hello/src
$ gedit hello_node.cpp
エディタが開くので以下をソースコードを打ち込み「Save」をクリックして保存する。
~/catkin_ws/src/hello/CMakeLists.txtの134行目のadd_executableで始まる行と147~149行目のtarget_link_librariesで始まる3行のコメントを次のように外して保存する(つまり、#を消す)。
ビルドします。
$ cd ~/catkin_ws
$ catkin_make
6. 実行
以下のroscoreコマンドでMaster(マスター)を実行する。他のノードを実行する前に必要です。
$ roscore
ノードを実行するためにはrosrunコマンドを使います。使い方は次のとおり。
rosrun パッケージ名 実行ファイル名
別の端末を開き、rosrunコマンドでhello_nodeノードを実行する。
なお、hello_nodeは~/catkin_ws/devel/lib/hello/hello_nodeにcatkin_makeコマンドで作られたものです。
$ rosrun hello hello_node
次のように表示されたら成功。終わり。お疲れ様!
7.ホームワーク
- 次のROSチュートリアル(初級)をやろう!
コメント