Mini Pupper2 ros2 4足歩行 Policy 強化学習 4
Mini Pupper2 ros2 4足歩行 Policy 強化学習 第4弾
Policy を、MlpPolicy から、LSTM 版の MlpLstmPolicy に替えてみた。
こちらは、時間記憶があるそうじゃ!!
これになると、Policy が本当に狡猾になるみたい。
注) これは、google ai の、PPO のパラメータ誤りの所為で、問題ない。
また、train が、重くもなるみたい。
当初 fps:7 程度しか出なくて、しかたなく、Gazebo の 周りの Obj を全て削除して、
更に、Gazebo を、4倍速で回して、ただし、見た目は、4倍速ではなくて、少し速くなった程度。
これで、やっと、fps:14 ほどになった。
train が進むと、fps:23 になった。
PPO のパラメータでの注意!!
下記は、間違い。当初 google ai の言われるままに、下記で、train していたが、1歩目から、2歩目以降が、一向にでない。
sde_sample_freq=4
にして、やっと、pupper が動き出した!!
Gazeboの最近のブログ記事
Mini Pupper2 ros2 4足歩行 Policy 強化学習 2
Mini Pupper2 ros2 4足歩行 Policy 強化学習 第2弾
Policy を、MlpPolicy から、Locomotion-Transformer に替えてみた。
SB3 + PPO + Locomotion-Transformer で、
Ros2 Jazzy Gazebo(Hramonic) で mini_pupper_ros の Mini Pupper2 を使うのは、全てそのまま。
トランスフォーマー型 Policy(Locomotion-Transformer など)
LeRobotのACTと同じように、4足歩行でもTransformer(自己アテンション機構)を採用する動きが主流になっています。
との事。
Transformer を使っているので、試してみた。
おんちゃんが、こちらを選んだのは、
入力 observation の joint-state と、model の output の act(joint-controll) のフィールドが、対応している事。
input と output の位置が同じなのが、むだな学習が、生じなくていいと思う!!
MlpPolicy は、汎用的な model なので、必ずしも、4足ロボット向けと言うわけではなくて、
input と output の対応が取れていなくて、 train の過程で、関連付けるので、時間がかかりそう!!
train させているが、どうも 床を這うような動作を学習してしまう。
body の高さが、低くなったら、ペナルティーにしているが、どうも、改善につながらない。
MlpPolicy も同じ、動きにを学習するみたい。
PPO の問題なのだろうか?
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 を試す。
ふう!! 今回は、結構つかれたが、
表題通り、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 Tugbot Gazebo で 3D LiDAR の SLAM を試してみた。
ROS2 Gazebo for Tugbot が使えるようになったので、本題の 3D LiDAR の SLAMのサンプルを試してみた。
3D LiDAR の SLAMのサンプルは、
@fishros/LeGO-LOAM-ROS2
開発環境
PC: Ubuntu Mate 24.04
ROS2 Jazzy
Gazebo Hramonic
1. ビルド。
$ cd ~/colcon_ws-jazzy/src
$ git clone https://github.com/fishros/LeGO-LOAM-ROS2.git
$ cd ..
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select lego_loam_sr
$ . install/setup.bash
2.Run。
# term1
$ sudo ufw disable
$ ros2 launch tugbot_gazebo_my warehouse.launch.py
# term2
$ ros2 launch lego_loam_sr run.launch.py
で、問題なければ、動くはず。
ただし、手直ししないと動かなかったので、メモして置きました。
ROS2 Gazebo for Tugbot を作ってみた。
3D LiDAR の SLAM サンプルの、
@fishros/LeGO-LOAM-ROS2
Gazebo で試せないかと思ったので、作って見ました。
一応出来たのだが、3D LiDAR の PointClouds2が、Rviz2 でうまく確認できない。--> 一応対応した。
作るにあたっては、下記の2サイトを参考にさせてもらったぞね。ありがとう!!
@ROBOTIS-GIT/turtlebot3_simulations
@/porizou/tugbot_ros2_pkgs
turtlebot3_simulations/turtlebot3_gazebo が、Gazebo 利用の FrameWork みたになっているので、これのファイル構成を流用させてもらいました。
tugbot_ros2_pkgs は、urdf sdf を参考にさせて貰いました。
開発環境
PC: Ubuntu Mate 24.04
ROS2 Jazzy
Gazebo Hramonic
github に公開しました。
@tosa-no-onchan/tugbot_my
ROS2 Jazzy + Turtlebot4 + Gazebo Ionic warehouse Simulation.
Ubuntu Mate 24.04 にしてみたら、Gazebo が、新しくなっていて、今まで使っていた、
Hose World が使えなくで、困っていたら、
パッケージを新しくすると、Turtlebot4 + Gazebo Ionic warehouse Simulation がかんたんに使えた。
All In One みたい。
参考は、
TurtleBot3 + Gazebo + Navigation2 (ROS 2 Jazzy)
ros-navigation/nav2_minimal_turtlebot_simulation
1. git clone
$ cd ~/colcon_ws-jazzy/src
$ git clone -b jazzy https://github.com/ros-navigation/nav2_minimal_turtlebot_simulation.git
$ cd ..
$ rosdep update --rosdistro=${ROS_DISTRO} && rosdep install --from-path src/nav2_minimal_turtlebot_simulation -r -s
必要な、パッケージが一覧ででてくるので、
$ sudo apt install xxxxx
ソースビルドして、
2. build
$ colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release [--packages-select nav2_minimal_turtlebot_simulation]
$ . install/setup.bash
3. run
$ ros2 launch nav2_bringup tb4_simulation_launch.py headless:=False
で一応、Gazebo 画面と、Rviz2 画面は、でてきた。
しかし、Rviz2 画面で、Navigation の操作ができない。
ROS2 自作 Turtlebot3 による 草刈りロボット開発。#3
副題: ROS2 C++ 自立走行ロボットによる草刈りロボット開発
-- - Auto Mower ----
自作 Turtlebot3 自律走行に向けたプログラム。#12 AutoMap II で、Gazebo House での自動 Mapping ができるので、
今回は、その作成されたマップを使って、Auto Mower を作ってみました。
Auto Mower を試す前に、Auto Map II で、マップを作っておいとうせ。
手動操作で、teleop-keyboard で動かして作っても、OK です。
1. 開発環境
PC
Ubuntu Mate 22.04
ROS2:humble
Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros
GPU: Gazebo で試すなら、GPU が必要みたい。無いと、rtabmap-ros が良く狂って、TF-Map - TF-Odom がぶっ飛ぶみたい。
2. Auto Mower コース計画のアルゴリズム。
1) Static Map を取り込んで、ロボットがいる自由領域(White) の領域を最初に求めます。
2) その自由領域を、ロボットの走行サイズに合わせて、スライスして、そのスライス線に従って、ロボットを走行させる。
以上です。
考えかたは、ずっと以前、ROS and Python で試した方法のままです。
ただし今回は、場所が、 Gazebo House と、 C++ で作成します。
3. 技術的検証。
じっさいに、Auto Mower のプログラムを作る前に、クリアしなといけない技術的問題点を検討します。
Gazebo ROS2 Humbleで、My ワールドを追加する。
下記、ページを参考に、自分で使いたいワールドを追加する方法を考えてみる。
ROS2 Gazebo に world を追加できるか。
1) useful-world-files-for-gazebo-and-ros-2-simulations
2)
CustomRobots / car_junction
3) automaticaddison /
two_wheeled_robot
4) how-to-load-a-urdf-file-into-rviz-ros-2
自作 Turtlebot3 自律走行に向けたプログラム。#12 Ros2 C++ AutoMap II
--- Ros2 Gazebo Turtlebot3 waffle で、C++プログラムによる自律走行でMap を自動作成する 2。 ---
前回、自作 Turtlebot3 自律走行に向けたプログラム。#11 で、rtabmap_ros with Depth Camera の /map の
、
未知領域 と自由領域の境界を目標にロボットを 自律走行させて、2D Map を自動作成しましたが、今回は、障害物の領域のみを使ってみます。
注1) オペレータは、C++ プログラを起動したあとは、人の操作は必要ありません。すべて、ロボットの自律走行で、Map が作成されます。
最後に、Map の保存だけ操作してください。
1. 開発環境
PC
Ubuntu Mate 22.04
ROS2:humble
Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros
注1) 今は、Ros2 Humble 版で、waffle になっています。by nishi 2024.3.12
2. アルゴリズム。
1) /map から、障害物のみを2値画像に変換して、それを、ブロブ化します。
2) 上記ブロブの外周を辿って、一定間隔でアンカーを付けて、そこへロボットを行かせて、/map を更新します。
注1) 『OpenCVによる画像処理入門』(講談社) P157 周囲長 を求める処理を参考にします。
3) ロボットを向かわせる地点は、上記アンカーから、半径Rのマスク処理を、今度は、非障害物に対して行って、その重心の方向へ、ロボットを動かした点とします。
4) ロボットを向かわせている途中、到着点が、障害物に含まれるか近接した場合は、その場所は、止めて、ロボットを次の候補地に向かわせます。
5) ロボットを向かわせる候補地は、ロボットから近い順に選びます。
6) 少し大きめのブロックで、/map を分割して、一度行った所はチェックして、次からは行かないようにします。
アルゴリズムは、簡単じゃ、後は、プログラムで試すのみじゃ。
当初のアルゴリズムは、ちょっと無理だったので、変更したぞね。by nishi 2022.8.16
但し、オンちゃんの GPU が壊れたのでちょっと、意気消沈しちょります。
GPUが買える迄、CPU オンリーで試すしかないぞね!!
その後、Humble 版になったら、非GPU でも、問題なくなりました。
自作 Turtlebot3 自律走行に向けたプログラム。#11 -- Ros2 C++ AutoMap
--- Ros2 Gazebo Turtlebot3 waffle で、C++プログラムによる自律走行でMap を自動作成する。 ---
自作 Turtlebot3 自律走行に向けたプログラム。#10 で、Gazebo & Turtlebot3 burger with Depth Camera and Rtabmap_ros だと、
床が自由領域だと判定できるのが判ったので roslaunch turtlebot3_gazebo turtlebot3_house.launch で、
Burger を起動して、全て C++プログラムで、Houseの中の、自由領域と未知領域の境界を選んで自由に走らせて、
Rtabmap_ros で、Map を完成させられるか試してみます。
注1) オペレータは、C++ プログラを起動したあとは、人の操作は必要ありません。すべて、ロボットの自律走行で、Map が作成されます。
最後に、Map の保存だけ操作してください。
注2) Stereo Camera だと、Rtabmap_ros で、床が自由領域として、 /map に出てこないのでこちらは、この方法ではできません。
あくまでも、Depth Camera の場合です。
注3) 今は、Ros2 Humble 版で、waffle になっています。by nishi 2024.3.12
開発環境
Ubuntu Mate 22.04
Ros2 Humble
Navigation2
Gazebo & Turtlebot3 Waffle
