A ROS Node providing support for PMD Camcube 3.0 integration with ROS.
- Author: Pinaki Sunil Banerjee
- License: BSD
The package provides an integration of PMD Camcube 3.0 drivers with ROS. The copyrighted libraries from PMD Vision will be required to access the hardware.
- libpmdaccess2.so file provided in PMDSDK2 should copied to a directory where the operating system can find it (e.g. /usr/local/lib)
The include directory and plugins directory from PMDSDK2 should be in a directory where the operating system can find it (e.g. /usr/include/) or the path to these directories should be exported to the environment variable : $PMDDIR
Usb Device rules
Please see the included file usb-rule-setup.txt for instructions to set a new usb-dev rule for pmd-camcube
Download the stack in a location identifiable by ROS, i.e the path to the stack should be reachable through $ROS_PACKAGE_PATH. Then,
$ rosmake PMD_CAMCUBE_3
Running the driver
$ rosrun PMD_CAMCUBE_3 pmd_camcube_3_node
Visualization in rviz
$ rosrun rviz rviz
Set the fixed_frame as /tf_pmd_camcube
- Add a Pointcloud2 topic to visualize the depthclouds. Three different set of points are published with following topic names:
- /depth_non_filtered : raw data from the pmd camera
- /depth_filtered : after applying statistical outlier detection from pcl
- /depth_outliers : the outliers found after applying the filter for statistical noise detection from pcl
The filtered point clouds will be shown only when a filter option (AmplitudeFilter/StatisticalNoiseFilter) is turned on. The outliers will be published only for StatisticalNoiseFilter. The StatisticalNoiseFilter will make induce some delay between frames, due to extra computaion time required for removing outliers.
To use the filter and change camera parameters, use dynamic_reconfigure from ros. To use it do
$ rosrun dynamic_reconfigure reconfigure_gui
Select /pmd_camcube_3 to view the options available for modifications.
Following camera parameters and filtering methods can be accessed using the dynamic reconfigure
- Integration_Time : Modifies the integration time of the sensor
- Modulation_Frequency : Modifies the modulation frequency of the sensor
At_Least : If this option is turned on then the best possible modulation frequency will be set to the sensor. The value will be chosen such that it is at least the value indicated by field Modulation_Frequency
At_Most : If this option is turned on then the best possible modulation frequency will be set to the sensor. The value will be chosen such that it is at most the value indicated by field Modulation_Frequency
Statistical_Noise_Filter_On : This will start the statistical noise filter algorithm from pcl (Point Cloud Library)oise_Filtering_NoOfNeighbours
Noise_Filtering_NoOfNeighbours : Indicates the No. of neighbors to be considered for statistical noise filtering
- Std_Dev_Mul_Threshold : Standard Deviation Multiplier Threshold for applying statistical noise reduction
- Amplitude_Filter_On : Indicates if the amplitude filteration to be used or not
- Amplitude_Threshold : Image pixels with lesser aplitude values will be filtered out. Amplitude_Filter_On status should be true to apply this filter.
A demo of visualizing point-cloud data in rviz obtained from pmd-camcube 3.0 is shown below: