@@ -26,10 +26,7 @@ plane segmentation is done independently and runs on CPU.
2626
2727## Installation
2828
29- The following installation instructions are for elevation mapping. For the plane segmentation, please find additional instructions in the
30- dedicated README.
31-
32- ### CUDA & cuDNN
29+ #### CUDA & cuDNN
3330
3431The tested versions are CUDA10.2, 11.6
3532
@@ -38,7 +35,7 @@ The tested versions are CUDA10.2, 11.6
3835
3936Check how to install [ here] ( doc/cuda-installation.md ) .
4037
41- ### Python dependencies
38+ #### Python dependencies
4239
4340You will need
4441
@@ -52,7 +49,7 @@ For traversability filter, either of
5249- [ torch] ( https://pytorch.org/ )
5350- [ chainer] ( https://chainer.org/ )
5451
55- Optinally, opencv for inpainting filter.
52+ Optionally, OpenCV for inpainting filter.
5653
5754- [ opencv-python] ( https://opencv.org/ )
5855
@@ -103,7 +100,7 @@ Install by following the official documents.
103100Pytorch uses ~ 2GB more GPU memory than Chainer, but runs a bit faster.
104101Use parameter ` use_chainer ` to select which backend to use.
105102
106- ### ROS package dependencies
103+ #### ROS package dependencies
107104
108105- [ pybind11_catkin] ( https://github.com/ipab-slmc/pybind11_catkin )
109106- [ grid_map] ( https://github.com/ANYbotics/grid_map )
@@ -113,7 +110,7 @@ sudo apt install ros-noetic-pybind11-catkin
113110sudo apt install ros-noetic-grid-map-core ros-noetic-grid-map-msgs
114111```
115112
116- ## On Jetson
113+ ### On Jetson
117114
118115#### CUDA CuDNN
119116
@@ -159,12 +156,57 @@ If the Jetson is set up with Jetpack 4.5 with ROS Melodic the following package
159156git clone
[email protected] :ros/filters.git -b noetic-devel
160157```
161158
159+ ### Plane segmentation dependencies
160+
161+ #### OpenCV
162+
163+ ``` bash
164+ sudo apt install libopencv-dev
165+ ```
166+
167+ #### Eigen
168+
169+ ``` bash
170+ sudo apt install libeigen3-dev
171+ ```
172+
173+ #### CGAL
174+
175+ CGAL5 is required. It will be automatically downloaded and installed into the catkin workspace by the cgal5_catkin package. Make sure you
176+ have the third-party libaries installed on you machine:
177+
178+ ``` bash
179+ sudo apt install libgmp-dev
180+ sudo apt install libmpfr-dev
181+ sudo apt install libboost-all-dev
182+ ```
183+
184+ #### PCL (for ANYmal research users)
185+
186+ PCL is required, but the ANYbotics distributed version does not contain visualization components. With pcl_visualization_catkin, the missing
187+ components are provided into your catkin workspace (for pcl 1.10). Additionally vtk7 is required, DO NOT install this on the ANYmal onboard
188+ PCs, only on OPC and simulation PCs.
189+
190+ ``` bash
191+ sudo apt install libvtk7-dev
192+ catkin build pcl_visualization_catkin
193+ ```
194+
195+ #### JSK-visualization
196+
197+ For rviz-visualization the jsk-library is used.
198+
199+ ``` bash
200+ sudo apt-get install ros-noetic-jsk-visualization
201+ ```
202+
162203## Usage
163204
164205### Build
165206
166207``` bash
167208catkin build elevation_mapping_cupy
209+ catkin build convex_plane_decomposition_ros
168210```
169211
170212#### Errors
@@ -191,6 +233,12 @@ Basic usage.
191233roslaunch elevation_mapping_cupy elevation_mapping_cupy.launch
192234```
193235
236+ For the plane segmentation node
237+
238+ ``` bash
239+ roslaunch convex_plane_decomposition_ros convex_plane_decomposition.launch
240+ ```
241+
194242### Run TurtleBot example
195243
196244First, install turtlebot simulation.
@@ -226,26 +274,29 @@ Velocity inputs can be sent to the robot by pressing the keys `a`, `w`, `d`, `x`
226274
227275### Subscribed Topics
228276
229- * topics specified in ** ` pointcloud_topics ` ** in ** ` parameters.yaml ` ** ([ sensor_msgs/PointCloud2] )
277+ * topics specified in ** ` pointcloud_topics ` ** in ** ` elevation_mapping_cupy/config/ parameters.yaml` ** ([ sensor_msgs/PointCloud2] )
230278
231279 The distance measurements.
232280
233281* ** ` /tf ` ** ([ tf/tfMessage] )
234282
235283 The transformation tree.
236284
285+ * The plane segmentation node subscribes to an elevation map topic ([ grid_map_msg/GridMap] ). This can be configured in
286+ ** ` convex_plane_decomposition_ros/config/parameters.yaml ` **
287+
237288### Published Topics
238289
239- The topics are published as set in the rosparam.
290+ For elevation_mapping_cupy, topics are published as set in the rosparam.
240291You can specify which layers to publish in which fps.
241292
242293Under ` publishers ` , you can specify the ` topic_name ` , ` layers ` ` basic_layers ` and ` fps ` .
243294
244295``` yaml
245296publishers :
246297 your_topic_name :
247- layers : ['list_of_layer_names', 'layer1', 'layer2'] # Choose from 'elevation', 'variance', 'traversability', 'time' + plugin layers
248- basic_layers : ['list of basic layers', 'layer1'] # basic_layers for valid cell computation (e.g. Rviz): Choose a subset of `layers`.
298+ layers : [ 'list_of_layer_names', 'layer1', 'layer2' ] # Choose from 'elevation', 'variance', 'traversability', 'time' + plugin layers
299+ basic_layers : [ 'list of basic layers', 'layer1' ] # basic_layers for valid cell computation (e.g. Rviz): Choose a subset of `layers`.
249300 fps : 5.0 # Publish rate. Use smaller value than `map_acquire_fps`.
250301` ` `
251302
@@ -255,7 +306,6 @@ Example setting in `config/parameters.yaml`.
255306
256307 The entire elevation map.
257308
258-
259309* **`elevation_map_recordable`** ([grid_map_msg/GridMap])
260310
261311 The entire elevation map with slower update rate for visualization and logging.
@@ -264,6 +314,26 @@ Example setting in `config/parameters.yaml`.
264314
265315 The filtered maps using plugins.
266316
317+ The plane segmentation node publishes the following :
318+
319+ * **`planar_terrain`** ([convex_plane_decomposition_msgs/PlanarTerrain])
320+
321+ A custom message that contains the full segmentation as a map together with the boundary information.
322+
323+ * **`filtered_map`** ([grid_map_msg/GridMap])
324+
325+ A grid map message to visualize the segmentation and some intermediate results. This information is also part of **`planar_terrain`**.
326+
327+ * **`boundaries`** ([jsk_recognition_msgs/PolygonArray])
328+
329+ A set of polygons that trace the boundaries of the segmented region. Holes and boundaries of a single region are published as separate
330+ polygons with the same label.
331+
332+ * **`insets`** ([jsk_recognition_msgs/PolygonArray])
333+
334+ A set of polygons that are at a slight inward offset from **`boundaries`**. There might be more insets than boundaries since the inward
335+ shift can cause a single region to break down into multiple when narrow passages exist.
336+
267337# Plugins
268338
269339You can create your own plugin to process the elevation map and publish as a layer in GridMap message.
@@ -303,11 +373,11 @@ example: # Use the same name as your file n
303373 add_value: 2.0 # Example param
304374` ` `
305375
306- Finally, add your layer name to publishers in `config/parameters.yaml`.
307- You can create a new topic or add to existing topics.
376+ Finally, add your layer name to publishers in `config/parameters.yaml`. You can create a new topic or add to existing topics.
377+
308378` ` ` yaml
309- plugin_example: # Topic name
310- layers: ['elevation', 'example_layer']
311- basic_layers: ['example_layer']
379+ plugin_example: # Topic name
380+ layers: [ 'elevation', 'example_layer' ]
381+ basic_layers: [ 'example_layer' ]
312382 fps: 1.0 # The plugin is called with this fps.
313383` ` `
0 commit comments