Jetson Nano + ROS で四足歩行ロボットをシミュレーションしてみる(Gazebo)


Jetson Nano + ROS で四足歩行ロボットをシミュレーションしてみる(Rviz)ではシミュレーションにMini Pupperを使いましたが、ここではSpotを使ってみます。

Mini Pupperモデルは姿勢(pose)の初期化(reset)が難しかったのと、Spotは買うと800万円くらいするらしいので、シミュレーションで動かしてみるしかないのでやってみます。

Boston Dynamics の Spot

シミュレーション用のROSパッケージCHAMPを使いますが、CHAMPには事前に仮想空間(World)が準備されています。

こんな感じ。

ごちゃついた空間なので、自前で仮想空間を作ってそこでSpotを動かしてみます。

また、SpotのconfigにはLiDARが搭載されていますので SLAM で地図を作ります。

 


Jetson Nano のセットアップ

ROSパッケージのCHAMPchvmp/robotsをインストールしておきます。

詳細は以下を参照

Jetson Nano + ROS で四足歩行ロボットをシミュレーションしてみる(Rviz)

 


仮想空間(World)の作成

gazeboを起動

Ground PlaneとSun、ここにいろいろなアセットを置いていくことになります。

ここでは単純にアセットとしてJersey Barrier だけを置いて間仕切りした空間にします。

 

Spotのworldは以下に保存します。

~/catkin_ws/src/robots/configs/spot_config/worlds

既存のファイル(outdoor.world)を改名しておき、outdoor.world(SDF形式)で保存します。

 


Spot でGazebo 起動

 

 

場合によってはSpotがこけている場合があります。

その時は、

メニュー>Edit ->Reset Model Posesで 回復できます。

 

また、初回にこけていたり伏せの状態が回復しない場合は、Gazeboを再起動すれば何とかなることがあります。

 


SLAMを起動して地図作成

別ターミナルで以下を実行

レーザーの届く範囲がLiDARでスキャンされています。

地図を作成するには、仮想空間内でSpotを歩かせて全範囲をスキャンする必要があります。

2D Nav Goal を使って、マウスをクリックして到達点(Goal)と次の進行方向を指示します。

 

Gazebo 内ではSpotが歩いていますが、Jetson Nano の場合、絶望的に遅いです。

全範囲をスキャンするような場合、やはりCore i7やRTX 2080/3050 くらいのを積んだ高性能PCが望ましいです。

 

全スキャンが終了した場合、以下を実行して地図を作成します。

map.pgm、map.yamlというファイルが作成されます。

 

ちなみに、Gazeboは建築エディタ(Building Editor)を使ってインドア空間も作れるようです。

間取り図をimportして自宅の空間を作ってみてもいいかも。

こんな感じです(Cafeのmodel)。

こういうデータセットもあります(Gazebo 7 対応みたいですが9でも使えました)。

Gazebo Original

3D Model は ~/.gazebo/models に置いて使いましょう。

 


Navigation

CHAMPには事前に用意された仮想空間の地図が準備されています。

これでNavigationしてみます。

以前に改名しておいたoutdoor.worldを元に戻して以下を実行。

この空間で事前に準備された地図を開きます。

 

2D Nav Goal を使って歩かせてみます。

障害物の反対側にGoalを設定すると回避して大回りするようなルートが設定されます。

また、ルートの途中の障害物でスタックしたような場合、新たにルートが再設定されたり、頻繁にplanが作りなおされたりするうちにゴールをロストするというようなこともあるようです。

またchvmp/robotsの全てがうまく動くわけではないですが、champ_configやmini_cheetah_config、opendog_configなどでは正しかったのですが、Spotの場合Rvizでは正しくルートをとっていましたがGazeboでは壁を突破して移動しています。何でしょう?一歩の距離がspotと他のロボットでは違っている?

opendogの場合ですが、このように正しく対応しています。

Spotのストロークというか歩幅は、他のロボットより広いといえば確かにそうなんですが…..。

オドメトリなどの物理演算のパラメータ?よく分かりません。

 

*キー操作で制御

Jetson Nano + ROS で四足歩行ロボットをシミュレーションしてみる(Rviz)でやったようにキーボードで動かすこともできます。

別ターミナルで teleop_twist_keyboardを起動して

キーを使えばRvizのSpotやGazeboのSpotも動きます。

PS4コントローラでの制御もできるはずです。

 


カメラ

Spot はLiDAR以外にあご(?)の下に深度カメラを持っています。

深度カメラは3つのカメラを使っていて、左右のステレオカメラで距離を測定し、真ん中のカメラでカラー画像を取得します。

Rvizでカメラ画像を見てみます。

GazeboとRvizを起動し、RvizでDisplayパネルを開きます。

左下のAddボタンをクリック、By topic タブでdepth camera のimageを選んでOKクリック。

こんなイメージが表示されます。暗視カメラの画像みたいな感じです。

距離の表示がよく分かりませんでした。

measureしてみると、正面の物体までの距離はだいたい3mでした。仮想環境なのでよく分かりませんが、GRIDのセルサイズが1m、Spotの胴部の長さが110cmなのでだいたいそんなもんでしょう。

 

 

rgb camera のCameraを選んでみます。

カラー画像で表示されています。Spotの目線で見えているものです。Spot を動かせばカメラ画像も追従します。

 

 


関連キーワード

NVIDIA Omniverse 、Isaac Sim、Isaac ROS

AWS RoboMaker

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*