LoginSignup
1
7

More than 3 years have passed since last update.

点群のボクセル化(jsk_pcl_ros OctreeVoxelGrid)

Last updated at Posted at 2021-03-23

はじめに

点群のボクセル化は他の複雑な点群処理(点群の差分検出やロボットの干渉チェックなど)の基本的な処理として使用されています。

その基本的な点群処理であるボクセル化がどの様な動作をしているのか気になり様子を見てみることにしました。

動作の確認には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

結果

実行した結果は以下のようになりました。

パラメータの変化に応じて表示されるボクセルのサイズが変化しボクセル化の様子が分かりやすくなっており、今後このパラメータを設定の際に役に立ちそうだと感じました。

Screenshot from 2021-03-24 04-41-32.png

Screenshot from 2021-03-24 04-41-41.png

Screenshot from 2021-03-24 04-41-51.png

プログラムの中身

サンプルの内部は写真のようになっていてmain部分のnodeletでボクセル化を行っています。このnodeletに自分の好きなトピック名を設定するだけで自分の好きな点群メッセージをボクセル化することができます。
Screenshot from 2021-03-24 03-43-51.png

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のサンプルを簡単に試すことができます。

1
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
7