#はじめに
点群のボクセル化は他の複雑な点群処理(点群の差分検出やロボットの干渉チェックなど)の基本的な処理として使用されています。
その基本的な点群処理であるボクセル化がどの様な動作をしているのか気になり様子を見てみることにしました。
動作の確認にはjsk-pcl-rosパッケージのOctreeVoxelGridを使用しました。
#動作までの流れ
まずは必要なパッケージをインストールします。
install
sudo apt-get install -y ros-melodic-jsk-pcl-ros
sudo apt-get install -y ros-melodic-jsk-visualization
git clon https://github.com/hoshianaaa/jsk_pcl_ros_samples.git
cd ~/catkin_ws/src
catkin build
または
catkin make
source ~/catkin_ws/devel/setup.bash
次に以下のコマンドでサンプルを起動します。
roslaunch jsk_pcl_ros_samples octree_voxel_grid.launch
rqt_reconfigureを使用すると動的にパラメータを変更できます。
以下のコマンドで起動します。
rosrun rqt_reconfigure rqt_reconfigure
#結果
実行した結果は以下のようになりました。
パラメータの変化に応じて表示されるボクセルのサイズが変化しボクセル化の様子が分かりやすくなっており、今後このパラメータを設定の際に役に立ちそうだと感じました。
#プログラムの中身
サンプルの内部は写真のようになっていてmain部分のnodeletでボクセル化を行っています。このnodeletに自分の好きなトピック名を設定するだけで自分の好きな点群メッセージをボクセル化することができます。
octree_voxel_grid.launch
<launch>
<arg name="file_name" value="$(find jsk_pcl_ros_samples)/pcd/bunny.pcd"/>
<!-- rate : if publish at 10 Hz, set 0.1 -->
<arg name="rate" value="0.1"/>
<node pkg="pcl_ros" type="pcd_to_pointcloud" name="pcd_to_pointcloud" args="$(arg file_name) $(arg rate)" output="screen">
<remap from="cloud_pcd" to="/points"/>
<param name="frame_id" value="base_link" />
</node>
<arg name="INPUT" default="/points"/>
<arg name="DEFAULT_NAMESPACE" default="octree_voxel_grid"/>
<arg name="create_manager" default="true" />
<arg name="manager" default="octree_voxel_grid_manger" />
<group ns="$(arg DEFAULT_NAMESPACE)">
<node if="$(arg create_manager)"
pkg="nodelet" type="nodelet" name="$(arg manager)"
args="manager" output="screen"/>
<node pkg="nodelet" type="nodelet"
name="octgrid"
args="standalone jsk_pcl/OctreeVoxelGrid"
output="screen" clear_params="true">
<remap from="~input" to="$(arg INPUT)" />
<param name="publish_marker" value="true" />
</node>
</group>
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find jsk_pcl_ros_samples)/rviz/octree_voxel_grid.rviz" required="true" />
</launch>
#サンプル
以下のパッケージで今回の内容を含めたjsk-pcl-rosのサンプルを簡単に試すことができます。