本ページでは,安川電機の産業用ロボットである,MOTOMAN-GP8をROS2で利用するための環境構築方法について示す.
なお、以降の検証は下記の環境で行っている.
- ROS2: Humble
- OS : Ubuntu 22.04
- PC :Let’s note
- Zipファイル:MotoROS2 0.1.3
- 対象ロボット:MOTOMAN-GP8 (YRC1000micro)
MOTOMANをROSから利用するためのパッケージ
- MotoROS2(YASKAWA公式)
- Motoman ROS2対応 ロボットモデルパッケージ(ROS 1で使われていたMOTOMANパッケージをROS 2に移植したもの)
- MOTOMAN-GP8(以降GP8)をROS2とMoveItで動かすためのパッケージ
本ページの資料では,上記のページを参考にしている.
なお,不具合などがあった場合は適宜issueやpull requestしていくことで,コミュニティの活性化につながるので,積極的に行うことが望ましい.
セットアップ全体の流れ
- PCのセットアップ
- ペンダントへのROS2のためのファームウェアの書き込み
- GitHubからロボットモデルを取得(URDFやxacro)GP8などのモデルや設定ファイルを作成.(GP8モデルがリポジトリに存在するため省略)
- MoveItの設定(Rviz).MoveIt Setup Assistantを使って設定を作る.Rvizなどでシミュレーションも可能.
- MotoROS2(MotoPlusアプリ)のインストールと設定MotoROS2をダウンロードし,YRC1000microにインストール.YAMLファイルで通信や関節名などを設定.
- 実機での動作MoveItで作った軌道を実機で動かす.
以下に,それぞれの流れについて詳細を示す.
PCの環境構築(ROS2 Humble)
下記のページを参照に,ROS2のインストールを行う.ここでは,ROS2のHumbleを利用するものとする.
Ubuntu22.04におけるROS2 Humbleの環境構築 | ロボットシステムデザイン研究室
このページの通り環境構築を行うことができたら,以下の通り行う.
sudo apt install git git clone https://github.com/YaskawaEurope/ros2-starter-for-yaskawa-robots cd ros2-starter-for-yaskawa-robots/ sudo apt install ros-humble-moveit ros-humble-ros2-control ros-humble-controller-manager ros-humble-ros2-controllers ros-humble-joint-state-broadcaster rosdep install --from-paths src --ignore-src -y cd src/ && git clone https://github.com/yaskawa-global/motoros2_interfaces git clone -b ros2 https://github.com/yaskawa-global/motoros2_interfaces git clone -b ros2 https://github.com/gavanderhoorn/motoman git clone https://github.com/Yaskawa-Global/motoros2 cd src/motoman_resources/ rm -rf motoman_resources/ cd ../../ colcon build --symlink-install |
なお,opencv-pythonに関するエラーが出た場合は,gp8_interface/dev_opencv_py の package.xml から「
また,motoros2_interfacesに関するエラーが出た場合は,motoros2_interfaces /ros2-starter-for-yaskawa-robots/src のフォルダにおいて以下のようにする.
git clone https://github.com/yaskawa-global/motoros2_interfaces.git |
dockerコンテナ利用のための環境構築
agentの実行には,colconとdockerによる環境構築がある.colconの場合,ROS 2 Humbleには fastcdr の1.x系パッケージのみ対応のため,micro-ROS
Agentが依存するv2系とはバージョンが合わない.(2025年3月時点)
そこで,ここではdockerコンテナを用いる方法について示す.
sudo apt install -y docker.io sudo usermod -aG docker $USER docker pull microros/micro-ros-agent:humble groups $USER sudo usermod -aG docker $USER su - $USER |
ロボットの起動
ros2 launch moveit_resources_moto_moveit_config sim_start.launch.py |
以下のような画面が表示されれば成功.
ただし,もし起動できない場合は,moveit_resources_moto_moveit_config フォルダがどこにあるか確認する.
【例】ros2-starter-for-yaskawa-robots フォルダの install と build に moveit_resources_moto_moveit_config がある場合は,以下のコマンドを実行する.
source ~/ros2-starter-for-yaskawa-robots/install/setup.bash |
ティーチングペンダントへのファームウェアの書き込み
YRC1000microに接続されているティーチングペンダントへのファームウェアなど書き込みを行う.
- 以下のリンクから対象コントローラのリリースZIPをダウンロード.GP8&YRC1000microなら,下記をダウンロードする.
zipファイルのダウンロード - zipファイルの中にある以下の3ファイルをUSBメモリ(またはSDカード)の直下に保存する.
- mr2_yrc1m_h.out(アプリ本体バイナリ YRC1000microのhumble用)
- motoros2_config.yaml(設定ファイルros2-starter-for-yaskawa-robotsパッケージ内にあるyamlファイルを利用)
- INIT_ROS.JBI(GP8であれば,”motoros2_0.1.3_yrc1000u_humble/robot_jobs/single_arm“内のジョブファイルを利用)
なお,motoros2_config.yamlについては204行目のコメントアウトを外すこと
参考ページ
メンテナンスモードでアプリケーションをロード
作業前にロボットのコントローラ(YRC1000micro)の電源をOFFにする.
- ペンダントの”メインメニュー”を押したまま電源ON(10秒)まち,メンテナンスモードに入る.
- ティーチングペンダントを以下のように操作する.
- 【システム情報】から【セキュリティ】を選択しセキュリティレベルを「9(管理者)」に昇格させる.
- 【設定】から【オプション機能】を選択し,以下のように設定する.
- MotoPlus機能を選択し「使用する(USED)」に設定
- MOTOMAN DRIVERを選択肢「使用する(USED)」に設定
- 【MotoPlusアプリ】 メニューを選択し,以下のように設定
- 【装置】からUSBメモリまたは SDカードを選択
- 【ロード】から”mr2_yrc1m_h.out”を選択→”エンタ”でファイルをロード
- 【ファイル一覧】から他のMotoPlusアプリが入っていないことを確認(入っている場合は消去する)
*.outファイルが複数ある場合は,【MotoPlusアプリ】→【消去】消したいファイルを選択し消去する.
通常モードで再起動し,yamlファイルの読み込み
- ロボットコントローラ(YRC1000micro)の電源を一旦OFFし,再起動し,(管理or編集モード)を選択
- 【外部記憶】から【ロード】を選択した上で,【ユーザ定義ファイル】を”選択”
- motoros2_config.yamlを選択し,ファイルのロード
通常モードで再起動し,ジョブファイルの読み込み
- コントローラをOFFし,起動(管理or編集モード)
- 【外部記憶】から【ロード】を選択し,その後【ジョブ】を選択
- INIT_ROSを選択し,ロード(INIT_ROSをROS1環境構築時にロードしている場合必須.)
- ペンダントをティーチングモードに変更し,【ジョブ】から【ジョブ一覧】で「INIT_ROS」を選択する.
- ペンダントのメニューエリアにある【ジョブ】から【ジョブ消去】を選択する.
通常モードで再起動し,パラメータの設定
- アラーム「8003」(通信設定が未完了によるエラー)が出る
- 再度【システム情報】から【セキュリティ】を選択肢,セキュリティレベルを「9(管理モード)」に設定する.
- 【パラメータ】から【S2C】を選択し,次のパラメータ変更一覧にある情報を変更する.
【パラメータ変更一覧】
パラメータ | 値 | 備考 |
---|---|---|
S2C541 | 0 | 通信関連 |
S2C542 | 0 | 通信関連 |
S2C1102 | 2 | RT通信用 |
S2C1104 | 2 | RT通信用 |
S2C1250 | 1 | ROS2との接続許可 |
S2C1402 | 3 | 通信ポートの指定 |
実機への接続方法
ロボットコントローラとPCの接続はクロスケーブルを用いて直接接続、またはルータを介して接続する.なお,ここではクロスケーブルを用いる場合を示す.
- 自分のPCのIPアドレスが192.168.255.2に設定(ここは192.168.255.1でなければよい).
- ペンダントがリモートモードかつ緊急停止モードが押されてないことを確認する.
- 実機の電源を入れる.
- ペンダントの画面が初期画面になる
- 作成したlaunchファイルを立ち上げる
上記の設定を終えたらMOTOMANの設定は終了.
続いて,以下のようにしてDockerを起動し,ロボットを立ち上げると画像のようになる.
sudo docker run -it --rm --net=host microros/micro-ros-agent:humble udp4 --port 8888 ros2 launch moveit_resources_moto_moveit_config xy_start.launch.py |
続いてサーボをONにするために、以下のコマンドを実行する.なお,正しくコマンドが実行されると「カチッ」と音が鳴る.
ros2 run cpp_pubsub enable_client |
サーボがONになると,Rviz画面で,「Query Goal State」(アーム先端についているボールのようなもの)をドラッグすると手先位置や姿勢を決めることができる.目標位置・姿勢が決まった後で,[Plan and Execute]を実行すると,実機とロボットモデルが動作する.
ROS1への戻し方(ペンダント設定のみ)
以下にROS2の設定からROS1に戻したい場合の手順について示す.
ペンダントの設定(YRC1000micro)の変更
以下のような手順でペンダントの設定を行う.
- 以下のリンクから対象コントローラのリリースファイルをダウンロード(GP8&YRC1000microなら,”MotoRosYRC1u_1912.out”)
ダウンロード - ダウンロードしたファイルより,以下の3つのファイルをUSBメモリ直下に保存する.
- MotoRosYRC1u_1912.out (アプリ本体バイナリ YRC1000micro用)
- IONAME.DAT (I/Oネーム定義ファイル)
- INIT_ROS.JBI (GP8&YRC1000microであれば,motoman の”
motoman/motoman_driver/Inform/DX200, FS100,YRC1000/single_arm/内のジョブファイルを利用)
メンテナンスモードでアプリケーションをロード
作業前にコントローラの電源をOFFし,ペンダントの「メインメニュー」ボタンを押したまま電源ON(10秒)する.
続いて,【MotoPlusアプリ】のメニューにおいて,以下の手順でファイルのロードを行う.
- 【装置】からUSBメモリを選択
- 【ロード】からMotoRosYRC1u_1912.outを選択し,エンタでロード
- 【ファイル一覧】より,他のMotoPlusアプリが入っていないことを確認し,入っている場合は適宜消去する
通常モードで再起動し,ジョブファイルの読み込む
- コントローラをOFFし,起動(管理or編集モード)
- 【外部記憶】から【ロード】し,【ジョブ】を選択
- INIT_ROSを選択し,エンタでロード
もし,INIT_ROSをROS2環境構築時にロードしている場合は以下のようにする.
- ペンダントをティーチングモードに変更し,【ジョブ】から【ジョブ一覧】でINIT_ROSを選択する.
- ペンダントのメニューエリアにある【ジョブ】を選択し,その後【ジョブ消去】を選択
通常モードで再起動し,パラメータを設定
アラーム「8003」(通信設定が未完了によるエラー)が出るが出るので,以下の手順でパラメータ変更を行う.
- 【システム情報】から【セキュリティ】を選択し,セキュリティレベルを「9(管理モード)」に設定
- 【パラメータ】から【S2C】を選択し,以下の表に示す値を設定
パラメータ | 値 | 備考 |
---|---|---|
S2C541 | 0 | 通信関連 |
S2C542 | 0 | 通信関連 |
S2C1102 | 0 | RT通信用 |
S2C1104 | 0 | RT通信用 |
S2C1250 | 0 | ROS2との接続許可 |
S2C1402 | 0 | 通信ポートの指定 |
GP8以外のアームでシミュレーションを動作させる手順
以下の手順で必要なパッケージのインストールを行う.
sudo apt install ros-humble-moveit* sudo apt install ros-humble-rmw-cyclonedds-cpp export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp |
続いて,MoveIt Setup Assistantでmoveit_configを生成する.
以下のようにして,MoveIt Setup Assistantを起動する.
ros2 launch moveit_setup_assistant setup_assistant.launch.py |
MoveIt Setup Assistantにおける,ROS1→ROS2での主な変更箇所は以下の画像を参考にしてください.
(*注意:moveit_controllerも追加(Autoで追加しても可))
続いて,下記の通り各種パッケージのビルドを行い,シミュレーションを起動する.
colcon build source install/setup.bash ros2 launch motoman_gp8_moveit_config demo.launch.py |
上記を実行し,以下のような画面が出れば正常に起動できている.
Contributor
- 山本有輝也(2024年度卒業)
- 寺道彩穂(2025年度修士1年)