見出し画像

ROS入門 (54) - UnityによるSLAMの実行

UnityによるSLAMの実行の手順をまとめました。

・Noestic
・Unity 2020.3

前回

1. SMAL

「SLAM」を使えば、地図の準備なしにナビゲーションができます。

2. 実験環境の準備

ROS入門 (52) - Unityによるナビゲーション用の地図作成」と同様です。

3. SLAMの準備

基本的に「ROS入門 (53) - Unityによるナビゲーションの実行」とほぼ同じです。「map_server」を「gmapping」に変更するだけになります。

(1) 「~/catkin_ws/src/my_mobile_robot/launch」に「slam.launch」を生成し、以下のように編集。

・slam.launch

<launch>
  <rosparam param="/use_sim_time">true</rosparam>

  <!--エンドポイントの起動-->
  <param name="ROS_IP" value="0.0.0.0" />
  <param name="ROS_TCP_PORT" value="10000" />
  <node name="server_endpoint" pkg="ros_tcp_endpoint" type="default_server_endpoint.py" args="--wait" output="screen" respawn="true" />

  <!-- gmappingの起動 -->
  <node pkg="gmapping" type="slam_gmapping" name="mapper">
    <param name="scan" value="base_scan" />
  </node>

  <!--amclの起動-->
  <include file="$(find amcl)/examples/amcl_diff.launch" />

  <!--move_baseの起動-->
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find my_mobile_robot)/config/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find my_mobile_robot)/config/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find my_mobile_robot)/config/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find my_mobile_robot)/config/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find my_mobile_robot)/config/base_local_planner_params.yaml" command="load" />
  </node>

</launch>

4. SLAMの実行

SLAMの実行手順は、次のとおりです。

(1) launchファイルの起動。

$ roslaunch my_mobile_robot slam.launch

(2) UnityのPlayボタンでシミュレータを起動。
Visualizationsで/mapを可視化すると、リアルタイムに地図ができていく様子がわかります。

(3) ゴール地点の指定。

$ rosrun my_mobile_robot goal_pose.py

移動ロボットがゴール地点まで障害物を避けながら移動します。

次回



この記事が気に入ったらサポートをしてみませんか?