Turtlebot3/Raspberry4版の製作(2号機)シュミレーション:e-Manual【11】~

TurtleBot3は、シミュレーションで仮想ロボットを使用してプログラムおよび開発できる開発環境をサポートしています。

これを行うには2つの開発環境があります。
 1つは偽ノードと3D可視化ツールRVizを使用 -> 偽ノード法は、ロボットモデルと動きのテストに適していますが、センサーは使用できません。
 もう1つは3DロボットシミュレータGazeboを使用 ー> SLAMとナビゲーションをテストする必要がある場合は、シミュレーションでIMU、LDS、
                          カメラなどのセンサーを使用できるGazeboの使用します。

【 偽ノードと3D可視化ツールRVizを使用 】
 PC:$ export TURTLEBOT3_MODEL=burger    設定済みで実行しない。
 PC:$ roslaunch turtlebot3_fake turtlebot3_fake.launch

 PC:$ export TURTLEBOT3_MODEL=burger    設定済みで実行しない。
 PC:$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch



【 3DロボットシミュレータGazeboを使用 】
実ロボットのセンサを使ってみます。
Gazeboを使用してシミュレーションするには2つの方法があります。
 最初の方法はturtlebot3_gazeboパッケージを介してROSで使用する。
 2番目の方法はROS を使用せずにガゼボとturtlebot3_gazebo_pluginプラグインのみを使用する方法です。

【 11.2.1:GazeboのROSパッケージ 】
初めてGazeboを実行する場合、通常より少し時間がかかります。

【 11.2.1.1:さまざまな世界でシミュレーション 】
<空の世界>
次のコマンドを使用して「empty world」、ガゼボのデフォルト環境で仮想TurtleBot3をテストできます。

 PC:$ export TURTLEBOT3_MODEL=burger     宣言済みの為、実行しない。
 PC:$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

以下の様な「SSL証明書」のエラーが出ます。<これはインストールしたバージョンにより発生します>


~/.ignition/fuel/config.yaml を修正します。<新しいURLに変更します。>

 (旧)url: https://api.ignitionfuel.org
 (新)url: https://api.ignitionrobotics.org  新しい名前であればなんでもOKです。


修正前の「config.yaml」


修正後の「config.yaml」


これで、エラー無く Gazebo が立ち上がります。



<TurtleBot3 World>
「TurtleBot3 world」は、TurtleBot3シンボルの形状を構成する単純なオブジェクトで構成されるマップです。
「TurtleBot3 world」は、主にSLAMやナビゲーションなどのテストに使用されます。

 PC:$ export TURTLEBOT3_MODEL=burger    宣言済みの為、実行しない。
 PC:$ roslaunch turtlebot3_gazebo turtlebot3_world.launch



<TurtleBot3ハウス>
「TurtleBot3 House」は、家の図面で作られた地図です。
より複雑なタスクのパフォーマンスに関連するテストに適しています。

 PC:$ export TURTLEBOT3_MODEL=burger     すでに宣言済みの為、不要
 PC:$ roslaunch turtlebot3_gazebo turtlebot3_house.launch



【 11.2.1.2:Drive TurtleBot3 】
<Teleoperation on Gazebo>
キーボードでTurtleBot3を制御するには、新しいターミナルウィンドウで以下のコマンドを使用して遠隔操作機能を起動します。

 PC:$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

上記で空世界、World世界、ハウス世界のいずれの世界でも同様に操作できます。

<追突回避>
TurtleBot3の世界でTurtleBot3を自律的に駆動するには、新しいターミナルウィンドウを開いて、以下のコマンドを入力します。

 PC:$ export TURTLEBOT3_MODEL=burger
 PC:$ roslaunch turtlebot3_gazebo turtlebot3_world.launch

新しい端末で、

 PC:$ export TURTLEBOT3_MODEL=burger
 PC:$ roslaunch turtlebot3_gazebo turtlebot3_simulation.launch



<RVizを実行する>
RVizは、シミュレーションの実行中に公開されたトピックを視覚化します。
以下のコマンドを入力して、新しいターミナルウィンドウでRVizを起動できます。

 PC:$ export TURTLEBOT3_MODEL=burger
 PC:$ roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch



【 11.2.1.4:TurtleBot3を使用した仮想SLAM 】
ガゼボの仮想ロボットにSLAMを使用します。

 ・ 仮想ロボットのモデルと希望する仮想世界の地図を選択できます。
 ・ Gazeboの仮想ロボットにSLAMを使用するには、ROSパッケージが必要です。

<仮想SLAM実行手順>
 ガゼボ起動
  PC:$ export TURTLEBOT3_MODEL=burger
  PC:$ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

 地図製作者SLAMを起動
  PC:$ export TURTLEBOT3_MODEL=burger
  PC:$ ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True

 TurtleBot3のリモート制御
  PC:$ export TURTLEBOT3_MODEL=burger
  PC:$ ros2 run turtlebot3_teleop teleop_keyboard

 地図を保存
  PC:$ ros2 run nav2_map_server map_saver -f ~/map



上記で作成されたMapによって仮想ナビゲーションも実行可能ですが、これは実機でのリアルナビゲーションを実行済みの為、ここでの紹介はパス
します。


【 11.2.1.6:複数のTurtleBot3による仮想SLAM 】