2026年7月アーカイブ

Mini Pupper2 ros2 4足歩行 Policy 強化学習

Mini Pupper2 ros2 4足歩行 Policy 強化学習

Mini Pupper2 4足歩行 Policy を探したけど、どうもどこにあるのか判らん。
あったとしても、おんちゃんの PC の GPU gtx 1070 では、まるっきり歯がたたん。

ChatGTP に、いろいろ聞いているうちに、
Ros2 Jazzy Gazebo(Harmonic) で、Mini Pupper2 ros が動いているので、Gazebo のシミュレーション環境でも、いいんじゃない?(まるっきり、時間度外視であれば)
と、行き着いた。

ChatGPT を、おだてて、
4足歩行 Policy と、強化学習の torch train 等、一式書いてもらっての、テストじゃ。
今回は、この話じゃ!!
けっして、良い子は、まねをしないように。...

結局、Gazebo 上の Mini Pupper2 を、Policy の出力で、動かして、その結果が良ければ、+何点、 NG であれば、-何点と、強化学習を繰り返すだけ。
難点は、それを、一度に 1000とか同時にできるかどうかだけじゃ。
昔、台に乗った、ポールを倒さないように、台を動かす強化学習と同じ要領みたい。

Stable Baseline3(SB3) で、PPO(Proximal Policy Optimization) で、既存の MlpPolicy をすこしカスタマイズしてつかえば、出来上がるみたい。

Python コードの原型は、ChatGTP に教えてもらって、つくったぞね!!

ROS2 Jazzy Gazebo Harmonic で、Mini Pupper2 ROS を試す。

ROS2 Jazzy Gazebo Harmonic で、Mini Pupper2 ROS を試す。

ふう!! 今回は、結構つかれたが、
表題通り、Gazebo Harmonic で、mini_pupper_ros の Mini Pupper2 を、なんとか、動かせたので、記載しました。
実機が、8万ほどするので、びんぼうなおんちゃんには、高値の花!!
Gazebo で、ちょっと試してみようと思ったのが、まちがいじゃったか!!

本当は、もっと大きな、犬ころロボットを試してみたいと思ってはいるが、さきだつものが...
本格的犬ころロボットは、今は、中ちゃんメーカー1強みたい。
30万から40万らしいが、4足歩行 Policy を自分で開発してつかう版だと、100万オーダーらしい。
べつのメーカーが、安価なモーター版を開発中と言うが、そういったものが出てこないと、なかなか、開発に踏み込めない。

環境
PC: Ubuntu Mate 24.04
ROS2 Jazzy
Gazebo Harmonic

Git Source
Jazzy 版
@mangdangroboticsclub/mini_pupper_ros
上記 jazzy 版 ソースを、git clone して、Gazebo Harmonic で動作するように修正する事が、今回の手順になる。
楽な方法は、無い。Jazzy 版でも、Gazebo は、古い版のままじゃ!!

はっきり言って、そのままでは、動かん!!
基本的な作りが、ROS2 対応になっていない。
robot URDF modelの top link が、 base_link なのが、そもそも問題で、おまけに、
stanford_controller_node.py が、そもそも使いづらい。
こいつの誤差の大きさで、本当に苦労した。

もともとが、Humble 版なので、Jazzy版へ移行するさいに、Gazebo が、かなり違ったので、これを、吸収しないといかんが、
ここは、ほとんど Google Ai に聞きぱなっし。しかし、以前、WearHouse Tugbot を作った経験があったので、随分前の事で、ほとんど記憶に残っていなかったが、
部分的に、思い起こして、なんとかできた。

ROS2 Jazzy で、50x50[M] の static map を作って、使う。#2

ROS2 Jazzy で、50x50[M] の static map を作って、使う。の続きです。

こちらが、本題なので、先こちらを記述します。
前回は、50x50[M] の static map を作成したので、今回は、それを、実際 ROS2 で使ってみる話です。

