ROSのチュートリアル

実行前の処理

 ROSのプログラムを動かすためには、Ubuntu起動後に端末を開いて、1回だけマスターであるroscoreを起動しておく必要があります。launchファイルを利用して起動する場合は、roslaunchがroscoreを自動起動してくれるので、起動しておく必要はありません。

$ roscore &

 他にも、環境変数の設定も行う必要がありますが、インストール時に.bashrcに記述しているため、このページでは行っていません。

亀(Turtlesim)を動かしてみる

 亀(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)を動かしてみる

 Turtlebot3は、ハードウェアの仕様が公開されているROS対応のロボットです。BurgerとWafflePiの2種類のロボットがあります。Burgerが約6.5万円、WafflePiが約17万円で購入することができます。
 Turtlebot3の良い所は、ハードウェア仕様が公開されてるだけでなく、ROS用のツールに対応したパッケージも提供されているところです。英語版ですが、詳しい電子マニュアルもあります。

 Turtlebot3を利用する場合、環境変数でTurtlebot3の種類を設定する必要があります。

$ export TURTLEBOT3_MODEL=burger

gazebo上で、Turtlebot3を動かしてみる

 ROSには、Gazeboと言う、実際のロボットを持たなくても実行できる、3次元シミュレーターがあります。このGazeboを使って、Turtlebot3を動かしてみます。

$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

 別の端末を開いて、キー操作用のコマンドを実行します。

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

 下記の画面で、キーボードの「w a s d x」キーで、Turtlebot3を動かすことができます。
 

rviz上で、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を動かすことができます。
 


Copyright (C) ASH Joe Masumura