Turtlebot2の制御

目的

ここまでに学んだことを生かし,Turtlebot2を自律移動するプログラムを実装します.シミュレータとの違いを確認しましょう.また,センサーを用いて障害物を検知し,回避するようなプログラムを実装します.アルゴリズムの検討から実装までを経験しましょう.

課題

本講義では課題を順番に解く形式で進めます.課題がどうしても解けない場合には,教員もしくはTAにアドバイスをもらってください.

Turtlebot2の台車に関するノード,トピックの確認

  1. turtlebot_teleopパッケージに含まれるkeyboard_teleop.launchを実行し,起動するノード,そのノードが配信,購読するトピックを確認しなさい.
  2. 1. で起動したノードが配信するトピックをrostopic echoにより購読しなさい.
  3. 2. で購読したトピックのメッセージの型及び中身を確認しなさい
  4. rostopic pubによりturtlebot2を前進させなさい

Turtlebot2の台車制御

  1. turtlebotの台車制御を行うためのパッケージを作りなさい.パッケージ名は自由とします.turtlebot2特有のトピックを配信,購読できるようにするために,パッケージを作成する際には依存パッケージとして「kobuki_msgs」を加えましょう.
  2. トピック通信によるturtlesimの制御」を参考に,サンプルプログラムを改良してturtlebotを動かしなさい.
  3. トピック通信によるturtlesimの制御」のサンプルプログラムにおけるtimerCallback関数を削除し,代わりにsetMoveVector関数をコンストラクタ内で実行しなさい.
  4. 3.で使用したプログラムのsetMoveVector関数における引数cntを20から100まで20ずつ増やし,turtlebotが前進する距離を計測しなさい.cntとturtlebotが前進した距離の関係をグラフにしなさい.
  5. turtlebot2で正方形の軌跡を描かせるプログラムを作成しなさい

バンパーを用いたセンシング

  1. turtlebot2のバンパーを押す / 離すをした際に配信されるトピックを確認しなさい.また,そのトピックの型及び中身を確認しなさい.
  2. turtlebot2のバンパーの状態をプログラムにより取得しなさい.なお,バンパー情報を購読するコールバック関数の引数の型は下記の通りです.

    const kobuki_msgs::BumperEventConstPtr&

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

  4. Turtlebot2が直進している間,障害物に接触したら,接触方向を検知し,逆の方向に回避するようなプログラムを作成しなさい.

スタートボタンと緊急停止ボタンの実装

  1. turtlebot2のB0,B1,B2ボタンを押す / 離すをした際に配信されるトピックを確認しなさい.また,そのトピックの型及び中身を確認しなさい.
  2. turtlebot2のB0ボタンを押したらロボットが直進,再度押したら停止するプログラムを作成しなさい.
  3. 2. のロボットが直進している際,turtlebotのLED1が点灯するプログラムを作成しなさい.なお,停止時には消灯するものとする.
注意点
  • 前回の演習時間の安全講習の内容を確認し,安全には気をつけて作業してください.
  • turtlebot2をプログラムで動かす前に,rostopic pubで速度を確認しましょう.
  • tutlebot2のバンパーには強い衝撃を与えないでください.