安川電機の産業用ロボットである,MOTOMAN GP8をROSで利用するための環境構築方法について示す.
なお、以降の検証は下記の環境で行っている.
- OS: Ubuntu18.04
- ROS: Melodic
なお,ROS用のワークスペースは「catkin_ws」とし, ビルドは「catkin build」で行うものとする.
MOTOMANの環境構築
MOTOMANをROSから利用するためのパッケージはROS Industrialにおいてオープンソースとして公開されている.
本ページの資料では,上記のページを参考にしている.
なお,不具合などがあった場合は適宜issueやpull requestしていくことで,コミュニティの活性化につながるので,積極的に行うことが望ましい.
上記のサイトから,以下の様にパッケージをcloneする.
$cd $cd ~/catkin_ws/src $git clone https://github.com/ros-industrial/motoman $rosdep update $rosdep install --from-paths src/ --ignore-src --rosdistro melodic $cd .. $catkin build $source devel/setup.bash |
Moveit!を利用したMOTOMAN-GP8のモーション生成
2020年9月現在,ダウンロード元のリポジトリには,MOTOMAN GP8のmoveit_configは存在しない.
そのため,次の手順にしたがって,moveit_configの生成を行う.
以下のコマンドでMoveIt!のアシスタントツールを立ち上げる.
$roslaunch moveit_setup_assistant setup_assistant.launch |
新規作成の場合は,左側のボタン「Create New MoveIt Configuration Package」を押す.
その後下記の画面が表示される.
この画面において,①「Load a URDF or COLLADA Robot Model」の欄にMOTOMAN-GP8のurdf,xacroファイルを指定する.
なお,MOTOMAN-GP8のモデルは以下に置かれている.
~/catkin_ws/src/motoman/motoman_gp8_support/urdf/gp8.xacro |
モデルを指定後,②「Load Files」を選択しロードが成功すると,画面右側にMOTOMAN-GP8の3Dモデルが表示される.
続いて,以下のの画面において,①「Self-Collisions」を選択し,②「Generate Collision Matrix」を押しロボットの自己干渉をチェックする(自己接触を自動判定).
上記の画面設定後,③「Planning Groups」を選択する.(仮想的関節は今回取り扱わないため「Virtual Joints」はスキップする)
「Planning Groups」の画面において,「Add Group」を選択し,Planning Groupの設定を行う.ここでは,①にあるように,グループ名と,運動学のソルバーの選択を行う.この例では,「kdl_kinematics_plugins/KDLKinematicsPlugin」を選んでいる.
続いて,②「Add Joints」を選択する.
Planning Groupの設定では,以下の画像のように,①「base_link-base」と「joint_6_t-tool0」以外を選択し,②の矢印を押し,「Selected Joints」に追加後,③「Save」により保存する.
続いて,「Planning Groups」において,「Link」を選択し「Edit Selected」を選択する.
Jointsの設定と同じように, ①でリンクの選択を行い,②で「Selected Links」に追加,③で「Save」により保存する.
最後に,「Planning Groups」において,「Chain」を選択し「Edit Selected」を選択する
以下の画面のようのよう設定した後,「Save」を選択する.
以上の設定を行うと,「Planning Groups」は,以下の画像のようになる.
この画像のようになっていない場合は,Group,Link,Chainの確認を行うこと.
続いて,「Add Pose」を選択し「Pose Name」を任意で設定し,下記の画面設定を行う.
(初期姿勢の設定なので,各自の環境に合わせて設定する.)
また,「End Effectors」,「Passive Joints」は、ここでは取り付けていないものとしてスキップする.
グリッパなどをつけている場合は適宜設定を行う.
「ROS Controllers」では,「Add Controllers」を選択し,以下のように名前は任意とし,「Controller Type」をここでは「effort_controllers/JointPositionController」を選択する.
「Author information」は,任意で設定すること.
「Configuration Files」で,パッケージを生成する前に①「Package Save Path」の部分を以下のパスに指定しパッケージの名前を作成する.
(パッケージの名前は何でも良いが,他のパッケージと命名規則を合わせて,ここでは[motoman_gp8_moveit_config]としている.)
~/catkin_ws/src/motoman/motoman_gp8_moveit_config |
ここまでの設定が全て完了したら,②「Generate Package」ボタンを押しパッケージを生成する.
今回,仮想ジョイントやエンドエフェクタの設定をしていないため,「No end effectors have been added」や「No virtual joints have been added」と表示されるがそのまま「OK」ボタンを押して生成を開始する.
「Configuration package generated successfully!」と出たらmoveit_configのパッケージの生成は完了する.
以降,Moveit Assistanceは利用しないため,③「Exit Setup Assistant」を押して,終了する.
MoveIt!で作成したパッケージを利用できるようにするために,出力したパッケージをビルドする.
$ cd ~/catkin_ws $catkin build |
ここまでの流れで,MoveIt!を利用する準備は完了となる.
MoveIt!によるモーション作成
続いて,作成したパッケージを用いて,MoveIt!の動作確認を行う.
作成したパッケージの中にdemo.launchというファイルが用意されている.
$roslauch motoman_gp8_moveit_config demo.launch |
コマンド入力後に以下のような画面が表示されれば成功.
また,この.rvizファイルを画面左上の「File」から「Save Config as」を選択し,「motoman_gp8_moveit_config/launch」の中に「moveit.rviz」があるので上書き,または「motoman.rviz」など名前をつけ新たに作成しておくとよい.
MOTOMAN-GP8のlaunchファイル作成
実機接続方法するためのlaunchファイルを作成する.下記のページで,MoveIt!用の設定ファイルの生成手順が書かれているので,この手順を参考にする.
Moveit! 設定ファイル生成手順
lanuchファイルのサンプルは,下記のリンクにあるので,これを参照にlaunchファイルの生成を行う.
なお,このlanuchファイルのテンプレートは上記の参照ページの2章にリンクが貼られている.
以下のパスにlaunchファイルを作成し,上記リンクの内容のコピーを行う.
$~/catkin_ws/src/motoman/motoman_gp8_moveit_config/launch/moveit_planning_execution.launch |
ペースト後,以下の様に修正する必要がある.
1. [robot_moveit_config]の部分は,自身の作成したパッケージの名前に変更すること.
2. 10行目のrosparamのコメントを外す(yamlファイルの名前やパスを適宜変更する)
rosparam command="load" file="$(find motoman_gp8_support)/config/joint_names_gp8.yaml"/ |
3. 31行目のlaunchファイルを以下の様に変更する.
include file =“$(find motorman_gp8_support)/launch/robot_interface_streaming_gp8.launch” arg name =“robot_ip” value =“$(arg robot_ip)” arg name =“controller” value =“$(arg controller)” |
このlaunchファイルは,必要なインターフェースノードやロボットコントローラ(今回の場合:yrc1000micro)を起動させるためのもの.
4.43行目の[moveit_rviz.launch]を以下の様に変更する.
arg name =“rviz_config” value=“$(find motorman_gp8_moveit_config)/launch/motorman.rviz” |
また,4.の内容は.rvizファイルを作成した時のみ変更する
しなかった場合は、arg name =“config”value=”true” の部分はコメントアウトする.
上記の修正内容を行ったlaunchファイルを下記に示す.
<!--?xml version="1.0"?--> <!-- The planning and execution components of MoveIt! configured to run --> <!-- using the ROS-Industrial interface. --> <!-- the "sim" argument controls whether we connect to a Simulated or Real robot --> <!-- - if sim=false, a robot_ip argument is required --> <!-- load the robot_description parameter before launching ROS-I nodes --> <!-- run the robot simulator and action interface nodes --> <!-- - replace these calls with appropriate robot-specific calls or launch files --> <!--include file="$(find motoman_driver)/launch/robot_interface_streaming_yrc1000.launch" --> <!-- publish the robot state (tf transforms) --> <!--arg name="fake_execution" value="true"/--> <!--arg name="rviz_config" value="true"/--> |
次に[motoman_gp8_moveit_config/config]の中に”controllers.yaml(コントローラインターフェース)”を作成する.下記の内容をコピー&ペーストすること.
controller_list: - name: "" action_ns: joint_trajectory_action type: FollowJointTrajectory joints: [joint_1_s, joint_2_l, joint_3_u, joint_4_r, joint_5_b, joint_6_t] |
詳細は下記のサイトを参考にすること.
Moveit! Controllers
[Controllers.yaml]を作成後,/motorman_gp8_moveit_config/launch/motorman_gp8_moveit_controller_manager.launch.xmlの中身を下記の様に修正する.
rosparam file="(find motoman_gp8_moveit_config)/config/controllers.yaml"/ |
MOTOMAN-GP8の接続方法
MOTOMAN-GP8のコントローラであるYRC1000-microに接続するために,以下の項目について確認を行うこと.
-
・MOTOMAN初期設定の確認
ロボットコントローラに読み込ませる”MotoRosYRC1u_191.out”のダウンロード先、初期設定方法に関しては下記のサイトを参照にすること.
MOTOMAN初期設定
コントローラに”MotoRosYRC1u_191.out”のロード確認方法は、MOTOPlusのマニュアルを確認すること.
使用するoutファイルは、コントローラによって違うため適宜変更すること.
・ロボットコントローラ(今回の場合:yrc1000micro)のIPアドレス(192.168.255.1)を確認すること
ロボットコントローラのIPアドレスの確認方法はMotoPlusのマニュアルを確認すること.(変更しないことを推奨)
・ロボットコントローラとPCの接続はクロスケーブルを用いて直接接続、またはルータを介して接続する.
1) クロスケーブルを用いる場合
自分のPCのIPアドレスが192.168.255.(“1″以外の数字)のように設定.
・自身のPCのIPアドレスの確認方法
コマンドプロンプトで”ipconfig”を入力し、Wireless LAN adapter Wi-FiのIPv4 アドレスの部分を確認する.
自身のPCのIPアドレス変更方法について(192.168.255.5に変更する)
PCのIPアドレス変更方法
2) ルータに介して接続する場合
例として、ルータのIPアドレスを”192.168.255.3″に変更する.
ルータを介して接続する場合,ルータの固定IPアドレスを”192.168.255.3″に変更する必要がある。
固定IPアドレスの変更の仕方は以下を参照にすること.
ルータの固定IPアドレス変更方法
ルーターのIPアドレスが変更できたら,1)を参考にPCのIPアドレスを192.168.255.(“1,3″以外の数字)で設定する.
・ペンダントがリモートモードかつ緊急停止モードが押されてないこと
・実機の電源を入れる
・ペンダントの画面が初期画面になる
・作成したlaunchファイルを立ち上げる
上記の設定を終えたらMOTOMANの設定は終了.
作成したlaunchファイルは,下記のコマンドで立ち上げる.
$roslaunch motoman_gp8_moveit_config moveit_planning_execution.launch sim:=false robot_ip:=192.168.255.1 controller:=yrc1000 |
launchファイルを立ち上げると以下の画像のようにRvizが表示される.
上記の画面表示が成功後,サーボオンにするために以下のコマンドを実行すること.
$rosservice call /robot_enable |
上記のコマンド実行後,サーボオンがされる(カチッと音が鳴る).
Rviz画面で,”Query Goal State(アーム先端についているボールのようなもの)”をドラッグすると姿勢を変更可能.
[Plan and Execute]を行うと,実機とロボットモデルが動作を行う.
MOTOMANが動かない場合のトラブルシューティング
・制御用PCとYRC1000-microがネットワークの確認
以下のようにpingをうって,返答があるかどうかを確認する.
返答がない場合はネットワークの設定がおかしいので確認すること.
$ ping YRC1000microのIPアドレス; |
・launchファイル実行時に「No Connect」とエラーになる場合
ロボットコントローラを再起動することで接続できることがあるので,コントローラの再起動を行う.