Robustness of the localization is an important component of a mobile robots software. Testing small software changes can prove expensive if it needs to be tested in the real world as testing disrupts day to day activities of the facility as well poses a safety concern.
To combat this issue, we have developed this package that generates simulation warehouses and automates testing of algorithms to benchmark algorithm performance which can be utilized to ensure the software is stable enough to be tested in the real world, not only saving time and money, but also making the process safer.
Robot in the warehouse simulation is provided by Kick Robotics, LLC.
Author:
Name | UID | Github account |
---|---|---|
Chang-Hong Chen | 117397857 | longhongc |
Sparsh Jaiswal | 117433968 | sj0897 |
Po-Yu Huang | 117684681 | danielforever |
- ROS2 foxy
- Ubuntu 20.04
These packages are in the third_party folder
Clone this repository to the src folder in ros2 workspace
cd {ros2 workspace}/src
git clone https://github.com/sj0897/kickWarehouseSim.git
The dependencies packages (Nav2 and slam toolbox) can be installed in two ways.
- Clone git submodule
cd {ros2 workspace}/src/kickWarehouseSim
git submodule update --recursive
- With apt-tool
sudo apt install ros-foxy-gazebo-ros-pkgs
sudo apt install ros-<distro>-slam-toolbox
sudo apt install ros-<distro>-navigation2 ros-<distro>-nav2-bringup '~ros-<distro>-turtlebot3-.*'
Build the packages
cd {ros2 workspace}
colcon build
Start warehouse gazebo simulation
ros2 launch warehouse_simulation warehouse_simulation.launch.py
Start robot model, navigation system, and mapping
ros2 launch robot_model warehouse_bot.launch.py
Start RVIZ for visualization
ros2 launch warehouse_simulation rviz2.launch.py
Start robot manager
ros2 launch robot_manager robot_manager.launch.py
Send routine request through service
The waypoints in the routine are defined in robot_manager/config/waypoints.yaml
ros2 service call /set_routine robot_manager_msgs/srv/SetRoutine "{routine: [A, B, C]}"
The warehouse simulation generate a warehouse layout in the gazebo world on-the-fly.
It provides service to add a custom degree of changes to the base layout.
ros2 launch warehouse_simulation e^Cty_warehouse.launch.py
ros2 run warehouse_simulation warehouse
ros2 service call /warehouse/Generate warehouse_simulation/srv/Modify "{a: 1}"
ros2 service call /warehouse/Modify warehouse_simulation/srv/Modify "{a: 5}"
Robot following a set of routine
World Generation and Modification
Run test
colcon test --event-handlers console_direct+ --packages-select robot_manager
ros2 launch robot_manager test_robot_manager.launch.py
https://docs.google.com/spreadsheets/d/1jPUXeID2PA99P3RgWnmy4Ot1bprAT-mLDxvRTo3mwnE/edit?usp=sharing
https://docs.google.com/presentation/d/1a7bCiWbXJOMIBw73r6T0CFLViDLNzy3EHOD3jxnlliw/edit?usp=sharing
- Global map got cleared if unreachable
ros-navigation/navigation2#1999