目的
ここまでに学んだことを生かし,Turtlebot2を自律移動するプログラムを実装します.シミュレータとの違いを確認しましょう.また,センサーを用いて障害物を検知し,回避するようなプログラムを実装します.アルゴリズムの検討から実装までを経験しましょう.
課題
本講義では課題を順番に解く形式で進めます.課題がどうしても解けない場合には,教員もしくはTAにアドバイスをもらってください.
Turtlebot2の台車に関するノード,トピックの確認
- turtlebot_teleopパッケージに含まれるkeyboard_teleop.launchを実行し,起動するノード,そのノードが配信,購読するトピックを確認しなさい.
- 1. で起動したノードが配信するトピックをrostopic echoにより購読しなさい.
- 2. で購読したトピックのメッセージの型及び中身を確認しなさい
- rostopic pubによりturtlebot2を前進させなさい
Turtlebot2の台車制御
- turtlebotの台車制御を行うためのパッケージを作りなさい.パッケージ名は自由とします.turtlebot2特有のトピックを配信,購読できるようにするために,パッケージを作成する際には依存パッケージとして「kobuki_msgs」を加えましょう.
- 「トピック通信によるturtlesimの制御」を参考に,サンプルプログラムを改良してturtlebotを動かしなさい.
- 「トピック通信によるturtlesimの制御」のサンプルプログラムにおけるtimerCallback関数を削除し,代わりにsetMoveVector関数を初期化メソッド内で実行しなさい.
- 3.で使用したプログラムのsetMoveVector関数における引数cntを20から100まで20ずつ増やし,turtlebotが前進する距離を計測しなさい.cntとturtlebotが前進した距離の関係をグラフにしなさい.
- turtlebot2で正方形の軌跡を描かせるプログラムを作成しなさい
バンパーを用いたセンシング
- turtlebot2のバンパーを押す / 離すをした際に配信されるトピックを確認しなさい.また,そのトピックの型及び中身を確認しなさい.
- turtlebot2のバンパーの状態をプログラムにより取得しなさい
- Turtlebot2が直進している間,障害物に接触したら,接触方向を検知し,逆の方向に回避するようなプログラムを作成しなさい.
スタートボタンと緊急停止ボタンの実装
- turtlebot2のB0,B1,B2ボタンを押す / 離すをした際に配信されるトピックを確認しなさい.また,そのトピックの型及び中身を確認しなさい.
- turtlebot2のB0ボタンを押したらロボットが直進,再度押したら停止するプログラムを作成しなさい.
- 2. のロボットが直進している際,turtlebotのLED1が点灯するプログラムを作成しなさい.なお,停止時には消灯するものとする.
注意点
- 前回の演習時間の安全講習の内容を確認し,安全には気をつけて作業してください.
- turtlebot2をプログラムで動かす前に,rostopic pubで速度を確認しましょう.
- tutlebot2のバンパーには強い衝撃を与えないでください.