leica_point_cloud_processing package from leica_point_cloud_processing repoleica_point_cloud_processing |
|
Package Summary
Tags | No category tags. |
Version | 0.0.0 |
License | Apache 2.0 |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/fada-catec/leica_point_cloud_processing.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2021-02-02 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Ines Lara Sicilia
Authors
- Ines Lara Sicilia
LEICA POINT CLOUD PROCESSING
This package has been developed to help identifying FODs in aeronautical structures.
Using point cloud analysis techniques, this software aims to compare the current state of the structure with previous state to identify possible foreign objects. It opens up the posibility of applying a pre-scan in which it is guaranteed to be free of FODs or a CAD of the structure that is ideal and free of fods.
It has been designed to be used in combination with the leica_scanstation package, which allows to control the scanstation to make a scan of an aeronautical part. When the scan is finished, you get the point cloud that proceeds to be analyzed. In order to reproduce this behaviour if the device is not available, we created a simulator.
It is involved in the ROSIN project Large_3D_inspection
Set up
-
Create a workspace and clone leica_scanstation (for listed dependencies)
mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src git clone https://github.com/fada-catec/leica_scanstation.git
-
Clone this repo
cd ~/catkin_ws/src git clone https://github.com/fada-catec/leica_point_cloud_processing.git
-
Compile (be careful: package leica_scanstation_ros is meant to be compiled on Windows)
cd ~/catkin_ws/ catkin_make -DCATKIN_BLACKLIST_PACKAGES="leica_scanstation_ros"
Nodes
load_clouds node will load both scanned and CAD clouds into ROS topics: /target/cloud
and /source/cloud
. This is done after calling rosservice /publish_clouds
.
Make sure pointcloud files are on the correct folder, specified in ROS param server as /pointcloud_folder
(default: package leica_scanstation_utils/pointclouds).
Supported formats: .obj
and .ply
for CAD files and .pcd
for scanned files.
node is the main node that perform alignment and FOD detection. It opens subscribers to clouds topics and start process. It’s procedure is based on a Finite State Machine with the states that are shown in the package wiki.
Pre Alignment process
The process of detecting FODs is based on comparing two pointclouds. Thus, the first step is to get both clouds registered PCL Registration API. This is achieved by a pre alignment process and an iterative algorithm called GICP. The pre alignment step reduces the GICP process time but may vary it’s effectiveness depending on the input clouds. In this package, four different methods of alignment are presented. The prefered method must be set on launch before starting inspection procedure.
- HARRIS. This method is focused on finding corners and set them as keypoints.
- BOUNDARY. This method detects all parts edges and set them as keypoints.
- MULTISCALE. This method is able to find keypoints that keeps relevance on different scales. It is recommended when compairing cloud with a previous scan.
- NORMALS. This is an in-house method based on relation between point clouds normals. It finds correspondences from orientation of dominant normals.
- NONE. It is possible to avoid pre alignment process if both clouds are close enough and start inmediatly GICP.
Usage
-
Tell load_clouds to publish clouds. Clouds should be available in path specified in param
/pointcloud_folder
. You can use examples pointclouds.rosrun leica_point_cloud_processing load_clouds rosservice call /publish_clouds "source_cloud_file: 'scan_fods.pcd' target_cloud_file: 'cad.ply'"
-
Launch the state machine node. Inspection process starts if both clouds are available in ROS topics:
/target/cloud
and/source/cloud
. As the target cloud indicated in example above comes from a CAD file, set paramusing_CAD
to true.roslaunch leica_point_cloud_processing leica_point_cloud_processing.launch using_CAD:=true
-
When FOD detection process ends, results clouds are available in ROS topics. You can visualize detected FODs as pointclouds in RViz.
Dependencies
-
Boost, Flann, Eigen3, OpenNI, OpenNI2
sudo apt-get install libboost1.58* libflann1.8 libeigen3-dev libopenni-dev libopenni2-dev
-
VTK > 6
wget http://www.vtk.org/files/release/7.1/VTK-7.1.0.tar.gz tar -xf VTK-7.1.0.tar.gz cd VTK-7.1.0 && mkdir build && cd build cmake .. make sudo make install
-
PCL >1.8.1
wget https://github.com/PointCloudLibrary/pcl/archive/pcl-1.8.1.tar.gz tar -xf pcl-1.8.1.tar.gz cd pcl-pcl-1.8.1 && mkdir build && cd build cmake .. -DBUILD_tools=ON make sudo make install
-
PCL-ROS
sudo apt-get install ros-$ROS_DISTRO-pcl-* sudo apt-get install pcl-tools
-
PYTHON-PCL
pip3 install python-pcl
Code API
Read documentation leica_point_cloud_processing/doc/html/index.html
Acknowledgement
Supported by ROSIN - ROS-Industrial Quality-Assured Robot Software Components.
More information: rosin-project.eu
This project has received funding from the European Union’s Horizon 2020
research and innovation programme under grant agreement no. 732287.
Help
Ines M. Lara - imlara@catec.aero
Wiki Tutorials
Launch files
- launch/leica_point_cloud_processing.launch
-
- align_method [default: 1]
- using_CAD [default: false]