ROS
Gazebo
RRBot

ROSとGazeboでロボットアームのRRBotを動かしてみた(シミュレーション)

はじめに

とてもシンプルなロボットアームのモデルであるRRBotというのがgithubで公開されていたので今回なんとかしてGazebo上で動かしてみました。
Screenshot from 2017-12-21 21-11-48.png

前提条件

・ROSが入っていること
・Gazeboのros連携するプラグインが入っていること
→ros連携のプラグイン自体は次のコマンドを打てばインストールできます。

$ sudo apt-get install -y ros-indigo-gazebo-ros-control
$ sudo apt-get install -y ros-indigo-ros-control ros-indigo-ros-controllers

※なお、↑のコマンド中のindigoの部分は自分が使っているROSのdistributionにしてください。筆者はkineticですが大丈夫でした。

前提条件の準備方法に関しては、下記のサイトがわかりやすいです。
ROSで始めるロボティクス
Building a Visual Robot Model with URDF from Scratch(R2D2のモデルを作って動かすチュートリアル)

かなりROSをいじっているので、他にも必要な条件があるかもしれないです…。

実行環境

Ubuntu 16.04
ROS Kinetic
windows7 64bit がloaderのデュアルブート
cpu intel Core i7 860
メモリ 8GB

RRBotの導入

参考サイト
No.6-5:GazeboをROSに繋ぐ (GazeboにおけるURDF 編)

$ cd ~/catkin_ws/src/
$ git clone clone https://github.com/ros-simulation/gazebo_ros_demos.git
$ cd ../
$ catkin_make

↑のコマンドを行って、catkin_ws/srcのディレクトリにRRBotのパッケージ(以下、pkgと略す)をgit cloneでダウントードしてください。

GazeboにRRBotを出す。

次のコマンドを行うと、gazeboが起動してそこにRRBotが現れるはずです。

$ roslaunch rrbot_gazebo rrbot_world.launch

Screenshot from 2017-12-21 20-06-50.png

勝手にアームがだらんとなると思います。
しかし、まだ動かせないですね。

RRBotを動かすためのコントローラーの実行

今のままでは動かせないので、次にRRBotを動かすためのコントローラーを実行します。ただ、普通の人が想像するコントローラーとはかなり異なりますが…。

新しく端末(ターミナル)を開いて、次のコマンドを実行します。

$ roslaunch rrbot_control rrbot_control.launch

まだ、動かせませんね。

RRBotにtopicを送る

参考サイト
controllers behaviour in rrbot

また新しく端末(ターミナル)を開いて(3つ目)、次のコマンドを実行します。

rostopic pub -1 /rrbot/joint1_position_controller/command std_msgs/Float64 "2.0"

これで、RRBotが動いたのでは?
Screenshot from 2017-12-21 20-52-26.png

ちなみに、RRBotは根本から1つ目の関節がjoint1、2つ目の関節がjoint2です。なので、次のコマンドを送ると、

rostopic pub -1 /rrbot/joint2_position_controller/command std_msgs/Float64 "1.0"

Screenshot from 2017-12-21 20-55-20.png
このようになるはずです。joint2が曲がりましたね。

ROSに詳しくなれば、今は端末から直接topicをpublishしていますが、自分でpythonなりC++なりでpubliserを作れるようになるはずです。ちなみに、筆者は優秀な動機の力を借りて最近やっとサンプルコードをコピペしてpublisherが作れるようになったところです。

参考文献まとめ

ROSで始めるロボティクス
Building a Visual Robot Model with URDF from Scratch(R2D2のモデルを作って動かすチュートリアル)
No.6-5:GazeboをROSに繋ぐ (GazeboにおけるURDF 編)
controllers behaviour in rrbot
ROS演習8:ロボットアーム