:tocdepth: 1 Octomapを使って3Dマップを作る ****************************************************** このページでは、RGBDカメラ付きのドローンと `octomap `_ パッケージを使用して3Dマップを作成します。 モデルを作成する ====================================================== RGBDカメラ付きのIrisのSDFファイルは以下のとおりです。 .. literalinclude:: ../../models/iris_depth_camera/model.sdf :linenos: :language: xml :caption: model.sdf 以下がRGBDカメラのセンサ部分の定義です。 ROSプラグインについては、`Gazebo plugins in ROS `_ を、 ```` タグ内の記述については、`gazebo_models / kinect / model.sdf `_ を参考にしました。 .. code-block:: xml :linenos: 20 1.047198 640 320 R8G8B8 0.4 3.5 0.2 true 0.0 camera_ir /camera/depth/image_raw /camera/depth/camera_info /camera/depth/image_raw /camera/depth/camera_info /camera/depth/points camera_link 0.05 0 0 0 0 0 0 0 0 0 0 RGBDカメラが正常に動作するか確認するために、以下のような、ロボットのベースフレームからRGBDカメラへのTFをブロードキャストする設定を書いたLaunchファイル作成します。 .. code-block:: xml :linenos: :caption: mymodel_sitl_depth_camera.launch 以下のような点群が表示されればOKです。 .. image:: imgs/iris_depth.jpg Octomapの準備 ====================================================== Octomapのインストール ------------------------------------------------------ .. code-block:: bash sudo apt install ros-kinetic-octomap-mapping Launchファイル ------------------------------------------------------ Octomapによる3D地図生成を行うノードである、octomap_server_nodeを実行するためのLaunchファイルを作成します。 octomap_serverパッケージにあるoctomap_mapping.launchファイルを元に変更を加えるので、以下のコマンドでファイルをコピーします。 .. code-block:: bash roscp octomap_server octomap_mapping.launch ~/catkin_ws/src/px4_sim_pkg/launch/ 編集後のLaunchファイルは以下のとおりです。 今回の設定では、グローバルフレームが ``map`` になっており、点群は ``/camera/depth/points`` にパブリッシュされるので、その部分を変更してあります。 .. literalinclude:: ../../launch/map/octomap_mapping.launch :linenos: :language: xml :caption: octomap_mapping.launch 実行する ------------------------------------------------------ シミュレーション環境を起動します。 今回はwillow_garage.worldをワールドファイルとして使用します。 .. code-block:: bash roslaunch px4_sim_pkg mymodel_sitl_depth_cam.launch world:=$HOME/catkin_ws/src/dronedoc/worlds/willow_garage.world 次に、octomap_server_nodeノードを起動します。 .. code-block:: bash roslaunch px4_sim_pkg octomap_mapping.launch 作成されたマップを見るためにRvizを起動しておきます。 .. code-block:: bash rviz 最後に、mavteleopノードを起動します。 .. code-block:: bash roslaunch px4_sim_pkg mavros_teleop.launch ゲームパッドから操作できるようにするために、飛行モードをOFFBOARDに変更します。 .. code-block:: bash rosrun mavros mavsys mode -c OFFBOARD ドローンを動かすと、以下のように3Dマップが作成されます。 この動画では ``resolution`` パラメータを変更して地図の解像度を変えてあります。 .. image:: imgs/octomap.gif 参考 ====================================================== `OctoMap 3D Models with ROS/Gazebo - PX4 Developer Guide `_ PX4 SITL環境でOctomapによるマッピングを行う