Skip to content

Commit b68f6f1

Browse files
committed
move plane segmentation README to top README
1 parent bed78e4 commit b68f6f1

File tree

2 files changed

+88
-65
lines changed

2 files changed

+88
-65
lines changed

README.md

Lines changed: 88 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -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

3431
The tested versions are CUDA10.2, 11.6
3532

@@ -38,7 +35,7 @@ The tested versions are CUDA10.2, 11.6
3835

3936
Check how to install [here](doc/cuda-installation.md).
4037

41-
### Python dependencies
38+
#### Python dependencies
4239

4340
You 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.
103100
Pytorch uses ~2GB more GPU memory than Chainer, but runs a bit faster.
104101
Use 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
113110
sudo 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
159156
git 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
167208
catkin build elevation_mapping_cupy
209+
catkin build convex_plane_decomposition_ros
168210
```
169211

170212
#### Errors
@@ -191,6 +233,12 @@ Basic usage.
191233
roslaunch 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

196244
First, 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.
240291
You can specify which layers to publish in which fps.
241292

242293
Under `publishers`, you can specify the `topic_name`, `layers` `basic_layers` and `fps`.
243294

244295
```yaml
245296
publishers:
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

269339
You 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
```

plane_segmentation/README.md

Lines changed: 0 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -5,53 +5,6 @@ This is a C++ ROS package for extracting convex polygons from elevation maps.
55
In a first step, the terrain is segmented into planes, and their non-convex contour is extracted.
66
In a second step, a local convex approximation can be obtained.
77

8-
## Installation
9-
10-
### Dependencies
11-
12-
#### OpenCV
13-
Make sure you have openCV installed.
14-
You can execute the following command to install it.
15-
```bash
16-
sudo apt-get install libopencv-dev
17-
```
18-
19-
#### Eigen
20-
```bash
21-
sudo apt install libeigen3-dev
22-
```
23-
24-
#### CGAL
25-
CGAL5 is required. It will be automatically downloaded and installed into the catkin workspace by the cgal5_catkin package.
26-
Make sure you have the third-party libaries installed on you machine:
27-
```bash
28-
sudo apt-get install libgmp-dev
29-
sudo apt-get install libmpfr-dev
30-
sudo apt-get install libboost-all-dev
31-
```
32-
33-
#### PCL
34-
PCL is required, but the ANYbotics distributed version does not contain visualization components.
35-
With pcl_visualization_catkin, the missing components are provided into your catkin workspace (for pcl 1.10).
36-
Additionally vtk7 is required, DO NOT install this on the ANYmal onboard PCs, only on OPC and simulation PCs.
37-
```bash
38-
sudo apt-get install libvtk7-dev
39-
```
40-
41-
### ROS package dependencies
42-
43-
#### JSK-visualization
44-
For rviz-visualization the jsk-library is used.
45-
```bash
46-
sudo apt-get install ros-noetic-jsk-visualization
47-
```
48-
49-
#### Grid Map
50-
Grid map is available through ANYmal-research, apt install, or you can add it to your workspace. You can clone it using:
51-
```bash
52-
git clone https://github.com/ANYbotics/grid_map.git
53-
```
54-
558
## Usage
569
### Build
5710
```bash

0 commit comments

Comments
 (0)