ROSのプログラムを動かすためには、Ubuntu起動後に端末を開いて、1回だけマスターであるroscoreを起動しておく必要があります。launchファイルを利用して起動する場合は、roslaunchがroscoreを自動起動してくれるので、起動しておく必要はありません。
$ roscore &
他にも、環境変数の設定も行う必要がありますが、インストール時に.bashrcに記述しているため、このページでは行っていません。
亀(Turtlesim)は、ROSのチュートリアルの代表的なサンプルデータです。
下記のURLに詳しい説明があります。
turtlesimパッケージでは、2次元の亀をキーボードで動かすことができます。
ターミナルを開き、下記のコマンドを実行すると、亀が表示されます。
$ rosrun turtlesim turtlesim_node
次に、別の端末を開き、下記のコマンドを実行します。
$ rosrun turtlesim turtle_teleop_key
カーソルキーで、キーで亀を動かすことができます。
マウスカーソルが、起動したウィンドウ上にないと亀は動きません。
ここで、rqt_graphコマンドを使ってみます。
$ rqt_graph
すると、下記のような画面で、ROSの内部データをグラフィカルに表示できます。
teleop_tutleノードがキーボードの入力を受け付けると、turtlesimノードに、turtle1というトピックを送って通信していることが分かります。
ROSの内部データの詳細は、ROSコマンドを使って参照することができます。
rosnodeコマンドは、ROSのプログラムであるnodeの情報を表示できます。
$ rosnode list
/rosout
/teleop_turtle
/turtlesim
rostopicコマンドは、ROSの通信手段であるtopicの情報を表示できます。
$ rostopic list
/rosout
/rosout_agg
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose\
$ rostopic type /turtle1/cmd_vel
geometry_msgs/Twist
rosmsgコマンドは、topic通信で使われるメッセージの書式などの情報を表示できます。
$ rosmsg info geometry_msgs/Twist
geometry_msgs/Vector3 linear
float64 x
float64 y
float64 z
geometry_msgs/Vector3 angular
float64 x
float64 y
float64 z
rostopic echoコマンドでは、実際のメッセージの内容を表示できます。
turtle_teleop_keyの端末で、↑キーを押して、そのときのメッセージの内容を見てみます。
$ rostopic echo /turtle1/cmd_vel
linear:
x: 2.0
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.0
表示される情報量が多い場合は、grepコマンドなどで絞り込むことができます。
$ rosmsg list | grep turtlesim
turtlesim/Color
turtlesim/Pose
他にも、下記のコマンドなどで、ROSの内部データを参照することができます。
$ rosparam list
$ rosservice list
$ rossrv list
Turtlebot3は、ハードウェアの仕様が公開されているROS対応のロボットです。BurgerとWafflePiの2種類のロボットがあります。Burgerが約6.5万円、WafflePiが約17万円で購入することができます。
Turtlebot3の良い所は、ハードウェア仕様が公開されてるだけでなく、ROS用のツールに対応したパッケージも提供されているところです。英語版ですが、詳しい電子マニュアルもあります。
Turtlebot3を利用する場合、環境変数でTurtlebot3の種類を設定する必要があります。
$ export TURTLEBOT3_MODEL=burger
ROSには、Gazeboと言う、実際のロボットを持たなくても実行できる、3次元シミュレーターがあります。このGazeboを使って、Turtlebot3を動かしてみます。
$ roslaunch turtlebot3_gazebo turtlebot3_world.launch
別の端末を開いて、キー操作用のコマンドを実行します。
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
下記の画面で、キーボードの「w a s d x」キーで、Turtlebot3を動かすことができます。
Turtlebot3には、Fake Nodeという、実際のロボットを持たなくても実行できる、単純なシミュレーション用ノードがあります。この、Fake Nodeを使って、Rviz上で、Turtlebot3を動かしてみます。
$ roslaunch turtlebot3_fake turtlebot3_fake.launch
別の端末を開いて、キー操作用のコマンドを実行します。
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
下記の画面で、キーボードの「w a s d x」キーで、Turtlebot3を動かすことができます。