2019年1月27日日曜日

uArmSwiftProをROS MelodicのMoveit!で動かしてみた


背景

uArmSwiftProとは、クラウドファウンディングで資金を集めてロボットアームを作るUFACTORYという会社が作ったロボットアームの1つです。
ROSとは、ロボットを制御するためのフレームワークです。
Moveit!とは、ROSで利用できるロボットアームの制御プログラムです。

uArmSwiftProをROSでで動かすためのファイルががあったので、それを利用してuArmSwiftProを動かしてみました。
備忘録を兼ねて内容を共有します。

準備したもの

ROS Melodic + Moveit!をインストールしたPC

ROSのWiki(Ubuntu install of ROS Melodic)に従い、Ubuntu18.04にMelodicのDesktop-Full版をインストールしました。
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
sudo apt update
sudo apt install ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

Desktop-Full版をインストールしたら、Moveit!のWikiに従い、Moveit!のインストールとワークスペースの確保を行いました・
rosdep update
sudo apt update
sudo apt dist-upgrade
sudo apt install ros-melodic-catkin python-catkin-tools
sudo apt install ros-melodic-moveit
mkdir -p ~/ws_moveit/src
cd ~/ws_moveit
catkin config --extend /opt/ros/${ROS_DISTRO} --cmake-args -DCMAKE_BUILD_TYPE=Release
catkin build
echo 'source ~/ws_moveit/devel/setup.bash' >> ~/.bashrc

上記のコマンドだけでは自分の環境だとMoveit!のためにrvizを起動すると、下記のエラーが表示されました。
[ERROR] [1547206363.118853748]: PluginlibFactory: The plugin for class 'rviz_visual_tools/KeyTool' failed to load.  Error: According to the loaded plugin descriptions the class rviz_visual_tools/KeyTool with base class type rviz::Tool does not exist. Declared types are  rviz/FocusCamera rviz/Interact rviz/Measure rviz/MoveCamera rviz/PublishPoint rviz/Select rviz/SetGoal rviz/SetInitialPose rviz_plugin_tutorials/PlantFlag

掲示板(moveit rviz plugin error)の情報を参考に下記のコマンドを実行すると、上記のエラーを解消できました。
sudo apt install ros-melodic-moveit-visual-tools

uArmSwiftPro + グリッパ


ちなみに、サーボのケーブルはアーム先端上部のコネクタに、グリッパのケーブルはアーム先端下部のコネクタに接続します。



アームとグリッパのセットはこちらで購入できます。

uArm Robotic Arm

ファイルのダウンロードとビルド

ROSのワークスペースのsrcディレクトリに、uArmに関するファイルを配置します。
cd ~/ws_catkin/src
git clone git@github.com:uArm-Developer/RosForSwiftAndSwiftPro.git

ファイルを管理するREADMEを読み替えて、melodic向けの依存ライブラリをインストールします。
sudo apt install ros-melodic-serial

ワークスペースに移動してcatkin buildします。
cd ~/ws_moveit
catkin build

ビルドしたらsetup.bashを読み直します。
source ~/.bashrd
もしくは
source ~/ws_moveit/devel/setup.bash

これでuArmに関するROSプロジェクトを実行できるようになりました。

Moveit!を使わない位置表示プログラムを実行

READMEで紹介されている「Display mode: Get data from swiftpro」を実行してみます。

uArmSwiftProをPCに接続し、出てくるポートのアクセス権限を変更します。
sudo chmod 666 /dev/ttyACM0

位置表示プログラムを実行します。
roslaunch swiftpro pro_display.launch

このプログラムを実行するとrvizというシミュレーション表示プログラムが起動するものの、それだけでは何も表示されません。


ロボットを表示するために、画面左下のAddを押します。


rvizディレクトリに含まれるRobotModelを選択してOKを押します。


rvizの中央の画面にロボットが表示されます。


マウスやタッチパネルでスクロールすると拡大できます。


それっぽいものが表示されたのですが、エラーが出て動いてくれません。


これはFixed FrameがBaseであることを前提に作られているデータをmap向けに表示しようとしているのが原因のようです。
掲示板で解決方法が提示されていました。

Problems about controlling UArm via ROS

Fixed Frameのmapをマウスで選択してBaseに変更します。


変更した後、値を反映するためにrviz内の何もないところをクリックすると、値が反映されてエラーが消えます。


ロボットも表示されました。


この状態でロボットアームを動かすと、アームの位置がrvizに表示されているロボットに反映されます。
 



アームの先端に取り付けたグリッパの向きは、このプログラムでは読み取れないようでした。


Moveit!でアームを制御

READMEで紹介されている「Control Mode: Send data to swiftpro」を実行してみます。

uArmSwiftProをPCに接続し、出てくるポートのアクセス権限を変更します。
sudo chmod 666 /dev/ttyACM0

ターミナルを2つ使い、制御プログラムを実行します。
roslaunch swiftpro pro_control.launch
roslaunch pro_moveit_config demo.launch

プログラムが動くとuArmモデルが追加されたのrvizが表示されます。


uArmモデルの青色と赤色の矢印をドラッグすることで、移動先のアームの位置を変えれます。


移動先を決めたら、MotionPlanningのPlanningタブを選択して、その中のPlan and Executeを押すか、Planを押したあとにExecuteを押すことで、ロボットを動かせます。
(Moveit!の使い方は、Moveit!のwikiを参考にしてください。)


Moveit!で計算した経路に沿ってアームが動きました。




提供されているファイルが対応していないためか、y軸方向への移動とグリッパの回転はできなさそうでした。(操作する方法があれば、教えてもらえると嬉しいです。)

まとめ

アームの回転が取れなかったりy軸方向へ動かせなかったりするものの、公開されているファイルを利用してuArmSwiftProをMoveit!で動かせました。

何かの参考になれば嬉しいです。

0 件のコメント :