This simulation environment, based on the Gazebo simulator and ROS2, resembles a Volvo trucks' warehouse and serves as a playground for rapid prototyping and testing indoor multi-camera localization, positioning, and navigation algorithms. While this environment can be utilized for Multi-Sensor SLAM (Simultaneous Localization and Mapping) using cameras, IMUs, GPS, lidar, and radar mounted on the robot, the focus of this project is not on mapping but on assuming a fixed building layout and using fixed cameras mounted on the ceiling.
Find technical and more detailed documentation and specifications in the following links:
- Simulation
- Building Gazebo models (Blender/Phobos)
- Objects specifications
- Warehouse specification
- Camera extrinsic calibration and Camera intrinsic calibration
Click on image below to see the Volvo layout demo:
Dependencies: vscode
(with Dev containers
extension installed) and docker
. Make sure to accept installation of vscode extensions when you open the project.
If you have any issue with docker incompatibility, make sure that docker compose
or docker-compose
is set correctly in the setting.
Additionally you are requested to rebuild in the container that you should also accept. This make take couple of minutes. Run these commands in the vscode terminal after vscode is connected to the docker as shown in image below:
(if you don't see this try to build manually in vscode by pressing Ctrl + Shift + P
and select Dev containers: Rebuild and Reopen in container
.
)
To kill all relevant process (related to gazebo, ros2), delete build files, delete recorded images and rosbag files using the following command:
./start.sh clean
To clean up and build the ros2 simulation
./start.sh build
To kill previously running simulation instances, build the project and start the simulation environment and agents(spawn robots, Aruco marks and cameras on the scene) run the following command and you should be able to see the Gazebo graphical simulation window:
./start.sh sim
Attention: run these commands in a parallel terminal within vscode .
the jackal can then be controlled with the computer keyboard by running:
./start.sh teleop_jackal
To control the infobot using keyboard:
./start.sh teleop_infobot
To record camera images for available cameras we use a simple python code ./processing/camera_subscriber.py that can be executed with following command:
To record continuously:
./start.sh cam_record 164
To record one screenshot:
./start.sh screenshot 164
The result will be stored in ./processing/camera_data/
.
To record ros messages in ROS bag files to replay the scenario later:
./start.sh ros_record
To replay the last rosbag recording:
./start.sh ros_replay
(optionally) To do cartography:
./start.sh slam
To start nav2 navigation stack and start commanding the infobot to move in the map:
./start.sh nav
and then:
./start.sh commander
To test the unit tests before pushing new codes:
./start.sh test
Please see LICENSE, CREDITS.md and CHANGELOG.md for more information.
This work was carried out within these projects: