This repository contains tools for active SLAM in crowded environments. It contains code that has been tested and used with a pioneer in simulation, a real pepper robot and a real turtlebot3-pi.
- Install most needed ROS packages by executing:
bash install.sh
This script will also remove a move_base installation, if there is one installed, as there has been found a bug, which is fixed in this navigation fork.
- Clone all packages listed in Needed Packages. You can do this using wstool.
cd src
wstool init
wstool merge crowdbot_active_slam/dependencies.rosinstall
wstool update
-
Install GTSAM library following the steps here GTSAM 3.2.1. (Only version 3.2.1 has been tested)
-
Make sure that you have an Eigen3 installation.
-
For building all packages either remove certain packages or only build the bellow listed ones:
catkin build sick_scan gazebo_ros_2Dmap_plugin pioneer_description naoqi_driver eigen_catkin glog_catkin eigen_catkin plotty asl_pepper_basic_functions asl_pepper_joystick
- Finally build this package and the fixed move_base package. We recommend to build it in Release mode to assure online behaviour:
catkin build crowdbot_active_slam move_base_fork --cmake-args -DCMAKE_BUILD_TYPE=Release
- gazebo_ros_2Dmap_plugin
- pioneer_description
- navigation
- naoqi_driver
- asl_pepper
- eigen_catkin
- catkin_simple
- plotty
- glog_catkin
- sick_scan
If you plan to use turtlebot3, follow the instructions on http://emanual.robotis.com/docs/en/platform/turtlebot3/overview/.
This package consists of multiple nodes, which interact with each other. To facilitate the launching of these nodes, bash scripts are used to start up different scenarios.
-
All run_pioneer_* scripts use the gazebo simulation
- run_pioneer_SLAM.sh starts the SLAM algorithm
- run_pioneer_exploration.sh starts the active SLAM framework for static environments
- run_pioneer_exploration_dyn_sim.sh starts additionally the people(pedestrian) simulator and uses the detection and tracking of moving people
-
run_pepper_* scripts are intended to be used in reality with the pepper robot
- run_pepper_SLAM.sh starts again the SLAM algorithm
- run_pepper_SLAM_exploration.sh starts the active SLAM framework in static environments mode
- run_pepper_SLAM_exploration_dyn.sh starts the active SLAM framework with the detection and tracking of moving people
If you further want to adapt or change parameters like exploration strategies, simulation worlds, scan matcher parameters, etc. refer to the corresponding launch files. In general the main SLAM file is called graph_optimisation and contains Front- and Back-End.
The test_results folder contains evaluation scripts for exploration runs. The necessary data is automatically saved during exploration and is saved in this folder.
This package contains a nodelet implementation, but is currently not running without crashing. In future one might solve the issue.
The gazebo_ros_2Dmap_plugin is a plugin, which can be used to extract the groundtruth map of asimulation world.
-
A stable version of this repository can be found on the master branch.
-
There exists a branch feature/realsense_integration where the software has been extended to be used with an Intel Realsense D435. You might need to install additional software such as the camera drivers to use this branch. This branch might be unstable and might need some adaptations. Although these facts, this branch has some essential improvements such as a better behavior of the local planner. It might be worth it to build on top of this branch if you plan to use this repository in future.
-
Branch feature/scientifica_map_generation has some adaptations to the code such that it could be used for the robots used at the Scientifica 2019 to generate a map only using 2D laser scans. This branch might still have some bugs and is not recommended to be used if not needed.
-
GTSAM 3.2.1 boost issue. If you have an issue building or using GTSAM, you may need to adapt some files:
-
gtsam/inference/Ordering.cpp, add this line
#include <boost/serialization/serialization.hpp>
-
gtsam/base/tests/testFastContainers.cpp, add this line
#include <boost/serialization/serialization.hpp>
-
-
Installing cartographer ros forces installing protobuf >v3.4.1. This is not compatible with gazebo_ros and can cause problems when building this packages used here, e.g. gazebo_ros_2Dmap_plugin.
-
If you want to move peppers head with the joystick you will need to add the naoqi SDK to your python path.