Mini Pupperの動かし方(Gazebo)


ROS Advent Calendar 2021 19日目の記事です。こんにちは、にっしゃんです。

Mini Pupperとは

「Mini Pupperは、学校、ホームスクール家庭、愛好家、そしてそれ以外の人々にも、ロボット工学をより身近なものにしてくれることでしょう」 by MangDang

Mini Pupperの経緯について、以下のように理解しています。

  1. Nathan KauさんがStanford Pupperを公開した。
  2. Nathan KauさんとAfreez GanさんがMini Pupperを公開した。
  3. MangDang(代表Afreez Ganさん)がKickstarterでプロジェクトをスタートし、ファンディングゴールを達成した。

なお、pupperは子犬という意味なので、miniが付いてるのでさらに小さいという意味ですね。

champとは

champはシンガポールのJuan Miguel Jimeno氏が作った、四脚ロボットをROSで動かすプロジェクトです。こちらはROS World 2020でJuan氏によるプレゼンです。

ROS World 2020 Technical Session: CHAMP Quadruped Control

特徴:

  • 色んな販売されている4脚ロボットをROSで制御するためのパッケージ群
  • 4脚で歩くための歩容も含まれている。
  • Lidarを搭載すればnavigationも可能。
  • ハードのインタフェースを用意すれば実機も動かせる。
  • 実機がなくてもGazebo内で動かせる。
  • ROSのバージョンはROS1。kinitic, melodic, noeticで動作する。

というもの。なのでPCがあれば、色んな4脚ロボットをPCの中で歩かせることができるわけです。ぜひ遊んでみましょう。

なんで紹介記事書いてんねん

すいません、私のプルリクがchampに採用されました。

きっかけは、Juanから「Mini Pupper、プレッジしたんでしょ? じゃChampに追加よろ」とメッセが来たことですw champを良く知りたかったので良いタイミングでした。

Mini Pupperを動かす準備

2021/12/16現在の動かし方です。

champの準備

クローン

sudo apt install -y python-rosdep
cd <your_ws>/src
git clone --recursive https://github.com/chvmp/champ
git clone https://github.com/chvmp/champ_teleop
cd ..
rosdep install --from-paths src --ignore-src -r -y

--recursive のオプションを忘れるとビルドが通らないので、気をつけましょう。

robotsの準備

こちらにmini pupperのデータが入っています。

クローン

cd <your_ws>/src
git clone https://github.com/chvmp/robots
cd robots
./install_descriptions

取ってくるデータが多いので、そこそこ時間がかかります。

ビルド

unitreeの実機用コードが上手く動かないので消してからビルドします。

rm -r descriptions/unitree_ros/unitree_legged_real/
cd ../..
rosdep install --from-paths src --ignore-src -r -y
catkin_make
source <your_ws>/devel/setup.bash

Mini Pupperの動かし方(Gazebo)

動かすためのコマンドはこちらに記載していますが、さらっと紹介します。

rvizのなかでリモコン操作で歩く

Terminal #1 roslaunch mini_pupper_config bringup.launch rviz:=true

Terminal #2 roslaunch champ_teleop teleop.launch

キーボード操作で歩き出します。操作方法はターミナルの中を参照ください。キーを長押しします。例えばiキーを押し続けると前進します。

なお、パソコンにROS対応のJoystickが無線か有線でつながっていれば、ジョイスティックでも操縦できます。PS3やPS4のコントローラが有名ですね。ジョイスティックだと体の高さ、傾きを変えることができます。ジョイスティックを使う場合は、ターミナル2のコマンドは以下のように変わります。

Terminal #2 roslaunch champ_teleop teleop.launch joy:=true

Gazeboの中でmapを作りながら歩く

Terminal #1 roslaunch mini_pupper_config gazebo.launch

Terminal #2 roslaunch mini_pupper_config slam.launch rviz:=true

もし仮想環境を使っているなどGazeboの表示の更新が遅い場合は、GazeboのWorld→scene→shadowのTrueをFalseに変更すると多少改善します。

このMini Pupperモデルはステレオデプスカメラと2D Lidarを搭載しているので、周囲の環境をスキャンできます。navigationは、

  1. 地図を作る
  2. その地図を使って移動する

と2段階に手順が分かれますが、これは1.です。Rviz上の2D Nav Goalを押して、好きな場所まで歩かせましょう。そして、空間を網羅できたら、次の手順でmapを保存します。

roscd mini_pupper_config/maps
rosrun map_server map_saver

ただ、このリポジトリにはあらかじめmapが入ってるので、次のステップに進めます。

Gazeboの中でnavigationで歩く

Terminal #1 roslaunch mini_pupper_config gazebo.launch

Terminal #2 roslaunch mini_pupper_config navigate.launch rviz:=true

さっそくMangDang公式でも動かしてくれました。

今後

  • はやく実機が届かないかな…
  • 歩くときに胴体が揺れすぎてるので、パラメータ調整したい。
  • ステレオデプスカメラと2D Lidarのモデルが大きいので、小さい機種に変えたい。
  • 顔を付けたい (Gazeboで不具合が出たので一旦消した)

さいごに

さいとてつやさん、本記事を事前レビューいただきありがとうございました。