- FRA532 EXAM1 : AMR in warehouse
- Table of Contents
- Description
- System requirements
- Installation
- Usage
- Demo
- Future plan
- Developer Members
This project focuses on the implementation of an Autonomous Mobile Robot (AMR) in a warehouse environment using ROS2. It includes navigation, inspection, Aruco marker detection, and battery simulation for efficient warehouse automation."
- ROS2 Humble (installation guide)
- Gazebo (installation guide)
Clone the ROS 2 workspace:
git clone https://github.com/ThepokKung/FRA532_EXAM1_ws -b mainNote
We will install the vsstool and rosdep packages to ensure the system functions smoothly without any issues.
cd ~/FRA532_EXAM1_ws/
# Clone mir_robot into the ROS2 workspace
git clone -b humble-devel https://github.com/relffok/mir_robot src/mir_robot
# Fetch linked repositories using vcs
vcs import < src/mir_robot/ros2.repos src --recursive
# Install dependencies using rosdep (including ROS)
sudo apt update
sudo apt install -y python3-rosdep python3-vcstool
rosdep init
rosdep update --rosdistro=humble
rosdep install --from-paths src --ignore-src -r -y --rosdistro humble
# Build all packages in the workspace
cd ~/FRA532_EXAM1_ws/
colcon buildTest MiR robot:
source install/setup.bash
ros2 launch mir_gazebo mir_gazebo_launch.py world:=maze rviz_config_file:=$(ros2 pkg prefix mir_navigation)/share/mir_navigation/rviz/mir_nav.rvizcd ~/FRA532_EXAM1_ws/
# Clone AWS-warehouse into the ROS2 workspace
git clone https://github.com/aws-robotics/aws-robomaker-small-warehouse-world.git -b ros2 src/aws-robomaker-small-warehouse-world
# Install dependencies using rosdep (including ROS)
rosdep install --from-paths src --ignore-src -r -y --rosdistro humble
# Build all packages in the workspace
cd ~/FRA532_EXAM1_ws/
colcon buildTest AWS Warehouse:
source install/setup.bash
ros2 launch aws_robomaker_small_warehouse_world small_warehouse.launch.pycd ~/FRA532_EXAM1_ws/
# Copy file from MiR100_cam to mir_robot_description
cp MiR100_cam/mir_100_v1.urdf.xacro src/mir_robot/mir_description/urdf/include/mir_100_v1.urdf.xacro Launches the warehouse simulation environment and MIR robot in Gazebo.
source install/setup.bash
ros2 launch robot_gazebo sim.launch.pyStarts the navigation stack, which allows the robot to move autonomously using SLAM and path planning.
source install/setup.bash
ros2 launch robot_nav navigation.launch.py- When RViz2 opens, select
"2D Pose Estimate"and click on the map to initialize the robot's position - Use
"2D Goal Pose"to command the robot to navigate to a target location.
The Robot Controller System is responsible for managing the robot's movement to specified locations, detecting Aruco Markers, and performing Docking at designated stations.
source install/setup.bash
ros2 launch robot_controller robot_con.launch.py- The robot will operate in different modes, such as multi-station inspection, single-destination navigation, or Aruco marker detection.
- The robot will automatically perform Docking upon reaching the designated station.
The Battery Simulation and Monitoring System consists of three main nodes that simulate the battery behavior, manage charging stations, and monitor the robot’s battery level.
source install/setup.bash
ros2 launch robot_controller robot_battery_monitor.launch.py-
The system simulates battery consumption and charging behavior.
-
The robot will autonomously navigate to the charging station when the battery is low and perform Docking for recharging.
source install/setup.bash
ros2 run robot_nav station_navigator.pyCaution
Sometimes, this node is running a server instance. If an error occurs, please restart the node.
This section provides an overview of service calls and topic commands that can be used to interact with the robot.
To navigate the robot to a specific station in docking mode, use the following command:
ros2 service call /station_2go robot_interfaces/srv/Station2GO "station: 'example'"Warning
Can use only staion_name on database
- ChangeStation
- Station2
- Station3
- Station4
Caution
Sometimes, this node is running a server instance. If an error occurs, please restart the node.
To send the robot to multiple stations sequentially in docking mode, use the following command:
ros2 service call /multi_station_2go robot_interfaces/srv/MultiTarget2GO "target_names: [example,example]" Warning
Can use only staion_name on database
- ChangeStation
- Station2
- Station3
- Station4
For check or update state-station on for robot_state
ros2 service call /update_robot_state robot_interfaces/srv/RobotStateUpdate "state: 'state_update'"ros2 service call /check_robot_state robot_interfaces/srv/RobotStateCheck "checkstate: true"ros2 service call /update_robot_station robot_interfaces/srv/RobotStationUpdate "station: 'station_update'"ros2 service call /check_robot_station robot_interfaces/srv/RobotStationCheck "checkstation: true"Usage launch workspace - Demonstrates how to launch the simulation workspace.
Demo Auto charger Station - Shows the robot automatically navigating to a charging station.
Demo Station Navigation - Demonstrates the robot moving to a single station.
Demo MultiStationNavigation - Shows the robot navigating through multiple stations.
- Fix existing bugs
- Improve navigation accuracy.
- Add object detection functionality.
- Fix issue with camera calibration.
- 65340500004 Kraiwich Vichakhot
- 65340500009 Chayanin Napia
- 65340500023 Natthaphat Sookpanya