本ブログ記事「ROS 入門向けマニピュレータ導入検証」の公開後に OpenManipulator-X のソフトウェア構成の変更があり,記事で紹介した手順のアップデートが必要でしたので本記事にて紹介します.
基本的には ROBOTIS の e-Manual が充実していますのでその紹介ですが,加えて MoveIt での動作にフォーカスしたまとめと,「ROS 入門向けマニピュレータ導入検証」の MoveIt Commander Python サンプルスクリプトを実行する際の手順や入門者向けの注意点などをまとめています.
今回動作検証したシステム構成は次のようになっています.
インストールなどの手順は ROS Noetic については ROBOTIS の e-Manual の “Noetic” バージョンでの内容のとおりです.
ROS Melodic については ROBOTIS の e-Manual に記述は見つけられませんでしたがソフトウェアパッケージなどは準備されていましたので e-Manual の “kinetic” や “noetic” の部分を “melodic” に読み替えることで問題なくインストールなどの準備ができました.
MoveIt の実行についても ROBOTIS の e-Manual の内容のほぼそのままですが,実機動作のときはインタフェースに OpenCR を利用しましたので launch ファイルの起動オプションで USB ポートを指定する必要がありました.
$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch
$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch sim:=false usb_port:=/dev/ttyACM0
usb_port
が launch ファイルに書かれているデフォルト( /dev/ttyUSB0
)と異なる /dev/ttyACM0
であるため launch 時にオプション指定 usb_port:=/dev/ttyACM0
が必要ブログ記事「ROS 入門向けマニピュレータ導入検証」で検証したシステムの Ubuntu 16.04 + ROS Kinetic または Ubuntu 18.04 + ROS Melodic では Python 2 を使用していました.
今回 Ubuntu 18.04 + ROS Melodic のシステムでこのサンプルプログラムを実行させる場合は元のプログラムのまま実行できます.
Ubuntu 20.04 + ROS Noetic のシステムでは基本的に Python 3 を使用しますので Python 2 向けのサンプルプログラムを Python 3 に対応させるように変更する必要があります.
Python 2 から Python 3 への変更は下記リンク先 ROS Wiki – Source code changes to support Python 3 のドキュメントに推奨される方法が記述されています.
ただ推奨されている方法は少し手順が多いので,ここでは簡易的に記事内の「Open Manipulator X – MoveIt Commander テストプログラム」を Ubuntu 20.04 + ROS Noetic の Python 3 で実行するためにサンプルプログラムの 1行目 の python
を pyrhon3
に書き換えて対応します.
#!/usr/bin/env python
python
を pyrhon3
に変更
#!/usr/bin/env python3
サンプルプログラムは今回はインストール時にワークスペースにクローンした open_manipulator_controls
パッケージ内の /open_manipulator_controllers
フォルダ下に /script
フォルダを新規作成して,そこにファイル名 open_manipulator_moveit_tutorial_poses.py
で実行可能ファイルとして保存しました.
~/catkin_ws/src/open_manipulator_controls/open_manipulator_controllers/script/
open_manipulator_moveit_tutorial_poses.py
$ chmod 777 open_manipulator_moveit_tutorial_poses.py
Python スクリプトから MoveIt を動作させるコマンドインタフェースの MoveIt Commander の実行には MoveIt が起動している必要がありますので 1つ目のターミナル で MoveIt(対象は実機ロボットもしくは Gazebo シミュレータ)を実行した状態で,2つ目のターミナル で Python スクリプトを実行します.
$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch
もしくは
sim:=false
/ OpenCR ポート設定usb_port:=/dev/ttyACM0
)$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch sim:=false usb_port:=/dev/ttyACM0
ROS ではターミナルを新規に開くたびに ROS 環境の設定が必要です.
今回のケースでは ROS ワークスペース内のソフトウェアパッケージも利用しているので
$ source $PathToYourWorkspace/devel/setup.bash
で環境設定します.
$PathToYourWorkspace
は各自の ROS ワークスペースへのパスを記述
$ source ~/catkin_ws/devel/setup.bash
$ source $PathToYourWorkspace/devel/setup.bash
先程 open_manipulator_controls
パッケージ内にファイル保存と実行権限設定をしたサンプル Python スクリプト open_manipulator_moveit_tutorial_poses.py
を実行します.
$ rosrun open_manipulator_controllers open_manipulator_moveit_tutorial_poses.py
以上です.
コメントを投稿するにはログインしてください。
著者について