Skip to content

Commit c338dbc

Browse files
author
Mihir Dharmadhikari
committed
GBPlanner2 release
1 parent b0c77d0 commit c338dbc

File tree

90 files changed

+16148
-2932
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+16148
-2932
lines changed

.clang-format

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
Language: Cpp
3+
BasedOnStyle: Google
4+
ColumnLimit: 80
5+
DerivePointerAlignment: false
6+
PointerAlignment: Left
7+
IncludeBlocks: Regroup
8+
IncludeCategories:
9+
# The the main header for a source file is automatically assigned priority 0
10+
# C system headers
11+
- Regex: '^[<"](aio|arpa/inet|assert|complex|cpio|ctype|curses|dirent|dlfcn|errno|fcntl|fenv|float|fmtmsg|fnmatch|ftw|glob|grp|iconv|inttypes|iso646|langinfo|libgen|limits|locale|math|monetary|mqueue|ndbm|netdb|net/if|netinet/in|netinet/tcp|nl_types|poll|pthread|pwd|regex|sched|search|semaphore|setjmp|signal|spawn|stdalign|stdarg|stdatomic|stdbool|stddef|stdint|stdio|stdlib|stdnoreturn|string|strings|stropts|sys/ipc|syslog|sys/mman|sys/msg|sys/resource|sys/select|sys/sem|sys/shm|sys/socket|sys/stat|sys/statvfs|sys/time|sys/times|sys/types|sys/uio|sys/un|sys/utsname|sys/wait|tar|term|termios|tgmath|threads|time|trace|uchar|ulimit|uncntrl|unistd|utime|utmpx|wchar|wctype|wordexp)\.h[">]$'
12+
Priority: 1
13+
# C++ system headers
14+
- Regex: '^[<"](algorithm|any|array|atomic|bitset|cassert|ccomplex|cctype|cerrno|cfenv|cfloat|charconv|chrono|cinttypes|ciso646|climits|clocale|cmath|codecvt|complex|condition_variable|csetjmp|csignal|cstdalign|cstdarg|cstdbool|cstddef|cstdint|cstdio|cstdlib|cstring|ctgmath|ctime|cuchar|cwchar|cwctype|deque|exception|execution|filesystem|forward_list|fstream|functional|future|initializer_list|iomanip|ios|iosfwd|iostream|istream|iterator|limits|list|locale|map|memory|memory_resource|mutex|new|numeric|optional|ostream|queue|random|ratio|regex|scoped_allocator|set|shared_mutex|sstream|stack|stdexcept|streambuf|string|string_view|strstream|system_error|thread|tuple|type_traits|typeindex|typeinfo|unordered_map|unordered_set|utility|valarray|variant|vector)[">]$'
15+
Priority: 2
16+
# Other libraries' .h files
17+
- Regex: '^<'
18+
Priority: 3
19+
# Your project's .h files
20+
- Regex: '^"'
21+
Priority: 4
22+
---
23+
Language: Proto
24+
BasedOnStyle: Google
25+
...

README.md

Lines changed: 67 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,47 +1,81 @@
1-
# gbplanner_ros
2-
Graph-based Exploration Planner for Subterranean Environments
1+
# Graph-based Exploration Planner 2.0
2+
![swag](img/cerberus_subt_winners.png)
33

