スキャンマッチングSLAMのLaunchファイルの実装例をまとめました。

スキャンマッチングSLAM実装のシリーズ

【ROS】スキャンマッチングSLAMの実装(Launchファイル実装編)

スキャンマッチングの実装例を紹介するシリーズのうち、この記事は第四弾の「Launchファイル実装編」です。第二、三弾でご紹介したプログラムをまとめて動かすためのLaunchファイルの実装例をご紹介します。

ファイル名の確認

scan_matching/
 ┣ launch/
 ┃ ┗ ndt_scan_matching.launch
 ┣ src/
 ┃ ┣ scan_matching_ekf.cpp
 ┃ ┗ scan_matching_ndt.cpp
 ┣ CMakeLists.txt
 ┗ package.xml

ndt_scan_matching.launch

この記事で紹介するLaunchファイルです。実装の詳細は「ソースコード」にあります。

scan_matching_ekf.cpp

第二弾の記事で紹介したEKFのプログラムです。

【ROS】スキャンマッチングSLAMの実装(EKF実装編)

scan_matching_ndt.cpp

第三弾の記事で紹介したNDTのプログラムです。

【ROS】スキャンマッチングSLAMの実装(NDT実装編)

ソースコード(rosbagデータで検証する場合)

<launch>
	<!-- global rosparam -->
	<param name="use_sim_time" value="true"/>

	<!-- rosbag -->
	<node pkg="rosbag" type="play" name="player" args="--clock example.bag"/>

	<!-- rviz -->
	<node pkg="rviz" type="rviz" name="rviz"/>

	<!-- main -->
	<node pkg="scan_matching" name="scan_matching_ekf" type="scan_matching_ekf">
		<param name="sigma_imu" type="double" value="1e-5"/>
		<param name="sigma_odom" type="double" value="1e-5"/>
		<param name="sigma_ndt" type="double" value="1e+1"/>
	</node>
	<node pkg="scan_matching" name="scan_matching_ndt" type="scan_matching_ndt">
		<param name="pc_range" type="double" value="20.0"/>
		<param name="leafsize_source" type="double" value="0.15"/>
		<param name="leafsize_target" type="double" value="0.2"/>
		<param name="trans_epsilon" type="double" value="1e-3"/>
		<param name="stepsize" type="double" value="0.1"/>
		<param name="resolution" type="double" value="0.5"/>
		<param name="max_iterations" type="int" value="30"/>
	</node>
</launch>

実装の解説

  • 上記はrosbagデータを使う場合の実装例です
  • EKFやNDTのパラメータをLaunchファイル内で与えられるようになっています

さいごに

スキャンマッチングSLAMのLaunchファイル実装編を紹介してみました。参考になれば幸いです。


以上です。

スキャンマッチングSLAM実装のシリーズ

Ad.