ROSを活用した自律移動型ロボットの開発
1.ROSの活用
ROSとは
ROSやROS2とはロボット制御ソフトのミドルウェアです。 特に自律移動型ロボットやロボットアーム用のソフトウェアが多く整っています。
例えば自律移動型ロボットの制御を行うには、SLAM (Simultaneous Localization and Mapping, 自己位置推定とマッピングの同時実行) の 機能が必須となっていますが、ROSにはいくつかのSLAMパッケージが公開されています。 さらに、地図情報の管理や、経路の計算、各種のグラフ表示ツール、そしてシミュレータなどといった、開発する上で必要となりそうなソフトの多くが用意されています。
それらを下図のように接続することで自律移動型ロボットの制御を構築することができます。各モジュール(node)は自由に入れ替えたり組み替えたりすることができます。
シミュレーション上での開発
自律移動型ロボットのように複雑なロジックのシステムは、 実機を使わずに事前にシミュレータ上でソフトウェアの開発を行うことが重要です。
実際の運用現場では試験できる時間が限られているため(数日間のみ等)、 現場でロボットを動かすまでにデバッグを終えてからでなければなりません。 ROS関連のソフトはもちろん、ユーザーインタフェース画面やクラウド等との連携等、 シミュレーション上で試験し尽くした後、実際の現場にロボットを持ち込みます。
シミュレーショの画面(gazebo)の一例を以下に示します。 左半分はショッピングモールを模したシミュレーション環境。 右半分はそのシミュレーション中に、自律走行アルゴリズムで持っている地図やセンサ情報を表示した画面です。 脚の細いテーブルを認識できるか、狭い通路幅でも通過できるか、途中に人や障害物があっても正しく動作(回避や一時停止)するか、カメラ等の視野範囲は十分か、 他のソフトとの連携は正しくできているか、などのチェックを行います。
受託開発でのテクノロードの役割(カスタマイズ性)
ロボット開発の経験のある人でしたら、ROSを使って自律移動型ロボットを 短期間でとりあえず動く程度、概ね完成度「60%」程度までは作れると思います。
しかし、実際に運用で使用できるようにするには、ROS関連のプログラムについても相当量の開発力が必要となります。 運用する環境(地形)によってセンサーやアルゴリズムを検討したり、状態遷移のプログラムの開発、経路や目的地の設定、地図の切り替え、進入禁止エリアの設定、各種状態の通知などが必要となります。 さらに、後に示しますようにROS以外でハード・電気・ソフト等など開発すべきことは多くあります。
テクノロードはこの残りの60%から100%に近づけるところのお手伝いをさせて頂いております。特にこの後に記す「ROS以外の開発要素」も含めて対応できるところを強みとしています。
そして、もう一つ重要な点はお客様のニーズに応じてカスタマイズできる点です。 中国製等の量産型の自律移動型ロボット等で十分な場合は単価が安いのでそれで良いかと思います。 一方、それらでは難しい場合、例えばセンサの位置を変更したいとか、カメラを追加したいとか、指定のサーバーとのみ連携させたいとか、と言った場合に、テクノロードのカスタマイズできる対応力がお役立てるかと思います。
ROS以外の開発要素(ハード・マイコン系)
自律移動ロボットの開発ではROSに注目が行きがちですが、それ以外の開発要素も多くあります。 テクノロードは、これまでに培った電気/機械/ソフト等一貫して開発できる強みを生かして、開発に取り組んでいます。
電源系
基本的にロボットの電源はバッテリより供給され、直接またはDC/DC変換等をして所望の電圧に変換して、各機器で使用されます。 自律移動型ロボットの電源系の設計では、さらに多く検討することがいくつかあります。例えば、逆起電力対策、PC系の電源ブチ切り対策、電磁ブレーキの解除方法、充電方法の簡易化、非接触充電等の検討、等々。 テクノロードは電気系の開発にも長い経験がありますので、様々な条件に対応することができます。
マイコン系・IO系
ロボットの仕様に応じ、適したマイコンボードが必要となります。 マイコンボードに求められる機能として、モーターとの通信(CANやRS485)、超音波センサ、バンパセンサ、フルカラーLEDテープ、小型LCDの表示等があります。 さらに、例えばバンパセンサ等は安全性・即時性が求められるため、PC(ROS)を介さずに、マイコンに入力してモータの停止制御等を行うなどといったことも必要となります。
テクノロードではこれまでに下記のような 自律移動型ロボット用のマイコンボード/ファームウェアを開発し、さらに改良し続けています。 これまでの自律移動型ロボットの開発で培った様々なノウハウが詰まっています。
ROS以外の開発要素(GUI/ネットワーク系)
自律移動型ロボットを運用する際には、一般的に上図のようなネットワーク構成となります。(Cloudを使用せずにローカルネットワークという構成もあります)
①操作画面
ロボットにユーザーインタフェース画面がある場合はその画面の開発も行っています。
基本的にブラウザアプリ(html5/javascript, websocket)として作成する場合が多いです。
ロボットとリアルタイムに通信し、センサーの値(下図では重量センサの値)表示や、異常時の画面切り替え等、インタラクティブに行えるように工夫しています。
②管理ユーザー用設定ソフト「Robot Planner2」
地図の作成や経路の設定などはROSのrviz等で可能ですが、ユーザー様にROS(Linux)の操作をして頂くのは敷居が高いです。設定ファイルやソフトウェアを壊してしまう可能性もありますので、基本的にユーザー様はROSを直接触らない構成が良いと考えています。
そこでテクノロードではWindows用ソフト「Robot Planner2」を開発し、ユーザー様が直接ROSを操作せずに簡単にロボットの地図作成や経路設定等の操作ができるようにしました。 当ソフトはWindowsPCにインストールし、ロボットと直接WiFi通信等で接続して使用します。 弊社で開発させて頂くロボットには、当ソフトを付属することが可能です。
Windowsアプリとしているのは、設定項目が多いため広い画面が欲しい、ローカル側に設定ファイルを保存したい、等々のご要望が多いためです。
③Colud
ロボットの運用を集中的に管理するためにCloudサーバー(Azure)を活用しています。 ロボットとの通信(IoT Hub, Functions)、動作ログの蓄積(Storage)、Webアプリやスケジュールの管理(App Service)、等を行っています。
④一般ユーザー用リモート監視ソフト
一般ユーザー用のリモート監視用ソフトも開発しています。②はユーザーの管理者が最初に経路を設定する際に使用するものですが、これは日常的に使用するもので、必要最低限の機能に制限されており、 ロボットの運航状況のモニタリングや、簡単な走行指令が出来るようになっています。 これはWebアプリ(html/javascript)で開発しています。限られた人のみ閲覧できるようアクセス制限なども行っています。
実績
これまでに多くの自律移動型ロボットの開発のお手伝いをさせて頂いています。 ここにはまだ掲載できない現在進行中のロボットも多数あります。
検討業務のみの案件も請けております。
- ROS2の評価:各機能の評価。SLAM用の各ソフトの評価など。
- 研究者向けコンサルテーション:ROSの基本的な使い方や、サンプルコードの作成。