longhongc / kickWarehouseSim

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Kick Warehouse Simulation

Build Status [Coverage Status]

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.

warehouse_gazebo warehouse_rviz

Robot in the warehouse simulation is provided by Kick Robotics, LLC.

robot_model kick

Author:

Name UID Github account
Chang-Hong Chen 117397857 longhongc
Sparsh Jaiswal 117433968 sj0897
Po-Yu Huang 117684681 danielforever

Table of contents

Dependencies

Environment

  • ROS2 foxy
  • Ubuntu 20.04

ROS2 Packages

These packages are in the third_party folder

Build

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.

  1. Clone git submodule
cd {ros2 workspace}/src/kickWarehouseSim
git submodule update --recursive
  1. 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

Run

Routine Simulation

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]}"

Routine config example
routine_config

Warehouse Simulation

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}"

Results

Robot following a set of routine
routine_rviz

World Generation and Modification
routine_rviz

Test

Robot Manager

Run test

colcon test --event-handlers console_direct+ --packages-select robot_manager

colcon_test_robot_manager

Run only gtest and no style check
ros2 launch robot_manager test_robot_manager.launch.py   

gtest_robot_manager

Design

UML

UML_Initial

ROS Node Graph

ROS_NODE_GRAPH

Link to AIP Documents

https://docs.google.com/spreadsheets/d/1jPUXeID2PA99P3RgWnmy4Ot1bprAT-mLDxvRTo3mwnE/edit?usp=sharing

Link to Presentation

https://docs.google.com/presentation/d/1a7bCiWbXJOMIBw73r6T0CFLViDLNzy3EHOD3jxnlliw/edit?usp=sharing

Known Issues

About

License:BSD 3-Clause "New" or "Revised" License


Languages

Language:C++ 50.3%Language:Python 40.7%Language:CMake 9.0%