【ROS入門】ROSプログラミング:ROSでHello World
はじめに
・環境
Windows 10 Home 21H2
WSL2
Intel(R) Core(TM) i5-4200U CPU @ 1.60GHz
・ROS melodicのインストール
下記記事を参照のこと
kakepro.hatenablog.com
・ここでやること
ROSでプログラムを作成する際のワークフローを理解する
PythonでHello Worldする
ワークフロー
ROSの基本的なワークフローは
1.作業ディレクトリ(ワークスペース)の作成
2.ワークスペースの初期化
3.パッケージの作成
4.ビルド
である、と思う
$ mkdir -p ~/hello_ws/src
続いてワークスペースの初期化を行う
$ cd ~/hello_ws
$ catkin init
続いてパッケージを作成する
作成方法は下記の書式の通り
$ cd catkin_create_pkg <パッケージ名> [依存パッケージ1] [依存パッケージ2]
ここではhelloというパッケージを作成してみる
$ cd src/
$ catkin_create_pkg hello rospy
これでhelloという自作パッケージを作成できた
上で生成されたCMakeLIsts.txtはビルドシステムcatkinの設定ファイル、 package.xmlがパッケージの依存関係などを記述したファイルである
$ catkin build
ビルドしたhello_wsを有効化するため、設定ファイルの読み込みを行う
これは毎回必要
$ source ~/hello_ws/devel/setup.bash
先ほど自作したhelloパッケージで動かすソースコードをscriptディレクトリに記述する
$ mkdir ~/hello_ws/src/hello/scripts
$ vim ~/hello_ws/src/hello/scripts/hello_node.py
#Pythonのインタープリタを使用するためのシバン #!/usr/bin/env python #ROSでPythonを使うためのモジュールをインポート import rospy #ノードに"hello_node"という名前を付けて初期化 #ノードの名前は他のノードと重複してはいけない rospy.init_node('hello_node') #loginfo()は引数の文字列を標準出力および/rosoutトピックとして送信する rospy.loginfo('Hello World') #spin()は無限ループ(Ctrl-cで終了できる) #これを書いておかないと/rosoutに文字列を送信する前にノードが終了してしまう rospy.spin()
上のソースコードに実行権限を付与する
$ chmod +x ~/hello_ws/src/hello/scripts/hello_node.py
ここまで出来たら、もう一度ビルドして設定ファイルを読み込む
$ cd ~/hello_ws
$ catkin build
最後に、作成したソースコードを実行してみる
ノードの実行方法はrosrun パッケージ名 実行ファイル名である
新しいターミナルでroscoreを実行
$ roscore
さらに別のターミナルで下記を実行
$ cd ~/hello_ws
$ source ~/hello_ws/devel/setup.bash
$ rosrun hello hello_node.py
おしまい