ROSの勉強 第9弾:システムの概要


#プログラミング ROS< システムの概要 >

はじめに

1つの参考書に沿って,ROS(Robot Operating System)を難なく扱えるようになることが目的である.その第9弾として,システムの概要などを中心にまとめる.

サブシステム

ポイント

複雑な機械もロボット1つ1つのサブシステムに分けて考えることで,非常に簡単に設計・解析することができる

大まかなカテゴリ

①アクチュエーション
②センシング
③コンピューティング

ROSでは,それぞれ次のようなものをいう.

①アクチュエーション

 ロボットの車輪や腕をどのように動かすかに直接かかわるサブシステム

②センシング

 センサのハードウェアと直接やり取りをするサブシステム
 (例)カメラ,レーザセンサなど

③コンピューティング

 アクチュエーションサブシステムとセンシングサブシステムとを結ぶもの

車輪の制御

スキッドステアリング

・3つ以上の車輪(一般的に4, 6)
・トレードオフがある

<利点>

 機構をシンプルに保ったまま(コストを制御したまま)で,最大の駆動力を提供する.

<欠点>

 まっすぐに前進あるいは後退していないときは,車輪の一部が常に横滑り(スキッド)する.

<まとめ>

 スキッドステアリングは,駆動力と障害物乗り越え能力は高いが,横滑りするのは非効率で,スリップやタイヤの摩耗を引き起こし得る.このように,すべての方向に対応できるわけではないものを非ホロノミック(non-holonomic)という.対して,ホロノミック(holonomic)はすべての方向に対応できるわけだが,これは方向を制御できる車輪メカナムホイールなどを使って実現できる.

ROSの設計目標の1つ

-----さまざまなロボットでソフトウェアを再利用できるようにすること-----
これに従い,移動プラットフォームとのやり取りには事実上常にTwistメッセージを使う
twistでは,3次元で線形と回転の速度を表現する.
これは移動ロボットをROSで扱っていく際に,非常に重要である!!

センサ

利便性と見た目の良さ,視線を作業空間の中心に保持するなどの理由より,ロボットがセンサヘッドをプラットフォームの一番上に持つことが多くある.センサヘッドとは,同じ筐体にいくつかのセンサを集約したものである.

以下では,センサとして視覚カメラと深度カメラについて簡単にまとめる.

視覚カメラ

・3次元情報を扱うほうが2次元のカメラ画像を扱うよりもロバストな場合が多い.
・多くのアルゴリズムでは,3次元データに興味があり,視覚データはほとんど無視されている.
・ステレオカメラ(2台のカメラで互いの視差を利用する)は有能とされているが,のっぺりとした壁のように変化(特徴)のないものでは測定が難しい.

⇒自然なアウトドアシーン(人工的でないもの)は,十分なテクスチャを持ち,測定はそこまで難しいとはされないが,整頓された屋内のシーンでの距離の予測は難しいとされている.

深度カメラ

・近赤外線などいろいろな方法でシーンを照らし,これにより,システムの性能を著しく向上させている
⇒これだとのっぺりとした壁でも測定可能となる.

・多くのデータを生成する
このデータは通常3次元点群(point cloud)の形式でsensor_msgs/PointCloud2でアクセスできる.3次元点群(point cloud)とは,カメラの向かいにある面を3次元の点で構成したものである.

シミュレータ

①Stage

・2次元のシミュレータの1例
・ROSの統合パッケージでラップされ,これによりROSからの速度コマンドを受け付け,移動量を出力する.また,シミュレータのロボットのレーザレンジファインダの値を得ることもできる.
・2次元であるため,計算の効率はよい.

②Gazebo

平面だけでは,あまり多くのことはできない ⇒ 3次元シミュレータが必要
ロボットの動作には主に移動操作がある.前者は2Dでも3Dでも扱うことは可能だが,後者は3次元の世界で用いる以上,3Dでないと困難である.

・操作のシミュレーションは,かなり複雑なシミュレータを必要とし,ロボットだけでなく,シーンにおける動くモデルの動力学を扱う.(剛体力学をよく利用する)

その他

ROSで利用できるシミュレータはさまざまなあり,ほかにはMORSEやV-REPなどがあるようだ.

感想

今回は次回以降から学ぶ実践的な内容の準備として,ROSのシステムなどをまとめておいた.これらについて理解しているのとしていないのとでは,これからの学習に大きな違いが生まれてくると学習しながら感じた.これでROSについてすべてをつかめるわけではないが,そのほか必要なことは,その都度学習できたらと思う.

参考文献

プログラミングROS Pythonによるロボットアプリケーション開発
        Morgan Quigley, Brian Gerkey, William D.Smart 著
                       河田 卓志 監訳
            松田 晃一,福地 正樹,由谷 哲夫 訳
                  オイラリー・ジャパン 発行