Jetson Nanoを使うのは、この程度のハードでも動くのか?ということを試すくらいの意味です。
Rvizでの動きのシミュレーションは問題なかったですが、Gazeboは厳しかったです。
本来はもっとパワーのあるPCでやりましょう。
ROSのRvizやGazeboの中で四足歩行ロボットを動かしてみましょう。
ここではRviz内のロボットをキーボードやPS4コントローラで制御してみます。
四つ足状のもの(Quadruped)を制御するROSパッケージとしてはCHAMPを使います。
ロボットのモデルはchvmp/robotsをインストールすれば以下のようなロボットを試せます(SpotやMini Pupperも用意されています)。
Anybotics’ ANYmal B
Anybotics’ ANYmal C
Boston Dynamic’s Spot
Unitree Robotics’ Aliengo
Unitree Robotics’ Go1
MIT Mini Cheetah
OpenDog V2
Open Quadruped
Stochlite
MangDang’s Mini Pupper
Stanford Pupper
その他
注:モジュールが不足していると動かないモデルもあります
独自に四つ足状のものを動かしたい場合は、ご自分でモデルと(SDFではなく)URDFファイルを準備して、CHAMPのsetup assistantを使って取り込めばいいようです。
キーボードから制御する場合はteleop_twist_keyboardを使いますが、PS4コントローラのようなJoystickデバイスも使いたい場合はCHAMPのchamp_teleopを使いましょう。
CHAMPはkinetic、melodic、noeticに対応しています。
ここではmelodicを使ってみます。
事前準備
Jetson Nano にROS (Melodic) をインストール
OSイメージはJetpack 4.6 (Ubuntu 18.04 LTS) を使います。
以下をご参照
Jetson Nano にROS1 (Melodic) をインストール(メモ)
CHAMPインストール
CHAMPを参照
事前準備のとおりだとすれば、ユーザー(jetson)ホームにワークスペースがあるので以下のようになります。
1 2 3 4 5 6 7 8 9 10 11 |
sudo apt install -y python-rosdep cd ~/catkin_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 |
teleop_twist_keyboardインストール
Rvizでロボットをキーボード制御します。
1 |
sudo apt-get install ros-melodic-teleop-twist-keyboard |
ロボットモデルを使ってみる
chvmp/robotsをインストールします。
事前準備のとおりのディレクトリ構成だとします。
クローンしてインストールおきます。
1 2 3 4 5 6 7 |
cd ~/catkin_ws/src git clone https://github.com/chvmp/robots cd robots ./install_descriptions |
ビルド
1 2 3 4 5 6 7 8 9 10 |
cd ~/catkin_ws rosdep install --from-paths src --ignore-src -r -y catkin_make source ~/catkin_ws/devel/setup.bash echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc source ~/.bashrc |
どのロボットを使うかは以下のディレクトリにあるconfigフォルダーを参照
~/catkin_ws/src/robots/configs
roslaunch <configフォルダー名> bringup.launch rviz:=true
Mini Pupper を使ってみます。
1 |
roslaunch mini_pupper_config bringup.launch rviz:=true |
別ターミナルで teleop_twist_keyboardを起動
1 |
rosrun teleop_twist_keyboard teleop_twist_keyboard.py |
制御例(ターミナルウィンドウをアクティブにして、キーを長押し)
i(I):前進
、(<):バック
o、u:半径を取って旋回
j、l:その場で旋回
J、L:(カニみたいな)横歩き
O、U:斜めに移動
など
ちなみにk(K)キーは何もしないようです。
キーボード制御だとこんな動きになります。
キーボード制御は以下のコマンドでも実行できます。
1 |
roslaunch champ_teleop teleop.launch |
このコマンドはオプションを追加して、PS4コントローラで制御する時に使います。
PS4コントローラで制御
Jetson Nano にコントローラ用ライブラリをインストール
以下参照
Mini Pupper をRvizで起動しておきます。
1 |
roslaunch mini_pupper_config bringup.launch rviz:=true |
ジョイスティックデバイスを使うので、別ターミナルで以下を実行
1 |
roslaunch champ_teleop teleop.launch joy:=true |
キーボード制御の場合はターミナルウィンドウをアクティブにする必要がありましたが、PS4コントローラはBluetooth制御なので不要です。
ボタン等のアサイン
L2:ロボットがこけました。これを回復する方法が分かりません。使わない方がいい?
R2:立ち上がります(上を向くに近い?)。
A:直進
B:その場で左旋回
C:バック
D:その場で右旋回
E:ダウン(おすわり、というより前かがみ)
任意の方向にスムーズに移動させるには、かなり微妙なスティック操作が必要になります、難しいです。
Next
Gazebo でMapping やNavigation をやってみます。
Appendix
キーアサイン
Leave a Reply