ROSのAIエージェント「RAI」を使って自然言語でアームロボットを制御する:生成AIで変わるロボット制御(後編)(4/4 ページ)
ロボット制御における生成AIの活用に焦点を当て、前後編に分けて解説する。後編では、ROSのAIエージェントライブラリ「RAI」の概要と、RAIを用いた生成AIによるアームロボット制御の事例を解説する。
3.2.2. RAIのTool
MoveToPointTool:
MoveToPointToolは、RAIに実装されているアームロボットを制御するためのTool。座標と把持動作の情報を/manipulator_move_toというService通信で送るもので、通信を受け取ったService側でロボットを動かす処理は別途作成が必要になる。
そのため、今回Service通信を受け取り、MoveIt2を使用して、該当座標へ動かすServiceノードを新たに作成した。
GetObjectPositionsTool3D:
検証に当たり、新たに作成したToolで、カメラから得られた情報をVLMに送り、そこで把持対象物の位置を取得、物体位置から把持座標を計算する処理を行っている。
3.2.3. VLM
RAIに実装されているVLMによる物体認識機能で、画像とテキストから画像上の物体の位置をバウンディングボックス情報で出力する「Grounding DINO」というモデルが使用されている。
ROS 2 Serviceノードとして実装されており、検出対象物体名と画像を入力としてService通信を送ると、VLMによる認識結果が対象のバウンディングボックス情報として出力される。
3.2.4. RAIからのROS 2のアーム制御部分
今回使用したアームロボットのCOBOTTAは公式から提供されているライブラリ「denso_robot_ros2」を使用することで、ROS 2のMoveIt2を活用したロボット制御が可能となる。ただし、このパッケージではハンド制御は非対応であるため、Python APIでのハンド制御命令で対応を行った。RAI側から出力された座標情報を受け取ると、このライブラリを使用したプログラムが動的にロボットを制御処理するプログラムを作成している。
3.3. 動作
冒頭で紹介したロボットが把持を行っている動画は、上記の構成で行った検証を撮影したものである。
入力されたタスクを基にロボットが黒い消しゴムの把持をしたり、指定位置で把持を止めて離したり、別の色の消しゴムを把持したりという動作ができていることが分かる。はじめに入力されたタスクをRAIがどのように処理しているかを解説する。
入力されたタスクは“grab a black eraser.”で黒い消しゴムを把持するという内容だ。RAIは下記の順序で実行する。
- LLMを使用してタスクを理解
- GetObjectPositionsTool3Dを起動。VLMの「Grounding DINO」よりblack eraserという検出対象名を、カメラ画像から対象物体のバウンディングボックス情報を取得。カメラの深度情報と合わせて把持座標を計算
- MoveToPointToolを起動。2で取得した座標情報とGraspという把持動作をService通信として送信
- 通信を受け取ったMoveIt2の制御プログラムで「COBOTTA」を制御し、把持を実行
その後に入力した命令についても同様にLLMがタスクを理解し、動的に必要な機能を起動している。
3.4. 検証での課題
RAIを用いた実機検証により、実際に物体把持が可能であることを確認したが、この検証中に幾つかの課題が見られた。
3.4.1. Llamaでの実行精度
命令の実行時に物体座標が不明な場合に、ランダムな座標に移動したり、存在しないToolを呼び出そうとしたりするなど、誤作動が発生することがあった。システムプロンプトの調整で改善が見られたが、完全には解決できていない。より高性能なLLMであるChatGPTのAPIを使用すると、より精度が改善される可能性が考えられる。
3.4.2. RAIのドキュメント不足
RAIのドキュメントは、サンプルコードが提供されているものの、Toolの作成やカスタマイズに関する詳細な説明が不足している。そのため、今回の検証で作成した新規Toolは既存コードからの処理を読み取り、試行錯誤での作成となった。ロードマップには開発者向けSDK(ソフトウェア開発キット)を提供予定との記載があり、今後のドキュメントの充実が期待される。
4.まとめ
ChatGPTの登場を契機に、社会では生成AIの需要が高まり、ロボット制御などのビジネス分野にも広く活用されるようになってきた。
今回は、ROS 2のAIエージェントライブラリであるRAIの概要と生成AIを活用したアームロボット制御の事例を紹介した。RAIはリリースされたばかりで発展途上ではあるが、ROSを通じて自然言語によるロボット制御の可能性が分かってきた。RAIは頻繁に更新されているため、今後のさらなる成長が見込まれる。
生成AIは今後も発展を続け、ロボット開発をはじめ社会においてさらに大きな影響を与えるであろう。(連載完)
筆者プロフィール
富士ソフト AI・ロボット開発 R&Dチーム
富士ソフトでAI・ロボット開発の調査研究を主務として、最新技術の調査・社内外へのセミナー等に対応し、AI・ロボット開発の最新技術の習得および普及のため活動している。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- ≫連載「生成AIで変わるロボット制御」バックナンバー
- ≫連載「ROSの進化とデジタルツインの可能性」バックナンバー
- ≫連載「ROSを使ってロスなくロボット開発」バックナンバー
ロボットに生成AIを適用すると何ができるのか、課題は何なのか
ロボット制御における生成AIの活用に焦点を当て、前後編に分けて解説する。前編では、生成AIの概要とロボット制御への影響について解説し、ROSにおける生成AI活用の現状について述べる。進化を止めないROSは「ROS 2」への移行を加速、デジタルツイン対応も進む
ロボットプラットフォームとして知られる「ROS」の需要が高まり続けている。本稿では前後編に分けて、ROSの進化とデジタルツインの可能性について考察する。前編では、ROSの最新動向とデジタルツインへの対応状況について紹介する。ROS 2を用いたロボットの実機とシミュレーションによるデジタルツイン連動の実践
ロボットプラットフォームとして知られる「ROS」の需要が高まり続けている。本稿では前後編に分けて、ROSの進化とデジタルツインの可能性について考察する。後編では、ROSのデジタルツイン活用の事例として、ROS 2を実装したロボットの実機とシミュレーションの連動について紹介するロボット開発プラットフォーム「ROS」はどのように進化してきたのか
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、ROSがオープンソースソフトウェアとしてどのように進化してきたのについて紹介する。ROSとシミュレーターの連携が生み出す新たな可能性
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、「ROSの活用シーンとしてのシミュレーターとの連携」をテーマに、ロボット開発におけるシミュレーターの重要性や、ROSと連携可能なシミュレーターなどについて解説する。ROSとフォトリアルなシミュレーター「Isaac Sim」を連携させる
ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、「ROSとシミュレーターの組み合わせ事例」をテーマに、ROSとフォトリアルなシミュレーター「Isaac Sim」の連携について具体的な手法を紹介する。