Turtlebotの制御

目的

プログラミングによりTurtlebotの台車及びバンパーを制御する方法を習得します.なお,本内容はチーム単位で取り組み,基本的には自習形式とします.

プログラムによるturtlebotの制御

turtlesimの制御を参考に,turtlebotの台車を制御しましょう.

問題

下記の問題について取り組んでください.なお,ワークスペース名は「turtlebot_ws」,パッケージ名は「turtlebot_practice」としてください.

1. 「トピック通信によるturtlesimの制御」のプログラムにおけるtimerCallback関数を削除し,代わりにsetMoveVector関数をコンストラクタ内で実行しなさい.

2. 1.で使用したプログラムのsetMoveVector関数における引数cntを20から100まで20ずつ増やし,turtlebotが前進する距離を計測しなさい.cntとturtlebotが前進した距離の関係をグラフにしなさい.

3. Turtlebotに正四角形の軌跡を描かせるプログラムを作成しなさい.

4. Turtlebotのバンパーの状態をプログラムにより取得しなさい.

5. Turtlebotが直進している際に障害物に接触した場合,異なる方向に移動するプログラムを作成しなさい.余力があれば,バンパーのどの部分に接触したかの情報を利用し,移動する方向を変えなさい.

注意点

1. 前回の演習時間の安全講習の内容を確認し,安全には気をつけて作業してください.

2. Turtlebotをプログラムで初めて動かす際は,低速度で動かしてください.プログラム内の値と速度の関係を把握した後に,適切な値を設定してください.

ヒント

1. turtlebotの台車をプログラムで制御することができない人は,下記を参考にしましょう.
次のコマンドを実行し,keyboard_teleop.launchで起動するノードとトピックの詳細をrosnode infoで確認しましょう.

roslaunch turtlebot_teleop keyboard_teleop.launch

2. 上記のコマンドを実行した際に,rostopic echoを用いて配信されるトピックを確認しましょう.
3. バンパー情報を購読するコールバック関数の引数の型は下記の通りです.

const kobuki_msgs::BumperEventConstPtr&

名前空間等の情報の詳細はこちらのページを参照してください.