4-
### How to build the planner
5-
- Clone the package:
6-
```
7-
git clone https://github.com/unr-arl/gbplanner_ros
8-
```
9-
- Build the package:
10-
```
11-
catkin build -DCMAKE_BUILD_TYPE=Release gbplanner_ros
12-
```
13-
However, please be aware that the planner requires several dependencies; for example:
14-
- Mapping framework: either [Voxblox](https://github.com/ethz-asl/voxblox) or [Octomap](https://github.com/OctoMap/octomap)
15-
- Planner-Control interface package: [pci_mav](https://github.com/unr-arl/pci_mav)
16-
- MAV simulation: [RotorS](https://github.com/ethz-asl/rotors_simulator), [LiDAR simulator](https://github.com/unr-arl/lidar_simulator.git)
4+
## Tutorial:
5+
Please refer to the [wiki](https://github.com/ntnu-arl/gbplanner_wiki/wiki) page for detailed instructions to install and run the demo simulations as well as documentation of the planner interface and parameters.
6+
More results and video explaination of our method can be found on our website: [Link](https://www.autonomousrobotslab.com/exploration-planning.html)
177

18-
Hence, to simplify the test process with the planner, we prepare an example workspace [gbplanner_ws](https://github.com/unr-arl/gbplanner_ws), which includes all relevant packages. Please follow the suggested steps in the repo [gbplanner_ws](https://github.com/unr-arl/gbplanner_ws) for further detail.
8+
## Installation
9+
These instructions assume that ROS desktop-full of the appropriate ROS distro is installed.
1910

20-
### How to launch the planner
21-
- Launch file for simulation:
22-
```
23-
roslaunch gbplanner gbplanner_sim.launch
11+
Install necessary libraries:
12+
13+
For Ubuntu 18.04 and ROS Melodic:
14+
```bash
15+
sudo apt install python-catkin-tools \
16+
libgoogle-glog-dev \
17+
ros-melodic-joy \
18+
ros-melodic-twist-mux \
19+
ros-melodic-interactive-marker-twist-server
2420
```
25-
- To trigger the planner in command line, please use the service call:
21+
For Ubuntu 20.04 and ROS Noetic:
22+
```bash
23+
24+
sudo apt install python3-catkin-tools \
25+
libgoogle-glog-dev \
26+
ros-noetic-joy \
27+
ros-noetic-twist-mux \
28+
ros-noetic-interactive-marker-twist-server
2629
```
27-
rosservice call /planner_control_interface/std_srvs/automatic_planning "{}"
30+
31+
32+
Clone the workspace <span style="color:red">(UPDATE THE LINK BEFORE RELEASE)</span>.:
33+
```bash
34+
git clone [email protected]:ntnu-arl/gbplanner_prerelease_ws.git
35+
cd gbplanner_prerelease_ws
2836
```
29-
- We provide several types of environment for simulation in the package [planner_gazebo_sim](https://github.com/unr-arl/gbplanner_ros/tree/master/planner_gazebo_sim) including room-and-pillar mine (```pittsburgh_mine.world```), long-wall mine (```edgar_mine.world```), and a model reconstructed from a real mine (```virginia_mine.world```)
3037

31-
### Select the mapping framework
32-
By default, the planner is compiled with Voxblox. To compile with Octomap, set the flag USE_OCTOMAP to 1:
38+
Clone and update the required packages:
39+
```bash
40+
wstool init
41+
wstool merge packages_ssh.rosinstall
42+
wstool update
3343
```
34-
catkin build -DCMAKE_BUILD_TYPE=Release -DUSE_OCTOMAP=1 gbplanner_ros
44+
45+
Build:
46+
```bash
47+
catkin config -DCMAKE_BUILD_TYPE=Release
48+
catkin build
3549
```
36-
Also change the config to Octomap in the gbplanner_sim.launch file
50+
51+
## Running Planner Demo
52+
### Aerial Robot Demo
53+
Download the gazebo model from [here](https://drive.google.com/file/d/1Mx_JKNyx2MEwn56LM5KyP8Z3FM-4I6OS/view?usp=sharing) and extract in the `~/.gazebo/models` folder.
54+
```bash
55+
roslaunch gbplanner rmf_sim.launch
3756
```
38-
<arg name="map_config_file" default="$(arg octomap_config_file)"/>
57+
58+
### Ground Robot Demo
59+
the following command:
60+
```bash
61+
roslaunch gbplanner smb_sim.launch
3962
```
63+
In Ubuntu 18.04 with ROS Melodic, the gazebo node might crash when running the ground robot simulation. In this case set the `gpu` parameter to false [here](https://github.com/ntnu-arl/smb_simulator/blob/6ed9d738ffd045d666311a8ba266570f58dca438/smb_description/urdf/sensor_head.urdf.xacro#L20).
64+
65+
## Results
66+
67+
Robot's of Team Cerberus running GBPlanner and GBPlanner2
68+
![gbplanner_robots](img/gbplanner_robots.png)
69+
70+
Autonomous exploration mission in the Prize Round of the DARPA Subterranean Challenge Final Event using four ANYmal C legged robots (Chimera, Cerberus, Camel, Caiman), all running GBPlanner2 independantly.
71+
72+
![final_circuit_all_robots](img/cerberus_final_run_compiled_hd.png)
73+
74+
## References
4075

41-
### Tutorial:
42-
You could find a short tutorial on the plannning algorithm and the overall architecture on our website: [Link](https://www.autonomousrobotslab.com/subtplanning.html)
76+
### Explanation Video
77+
[![gbplanner_video](img/gbp2_vid.png)](https://www.youtube.com/watch?v=bTqFp1aODqU&list=PLu70ME0whad9Z4epZQ9VBYagKpyMyhZZ1&index=4)
4378

44-
### References
4579
If you use this work in your research, please cite the following publication.
4680
```
4781
@inproceedings{dang2019graph,
@@ -56,4 +90,5 @@ If you use this work in your research, please cite the following publication.
5690

5791
You can contact us for any question:
5892
* [Tung Dang](mailto:[email protected])
59-
* [Kostas Alexis](mailto:[email protected])
93+
* [Mihir Dharmadhikari](mailto:[email protected])
94+
* [Kostas Alexis](mailto:[email protected])

gbplanner/CMakeLists.txt

Lines changed: 8 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,30 @@
1-
cmake_minimum_required(VERSION 2.8.3)
1+
cmake_minimum_required(VERSION 3.0.2)
22
project(gbplanner)
3-
# Set OCTOMAP or VOXBLOX
4-
option(USE_OCTOMAP "Use OCTOMAP or VOXBLOX" 0)
5-
if (USE_OCTOMAP)
6-
add_definitions(-DUSE_OCTOMAP=${USE_OCTOMAP})
7-
endif (USE_OCTOMAP)
83

9-
add_definitions(-std=c++11)
4+
add_definitions(-std=c++14 -Wall -Wno-sign-compare -Wno-catch-value -Wno-switch -Wno-maybe-uninitialized -Werror=return-type)
105

116
find_package(catkin_simple REQUIRED)
127
find_package(Boost REQUIRED)
138
find_package(Eigen3 REQUIRED)
9+
find_package(adaptive_obb REQUIRED)
1410

1511
catkin_simple(ALL_DEPS_REQUIRED)
1612

1713
include_directories(
1814
${Boost_INCLUDE_DIRS}
19-
${Eigen_INCLUDE_DIRS})
15+
${Eigen_INCLUDE_DIRS}
16+
${planner_common_INCLUDE_DIRS}
17+
)
2018

21-
if (USE_OCTOMAP)
2219
cs_add_library(
2320
${PROJECT_NAME}
24-
src/graph.cpp
25-
src/graph_manager.cpp
2621
src/gbplanner.cpp
2722
src/rrg.cpp
28-
src/trajectory.cpp
29-
src/params.cpp
30-
src/random_sampler.cpp
3123
src/gbplanner_rviz.cpp
32-
src/map_manager_octomap_impl.cpp
33-
src/geofence_manager.cpp)
34-
else (USE_OCTOMAP)
35-
cs_add_library(
36-
${PROJECT_NAME}
37-
src/graph.cpp
38-
src/graph_manager.cpp
39-
src/gbplanner.cpp
40-
src/rrg.cpp
41-
src/trajectory.cpp
42-
src/params.cpp
43-
src/random_sampler.cpp
44-
src/gbplanner_rviz.cpp
45-
src/map_manager_voxblox_impl.cpp
46-
src/geofence_manager.cpp)
47-
endif (USE_OCTOMAP)
24+
)
4825

4926
cs_add_executable(gbplanner_node src/gbplanner_ros_node.cpp)
50-
target_link_libraries(gbplanner_node ${PROJECT_NAME})
27+
target_link_libraries(gbplanner_node ${PROJECT_NAME} ${planner_common_LIBRARIES})
5128

5229
cs_install()
5330
cs_export(LIBRARIES)

gbplanner/config/m100/gbplanner_config.yaml

Lines changed: 0 additions & 137 deletions
This file was deleted.

gbplanner/config/m100/octomap_sim_config.yaml

Lines changed: 0 additions & 22 deletions
This file was deleted.

gbplanner/config/m100/planner_control_interface_sim_config.yaml

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)