ROS2でMotoman GP8を利用するための環境構築と動作確認

本ページでは,安川電機の産業用ロボットである,MOTOMAN-GP8をROS2で利用するための環境構築方法について示す.
なお、以降の検証は下記の環境で行っている.

  • ROS2: Humble
  • OS : Ubuntu 22.04
  • PC :Let’s note
  • Zipファイル:MotoROS2 0.1.3
  • 対象ロボット:MOTOMAN-GP8 (YRC1000micro)

MOTOMANをROSから利用するためのパッケージ

本ページの資料では,上記のページを参考にしている.
なお,不具合などがあった場合は適宜issueやpull requestしていくことで,コミュニティの活性化につながるので,積極的に行うことが望ましい.

セットアップ全体の流れ

  1. PCのセットアップ
  2. ペンダントへのROS2のためのファームウェアの書き込み
  3. GitHubからロボットモデルを取得(URDFやxacro)GP8などのモデルや設定ファイルを作成.(GP8モデルがリポジトリに存在するため省略)
  4. MoveItの設定(Rviz).MoveIt Setup Assistantを使って設定を作る.Rvizなどでシミュレーションも可能.
  5. MotoROS2(MotoPlusアプリ)のインストールと設定MotoROS2をダウンロードし,YRC1000microにインストール.YAMLファイルで通信や関節名などを設定.
  6. 実機での動作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 から「opencv-python」を削除する.
また,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に接続されているティーチングペンダントへのファームウェアなど書き込みを行う.

  1. 以下のリンクから対象コントローラのリリースZIPをダウンロード.GP8&YRC1000microなら,下記をダウンロードする.
    zipファイルのダウンロード
  2. 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秒)まち,メンテナンスモードに入る.
  • ティーチングペンダントを以下のように操作する.
    1. 【システム情報】から【セキュリティ】を選択しセキュリティレベルを「9(管理者)」に昇格させる.
    2. 【設定】から【オプション機能】を選択し,以下のように設定する.
      1. MotoPlus機能を選択し「使用する(USED)」に設定
      2. MOTOMAN DRIVERを選択肢「使用する(USED)」に設定
  • 【MotoPlusアプリ】 メニューを選択し,以下のように設定
    1. 【装置】からUSBメモリまたは SDカードを選択
    2. 【ロード】から”mr2_yrc1m_h.out”を選択→”エンタ”でファイルをロード
    3. 【ファイル一覧】から他のMotoPlusアプリが入っていないことを確認(入っている場合は消去する)

*.outファイルが複数ある場合は,【MotoPlusアプリ】→【消去】消したいファイルを選択し消去する.

通常モードで再起動し,yamlファイルの読み込み

  1. ロボットコントローラ(YRC1000micro)の電源を一旦OFFし,再起動し,(管理or編集モード)を選択
  2. 【外部記憶】から【ロード】を選択した上で,【ユーザ定義ファイル】を”選択”
  3. motoros2_config.yamlを選択し,ファイルのロード

通常モードで再起動し,ジョブファイルの読み込み

  1. コントローラをOFFし,起動(管理or編集モード)
  2. 【外部記憶】から【ロード】を選択し,その後【ジョブ】を選択
  3. INIT_ROSを選択し,ロード(INIT_ROSをROS1環境構築時にロードしている場合必須.)
    • ペンダントをティーチングモードに変更し,【ジョブ】から【ジョブ一覧】で「INIT_ROS」を選択する.
    • ペンダントのメニューエリアにある【ジョブ】から【ジョブ消去】を選択する.

通常モードで再起動し,パラメータの設定

  1. アラーム「8003」(通信設定が未完了によるエラー)が出る
  2. 再度【システム情報】から【セキュリティ】を選択肢,セキュリティレベルを「9(管理モード)」に設定する.
  3. 【パラメータ】から【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環境構築時にロードしている場合は以下のようにする.

  1. ペンダントをティーチングモードに変更し,【ジョブ】から【ジョブ一覧】でINIT_ROSを選択する.
  2. ペンダントのメニューエリアにある【ジョブ】を選択し,その後【ジョブ消去】を選択

通常モードで再起動し,パラメータを設定

アラーム「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年)