メディア

ROSのAIエージェント「RAI」を使って自然言語でアームロボットを制御する生成AIで変わるロボット制御(後編)(1/4 ページ)

ロボット制御における生成AIの活用に焦点を当て、前後編に分けて解説する。後編では、ROSのAIエージェントライブラリ「RAI」の概要と、RAIを用いた生成AIによるアームロボット制御の事例を解説する。

» 2025年03月27日 07時00分 公開
[富士ソフトMONOist]

1.はじめに

 本稿では、ロボット制御における生成AI(人工知能)の活用に焦点を当て、前後編に分けて解説する。前編では、生成AIの概要とロボット制御への影響について解説し、ロボットOSであるROSにおける生成AIの活用の現状について述べた。今回の後編では、ROSのAIエージェントライブラリ「RAI」の概要と、RAIを用いた生成AIによるアームロボット制御の事例を解説する。

 前編でもお伝えした通り、AIエージェントとは、LLM(大規模言語モデル)を活用し、タスクを理解して適切なツールを選定し、それを実行するシステムのことである。LLM単体ではできなかった外部ツールの制御や、自然言語による動的な機能制御が可能となり、生成AIの活用の幅を広げることができる。

 今回紹介する生成AIによるロボット制御の事例は富士ソフトで検証を行った。ROSのAIエージェントライブラリのRAIに把持命令を与え、カメラからの情報を基にアームロボットの実機が物体把持を実行している。以下の動画は検証の様子を撮影したものである。自然言語で命令することによって、これまでプログラムで静的に行ってきた処理を、ロボットが動的に切り替えて制御できるというメリットがある。

ROSのAIエージェントライブラリ「RAI」を使用してアームロボットを操作する様子[クリックで再生] 出所:富士ソフト

 ここからは、まずRAIの概要を説明し、次にRAIを用いたロボット制御の検証環境や使用した技術などについて解説する。

2.AIエージェントライブラリ「RAI」

2.1. AIエージェントライブラリ「RAI」とは

 RAIは、2024年10月にリリースされた、ROS 2を基盤としたAIエージェントフレームワークだ。LLMによってアプリケーションを作成するフレームワーク「LangChain」を活用して実装されており、自然言語を入力として、トピックやサービス、アクションを送信するROS 2の基本的な機能や、VLM(Visual Language Model)による物体検出、デモアプリケーションに基づいたアーム制御および自律移動ロボット制御機能が実装されている。また、オプション機能として、音声入力機能やStreamlitを用いたWebブラウザ上でのチャットGUIなども用意されている。

 RAIのエージェントの主な構成は、LLM、Prompt、Toolの3つであり、動作デモとして実装されている汎用的なROS 2通信を行うROS2Agentを基に解説する。

2.1.1. LLM

 RAIにおける頭脳の役割にあたる部分で、ユーザーからのタスクを理解し、後述のToolを呼び出す。

 RAIでは使用できるLLMモデルをconfig.tomlで定義しており、現在はOpenAIのChatGPT、MetaのLlama、AnthropicのClaudeの3種に対応している。

2.1.2. Prompt

 RAIの役割や禁止事項などをまとめた文章で、AIエージェントの精度に関わる部分である。

 AIエージェントにはシステムプロンプトと呼ばれる、最初に与える指示事項をまとめた文章が必要になる。LLMは入力に応じた出力を行うため、どういった入力を与えるかが大事である。

 例えば、LLM単体でも、文章校正の際に“高校生にも分かりやすく修正”といった指示を与えるとより分かりやすい文章に修正され、“他社に送るビジネスメールの形式”という指示ではよりかしこまった文章に修正される。

 RAIにおいても行いたいことに合わせてシステムプロンプトを設定する必要がある。ROS2Agent内のコードでは“You are a ROS2 expert.”というシンプルなシステムプロンプトを使用している。しかし、他のデモではより詳細なシステムプロンプトが使用されており、行う内容が複雑になるほど詳細なプロンプトが求められる。

2.1.3. Tool

 LLMが利用する機能を定義したもので、ユーザーから入力されたタスクに応じてこのToolを実行する。

 ROS2AgentのToolはcli.py定義されており、ここでは各classにそれぞれROS 2のトピック、サービスおよびアクション通信を行う機能として、ツール名と使用方法、実行処理が記述されている。ROS2Agentは、LLMを用いて、引数として設定されたToolを定義しているclass内のdescriptionから使用方法を理解し、必要に応じて起動する。Pythonで定義されているため、ユーザーによるToolの追加も可能である。

リスト1 リスト1 Toolの一つであるROS2ServiceToolのコード。LLM用の使い方の定義や、実行処理が記載されている[クリックで拡大]

2.2. ROS2Agentの実行

 では実際にROS2Agentを実行し、RAIがどのような挙動を行うのかを見ていこう。

2.2.1. 環境構築

 環境構築の前に、RAIはLLMを使用するため、GPUを用いた環境が必要である。筆者が検証したスペックを表1に示しておく。

ユニット スペック
CPU Core i9-10900X
GPU Quadro RTX8000
RAM 64GB
OS Ubuntu 22.04
ROS ROS 2 Humble
表1 筆者が検証したスペック

 RAIは安定版としてリリースされている1.1.0を導入する。以下のコマンドでgitからRAI 1.1.0を任意のフォルダにダウンロードする。

$ git clone -b 1.1.0 https://github.com/RobotecAI/rai

 すると指定のフォルダ内に「rai」というフォルダが生成される。その後のセットアップ方法については「RAI」のGitHub内で公開されているドキュメントを参照していただきたい。

 LLMはRAIが対応しているかつ、無償で利用可能なLlamaを使用する。Llamaのセットアップ方法についてもLlamaを利用できるライブラリ「ollama」で公開されているドキュメントを参照していただきたい。

       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.