12章Follow-bot(フォローボット)

これまでの数章では、ロボットを動かすところを中心に見てきました。ロボット台車を動かして移動したり、ロボットアームを動かして操作したりしました。これらのシステムのほとんどはフィードバックループを持たないオープンループのシステムと考えられます。すなわち、これらのシステムでは、時間とともに蓄積する誤差をセンサーのデータを使って修正していません。本章では、センサーを使ったクローズドループのシステムを作ります。このシステムは、さまざまな種類の誤差を減らすことを目的に、誤差を計算して、これを制御システムにフィードバックします。

カメラで地面の線を追跡しながら進むロボットを作るところから始めましょう。ここではOpenCVを使うことにします。OpenCVは人気のあるオープンソースの画像処理ライブラリです。このシステムを実現するには、次のステップを行う必要があります。

  • カメラから画像を取得して、OpenCVに渡す。
  • 画像にフィルターをかけて、追跡すべき線の中心を識別する。
  • ロボットの中心が線の中心から外れないようにロボットを操縦する。

これがクローズドループのシステムになります。つまり、ロボットは、線から外れるような操縦誤差を検出して、線の中心に戻るように進行方向を調整します。これまでと同様に、このアプリケーションは全部シミュレーションで開発します。最初に、ROSで画像を取得する方法について説明します。

12.1 画像を取得する

ROSでは、画像はメッセージ型sensor_msgs/Imageを使って送信されています。自分たちのノードで画像ストリームを使うには、画像を配信しているトピックを購読する必要があります。画像が送られているトピックとその名前は、ロボットごとに異なります。Turtlebotのシミュレーションを使って、トピック名を見つける方法について説明していきましょう。まず、3つのターミナルを開いてください。1つは ...

Get プログラミングROS ―Pythonによるロボットアプリケーション開発 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.