“ROS 入門向けマニピュレータ導入検証” ROS Melodic & Noetic 対応更新

著者:yamamoto.yosuke

“ROS 入門向けマニピュレータ導入検証” ROS Melodic & Noetic 対応更新

本ブログ記事「ROS 入門向けマニピュレータ導入検証」の公開後に OpenManipulator-X のソフトウェア構成の変更があり,記事で紹介した手順のアップデートが必要でしたので本記事にて紹介します.

基本的には ROBOTIS の e-Manual が充実していますのでその紹介ですが,加えて MoveIt での動作にフォーカスしたまとめと,「ROS 入門向けマニピュレータ導入検証」の MoveIt Commander Python サンプルスクリプトを実行する際の手順や入門者向けの注意点などをまとめています.

1. システム構成

今回動作検証したシステム構成は次のようになっています.

  • OS + ROS
    1. Ubuntu 18.04 + ROS Melodic
    2. Ubuntu 20.04 + ROS Noetic
  • OpenManipulator-X 実機インタフェース: OpenCR

2. インストールなどの準備

インストールなどの手順は ROS Noetic については ROBOTIS の e-Manual の “Noetic” バージョンでの内容のとおりです.

ROS Melodic については ROBOTIS の e-Manual に記述は見つけられませんでしたがソフトウェアパッケージなどは準備されていましたので e-Manual の “kinetic” や “noetic” の部分を “melodic” に読み替えることで問題なくインストールなどの準備ができました.

2.1 ROS パッケージのインストール

2020年2月の時点からはパッケージ構成が変更されていましたので現時点で必要なパッケージをインストールやソースのビルドを行います.

2.2 通信インタフェースとして OpenCR を利用

通信インタフェースとして OpenCR を利用する場合は次のインストールなどの設定を行います.

2.3 MoveIt パッケージのインストール

OpenManipulator-X の MoveIt パッケージは “Experimental” の位置づけとのことです.

3. MoveIt 実行手順

MoveIt の実行についても ROBOTIS の e-Manual の内容のほぼそのままですが,実機動作のときはインタフェースに OpenCR を利用しましたので launch ファイルの起動オプションで USB ポートを指定する必要がありました.

3.1 Gazebo シミュレータ と MoveIt

ターミナル 1
$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch
  • 注)
    • Gazebo の Play ボタンを手動で押してシミュレーションを開始する必要あり
      • “Click on Play ▶ button at the bottom of the Gazebo simulator.”
      • → Gazebo シミュレータが起動すると MoveIt が動作を開始

3.2 実機 と MoveIt(OpenCR インタフェース)

ターミナル 1
$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch sim:=false usb_port:=/dev/ttyACM0

3.3 MoveIt Commander のサンプル Python スクリプト

ブログ記事「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行目 の pythonpyrhon3 に書き換えて対応します.

#!/usr/bin/env python
↓ 1行目 の pythonpyrhon3 に変更
#!/usr/bin/env python3

サンプルプログラムは今回はインストール時にワークスペースにクローンした open_manipulator_controls パッケージ内の /open_manipulator_controllers フォルダ下に /script フォルダを新規作成して,そこにファイル名 open_manipulator_moveit_tutorial_poses.py で実行可能ファイルとして保存しました.

  • 注1)
    • 今回の ROBOTIS e-Manual のインストール手順に則っている場合の保存先ファイルは ~/catkin_ws/src/open_manipulator_controls/open_manipulator_controllers/script/
      open_manipulator_moveit_tutorial_poses.py
  • 注2)
    • ファイルへの実行権限の付与コマンドは
      $ chmod 777 open_manipulator_moveit_tutorial_poses.py

Python スクリプトから MoveIt を動作させるコマンドインタフェースの MoveIt Commander の実行には MoveIt が起動している必要がありますので 1つ目のターミナル で MoveIt(対象は実機ロボットもしくは Gazebo シミュレータ)を実行した状態で,2つ目のターミナル で Python スクリプトを実行します.

ターミナル 1(対象: Gazebo シミュレータ)
$ roslaunch open_manipulator_controllers joint_trajectory_controller.launch

もしくは

ターミナル 1(対象: 実機ロボット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 ワークスペースへのパスを記述
    • 今回の ROBOTIS e-Manual のインストール手順に則っている場合は $ source ~/catkin_ws/devel/setup.bash
ターミナル 2(ROS 環境の設定・ターミナル起動時に1回)
$ source $PathToYourWorkspace/devel/setup.bash

先程 open_manipulator_controls パッケージ内にファイル保存と実行権限設定をしたサンプル Python スクリプト open_manipulator_moveit_tutorial_poses.py を実行します.

ターミナル 2(Python スクリプトの実行)
$ rosrun open_manipulator_controllers open_manipulator_moveit_tutorial_poses.py

以上です.

トランジスタ技術 2020年9月号 の ROS 入門の記事を執筆しました
信州大学の HIRO ロボットソフトウェアが Ubuntu 20.04 + ROS Noetic に対応

著者について

yamamoto.yosuke administrator

コメントを投稿するにはログインしてください。