diff --git a/README.md b/README.md index 0d2aa37848dfffe2e7df054b30e2543c55654972..934a42435d02c27704e15b77a284c4e26b3cbc76 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,15 @@ IRI package created to detect holes in navigation using a depth camera (usually ## Getting Started -The main idea is to select an area in front of the robot where the camera is focused and divide this area in several cells (typically 3). After that, the number of points in each cell is counted and, if this number in any cell is less than a threshold, there is a hole in that cell. +The main idea is to create a 3D box in front of the robot where we want to check if there is any hole and divide this box in several cells (typically 3) in order to be able to specify at which specific region (just in front, at the left of the robot or at the right) there is a hole. After that, the number of points in each cell is counted and, if this number in any cell is less than a threshold, there is a hole in that cell. Otherwise, the terrain is either passable or an obstacle (it is necessary to use an obstacle detection algorithm to differenciate each case). + These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. ### Prerequisites -This package is part of the *3d_navigation* project, so you need to install all the necessary packages in the project to see it running. +This package is part of the *3d_navigation* project, so you need to install all the necessary packages in the project to see it both holes and other obstacles. If you are only interested in detecting holes, you can avoid installing the obstacle detection part. More specifically, this hole detector works after using a filtering chain aplied to the original pointcloud generated by the camera. This means that you need the package *iri_3dnav* for launchers and the package *pcl* for voxel dodwnsampling. + In addition, for compilation, several packages are necessary: *iri_base_algorithm*, *sensor_msgs*, *pcl_ros*, and *iriutils*. ### Installing @@ -28,15 +30,26 @@ cd .. catkin_make ``` -## Params +## Node inputs, outputs and params + +### Subscribers + +* **input**<sensor_msgs::PointCloud2> - It receives a pointcloud (typically the output of a voxel dodwnsampling) and it counts the number of points in every cell. + +### Publishers + +* **hole_zone**<sensor_msgs::PointCloud2> - It outputs the same pointcloud as the input but marking the several cells taken into account with different colours for debugging. +* **hole_obstacle**<sensor_msgs::PointCloud> - It generates a pointcloud with virtual obstacles at the beginning of each cell if the number of points inside it is under the threshold. This pointcloud is sent to the navigation stack to be aware of the presence of an obstacle (a hole in fact) at that position. + +### Params -* **hole_min_p** - No of Points to be hole (less points is a hole). -* **num_cells** - No of cells in the detections zone. -* **box_y** - Y distance hole detection zone. -* **box_x_ini** - Initial X hole detection zone. -* **box_x_end** - X distance hole detection zone. -* **box_z_ini** - Initial Z hole detection zone. -* **box_z_end** - Z distance hole detection zone. +* **hole_min_p** - Threshold of points to consider that there is a hole in a specific cell (less points is a hole). +* **num_cells** - Number of cells in the detection zone. +* **box_y** - Y size of the hole detection box centered on the robot. +* **box_x_ini** - Beginning of hole detection box in the X axis. +* **box_x_end** - End of the hole detection box in the X axis. +* **box_z_ini** - Beginning of hole detection box in the Z axis. +* **box_z_end** - End of the hole detection box in the Z axis. ## Authors @@ -47,4 +60,4 @@ catkin_make ## Acknowledgments * *Terrain classification in complex 3D outdoor environments* paper written by Àngel Santamaria-Navarro, Ernesto H. Teniente, Martà Morta and Juan Andrade-Cetto -* Hat tip to anyone whose code was used +* Hat tip to anyone whose code was used. \ No newline at end of file