はじめに
とてもシンプルなロボットアームのモデルであるRRBotというのがgithubで公開されていたので今回なんとかしてGazebo上で動かしてみました。
前提条件
・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
勝手にアームがだらんとなると思います。
しかし、まだ動かせないですね。
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は根本から1つ目の関節がjoint1、2つ目の関節がjoint2です。なので、次のコマンドを送ると、
rostopic pub -1 /rrbot/joint2_position_controller/command std_msgs/Float64 "1.0"
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:ロボットアーム