イントロダクション
こんにちは、NTTコミュニケーションズ デジタル改革推進部 データドリブンマネジメント部門の有賀唯貴です!
現在、社内の同じ部署の浅野秀平さんと「でじかいロボット部」を立ち上げて同好会として非公式に活動しています!
今回は活動第一弾として、ROS(Robot Operating System)を使ったラジコン製作に取り組んだのでその内容を報告します。
※ でじかいロボット部は非公式な活動です。ただいま絶賛部員募集中です!
ROSとは
ROSとは、ロボットシステム構築を効率化するための共通機能を提供するオープンソースの基盤ソフトウエアです。
ロボットを開発するために便利で必要な機能や汎用な実装として
- モジュール・コンポーネント化のフレームワーク
- 再利用を重視する開発フレームワークで車輪を再開発しない
- モジュール間通信による分散処理
- センシング、モータ制御、画像処理、経路計算、音声認識、パラメータ管理等々、同時に影響しあいながら駆動し続ける必要があるプロセス間を矛盾なく同時に動作させる
- 物理的に分散したPC間でも分散処理・通信が簡単にできるので、IoTやクラウド技術との親和性も高い
- 複数言語対応
- C++, Python, java, Erlangなど
- 可視化シュミレータ
- 機体、周囲環境、センサ情報をGUIで可視化、GUI操作で指令
- 各種パラメータ管理GUI、CLI
- デバッグ、データの再生、プロット、ログ記録、起動
が標準で揃っており、オープンソースコミュニティでは
- 音声認識
- 画像処理(顔認識、感情認識、行動認識、物体認識など)
- 強化学習
などのAI,人工知能分野のロボティクス用モジュールや
- 自動車の自動運転システム、Autoware
- 移動ロボットの自律移動システム Navigation package
- ドローンの自動航行システム
- 制御・経路の自動計算ライブラリ群
- 二足歩行用自律移動システム
- 四足歩行用自律移動システム
などのカスタマイズ、インテグレーションされた汎用システムが公開されており、最新ロボット開発のデファクトスタンダードとなっています。 世は大ロボット時代!ROSやってないのお前だけです。
※現在(2022/10/20)はROS1からROS2への移行時期となっており、ここに載せている情報はROS1についての情報です。ROS2関連の最新動向はこれから追っていく予定です。
ROSによるラジコン制御
今回の全体図です。
PCからラジコン上のラズパイへ機体の速度と回転角を送信します。ラズパイはホイールの角速度を計算し、PMW信号を出してサーボモータを制御します。全体の接続をROSの機能を中心に実装します。
最初ラズパイとサーボモータの間にArduinoを挟むつもりでしたが、ラズパイが直接PWM信号を出せるのに途中で気づいて取り除きました。
車体の製作
車体はどこの家庭にもあるレーザー加工機を使い、3mm厚のアクリル板から切り出します。
図面と作成物は以下です
タイヤを固定する為の複雑な形状の部品は、秘密裏に持ち込んだ小型3Dプリンタを使って作ります。
強度が心配ですが、壊れてもすぐに作り直せるのが3Dプリンタのいいところです。
そのほか、使ったパーツは大体以下です。
Raspberry pi に元々ついてるPWM信号ピンをモーターに接続することで、モーターとラズパイを繋いでいます。参照
赤枠のピンをモータに繋ぎます。
メカナムホイールを使用した4輪駆動を採用したことで全方向への移動(前進後進、左右スライド、その場で回転、これら三つの成分の合成された「飛ぶ」以外のあらゆる方向・姿勢の移動)ができます。
制御ソフトウェアの開発
遠隔PCからの指令はx方向速度、y方向速度、z軸周りの回転角です。受け取った指令と下記のメカナムホイール4輪駆動モデルの逆運動方程式に従って、ホイールの角速度を計算します。(参照)
外部のPCと通信し、指令を受け取って上記の方程式からホイールの角速度を計算し、規格に合うようにモーターへPWM信号を送ることで、所望の移動をロボットに行わせています。このようなプログラムをROSのフレームワークで作成しました。
以下は構築したソフトウェア概要です。
完成品がこちら
フィードバック制御なしでこれはいい感じと思っていましたが、、、
何ということでしょうか!!!
机の上から落ちてバラバラになってしまいました!
おわりに
でじかいロボット部はAI・IoTに続く事業領域としてロボティクスをぶち上げるべく、これからも技術と既成事実を積み重ねていきます。 また、日々の業務の中でロボットのプロトタイプが必要になった際は、お気軽にロボット部までご相談ください。
※ でじかいロボット部は非公式な活動であり、デジタル改革推進部とはなんの関係もありません。