Jetson Nano + ROS で四足歩行ロボットをシミュレーションしてみる(Rviz)では、ロボットは平面上で動いていました。
で、3Dの立体地形ではどうかということで、ROSパッケージのTOWR(Trajectory Optimizer for Walking Robots)を使ってみます。
Jetson はXavier NX とNano を使ってみます。Xavier NX程度のCPU/GPUがあればOKですが、Nanoでもある程度動きの確認はできます。
TOWRでシミュレーションに使われるロボットは1・2・4脚ですが、4脚歩行を中心に見ていきます。
こんな感じです。地形(Terrian)は階段(Stairs)を使っています。
参考
4 脚移動ロボットを用いた地形に対する歩容最適化に関する研究
使用するOSイメージはJetpack 4.6(Ubuntu 18.04 LTS) 、Nano・Xavier NX で共通ですが最適化されていますのでDL用のリンクはそれぞれ違います。
ROSはMelodic です。
セットアップは以下を参照(Xavier NX でも同じ)
Jetson Nano にROS1 (Melodic) をインストール(メモ)
TOWRのインストール
ROS.orgに書かれているとおりです。
簡単です。
1 |
sudo apt-get install ros-melodic-towr-ros |
この方法は簡単ですが、ソースを触りたい向きではありません。
何かカスタマイズしたい場合はTOWRを参照してください。なお、ここにはmelodicをインストールするためのキーやワークスペース(catkin_ws)の作成などについては何も書かれていませんので、その場合はここら辺をご参照ください。
ソースコード等は以下のディレクトリなどにあるようです。
~/catkin_ws/src/towr/towr/src
~/catkin_ws/src/towr/towr_ros/src
~/catkin_ws/src/ifopt/ifopt_ipopt/src
~/catkin_ws/src/ifopt/ifopt_snopt/src
~/catkin_ws/src/ifopt/ifopt_core/src
ちなみに、Spot + TOWR のドッカーイメージもローンチされていますが、残念ながらLinux/amd64用のイメージなのでJetsonでは使えません。
参考までに
起動
1 |
roslaunch towr_ros towr_ros.launch |
最初に制御用のコンソール(towr_user_interface)が立ち上がって、次にRvizが起動しますが、最初は空白です。
towr_user_interfaceは常に前面に置いて、フォーカスを当てた状態で使います。
不都合でなければ、常に最前面になるように設定しておけばいいです。他の操作をした後にはアクティブにしておきます。
よく使うキー
Key | Description | 備考 |
o | Optimize motion | 動作の最適化。他の条件を変更した時に最初に実行します。 |
v | Visualize motion in rviz | Rviz内で動作を可視化。ロボットを初期位置に戻して再実行します。 |
; /’ | Replay speed | 再生速度。レンダリングの速度も変更します。 |
arrow | Goal x-y | 赤青緑の3軸で表示されている到達点の位置を矢印キーで変更。 |
r | Robot | ロボットを選択。
Monoped(1脚)、Biped(2脚)、Hyq(4脚)、Anymal(4脚) |
t | Terrian | 地形を選択。
Flat、Block、Stairs、Gap、Slope、Chimney、Chimney LR |
q | Close user interface | 終了 |
ちなみに、Replay Speed の初期値は1ですが、Nano の場合は0.2くらいの値にします。NanoのCPU/GPUでは1だとレンダリングが間に合わなくて、途中の動作が表示されません。;キーでdecrease、/ + ‘キーでincrease。
RobotのANYmalはRvizでは選択できませんが、towr_user_interfaceでは選択できます。つまり外見としてのANYmalは選べませんが、運動系機構としてのAnymalは実行できます。
動かしてみる
初期状態ではRviz画面は空白ですのでとりあえず、oキーを押下します。
内部の運動系の機構とFlatが表示されます。
4脚ロボットを表示します。
① towr_user_interfaceコンソールでrキーを押して、Hyqを選択。
② RvizでHyqにチェックを入れます。
towr_user_interfaceコンソールを前面に出してフォーカスを当て、tキーを押して地形(Terrian)を階段(Stairs)にします。
条件を変更したので、oキーを押して、最適化します。これをやっておかないと、vキーで動作させた時4脚なのに初期設定のmonoped(1脚)の運動系で動作してしまいます(まぁ、それはそれで面白い動きではありますが….)。
oキーでの最適化はロボット(Robot)の変更、地形(Terrian)の変更、到達点(Goal)の変更をやった場合は必ず実行する必要があります。
少々お時間を要します。
終了するとロボットが動作します。
動作が終了したら、vキーを押せば再度実行されます。
また、4脚ロボットの運動系機構としてHyqを選んでいますが、もう一つAnymalというのもあります。
こんな動きです。なんか猫族の動物が獲物を補足して接近する時みたいな動き方です。
経路に隙間が空いていて、そこに交差した板のようなものが置かれている地形(ChimneyLR)を移動してみます。
Replay speed は0.2に落として、到達点(Goal)も左下に変更しています(Goalはこのグレーの領域内になければならないというわけではないです、大きく外にはみ出してもかまいません、ルート設定がどう変化するのかが分かります)。
非常にアクロバティックな動きでクリアしています。
Appendix
2脚ロボットにSlopeを登らせてみるとこんな感じになります。
動きをよく見るために、Replay speed は0.2にしています。
Appendix2
1脚ロボットの場合はこんな感じです。
歩くというよりホップして移動します。
Appendix3
1脚ロボットでChimneyLRにチャレンジしてみます。
パルクールみたいな動きでクリアしています。
到達点(Goal)の位置を変える(例えばもっと遠くに設定する)と、また違う動きをします、試してみてください。
Leave a Reply