50x50[M] の static map の 巨大サイズゆえの問題が顕在化しました。
従来の手順で、SBC で、Map をロードして、リモート PC の Rviz2 で表示すると、Map が受信できない状態になりました。
WiFi Lan のトラフィックが、対応していないのが原因みたいです。
対策は、幾つかあるみたいですが、今回は、SBC と リモート PC で、それぞれがローカルの、 pgm、yaml をロードして使う方法を試してみました。

方法 1.
今使っている、Static Map のロード launch rtabmap_ros_my localization.launch.py を修正して、topic を、/map 、/local_map の指定ができる様にする。
つまり、SBC と リモート PC で、 map server を、2 本立てて、それぞれ別の topic 名 で、publish させる。
一応、この方法も、OK でした。

ROS2 Jazzy で、50x50[M] の static map を作って、使う。

最初は、50x50[M] の static map を作るから。
QGIS で、自宅を中心に、周辺の道路を、50x50[M] の Static Map に落としてみた。
今回も、Google Ai に聞きながらの作成ぞね!!

Google Ai に教わった手順ですが、
Step 1: プロジェクト作成と「メートル単位」の設定
まずはQGISを起動し、長さをメートルで扱えるように座標系を設定します。

QGISを開き、「新規プロジェクト」を作成します。
画面右下の 「EPSG:XXXX」(デフォルトはEPSG:3857など)をクリックします。
フィルター欄に 6677 と入力し、JGD2011 / Japan Plane Rectangular CS IX(平面直角座標第Ⅸ系:高知県などをカバー)を選択して「OK」を押します。
※もしお住まいが九州なら 6676、近畿なら 6674、関東なら 6681 など、お住まいの地域に合った平面直角座標系を選択してください。
おんちゃんは、四国なので、6672 を指定しました。
これでQGIS内の単位が完全に「メートル」になります。

DINOv2 を使って、ROS2 SLAM(自己位置推定)に役立てる。

前回、フィジカルAi で ROS2 自立走行ロボットを動かす。#2
で、Diffusion policy の input に、DINOv2 を使った model を試したが、

"DINOv2 の input 画像に何か入れると、特徴量を返してくる" 特性を活かすと、
一度通った場所のランドマークを記憶させられる様じゃ。
これを使えば、SLAM(自己位置推定)が、行える。もう、Static Map を予め作る必要がない。
Google Ai に色々訪ねていたら、教えてくれた。

なんとも便利な Model を、Meta(旧 Facebook)が作ってくれたもんじゃ!!

1. 概略は、
1.1 SLAM データ作成。
1) 屋外で、ロボットの走行コース上で、10[M] ごとに、RGB Camera の画像と、その時の、gnss-rtk から求めた、緯度、経度と、ロボットの向きのデータを集めて回る。
この時、no を順に割り当てて行く。

2) 上記データの画像をDINOv2 の feed させて、その特徴データを、Faiss( ベクトルデータが扱える DB) に、順に登録する。
以上で、 今回の、SLAM コース情報の出来上がり。

1.2 ROS2 diff car ロボットでの利用。
3) ROS2 diff car ロボットで、RGB カメラの画像を、DINOv2 の feedさせて、 出てきた特徴量で、Faiss の検索をかける。
特徴量が見つかると、Faiss は、登録時の no を返してくるので、
先に集めた、data の no と一致する、緯度、経度から、今の 位置を得る。
しかし、gnss-rtk があれば、必要が無いが!!
gnss-rtk が使えない、室内だと使えるかも。

検証コードは、python pytorch で、簡単に書ける。
Googl Ai に聞けば、コードを教えてくれる。
このページの 1.概略 の部分を Google Ai に聞けば教えてくれる。
コード自体は、簡単だから、試してみては?

ただし、Inference 時のハードのリソースが、結構要求される。
ROS2 実機 Diff Drive Car で実装、テストするには、ここが難問か!!

以前、SLAM でランドマークを使う方法を模索していたが、
ROS2 自作 Turtlebot3 による 草刈りロボット開発。#15 Robot Localization
これが、上記の、回答になりそう。

このアーカイブについて

このページには、2026年7月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2026年6月です。

次のアーカイブは2026年8月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

月別 アーカイブ

ウェブページ

サイトナビ