🎉 I am thrilled to announce the successful completion and submission of my graduation project: an Autonomous Mobile Robot (AMR) designed for warehouse navigation using ROS!
This innovative project leverages cutting-edge autonomous driving technology to enhance warehouse operations. The AMR excels in navigating complex environments, effectively avoiding obstacles, and optimizing routes to improve efficiency. It utilizes advanced SLAM (Simultaneous Localization and Mapping) techniques and a robust navigation stack to ensure precise and reliable performance.
- SLAM: Utilizes gmapping and Hector SLAM for real-time mapping and localization.
- Navigation Stack: Employs the ROS navigation stack with move_base and AMCL for path planning and obstacle avoidance.
- Motor Control: Implements a PID controller for precise motor control.
- Power Management: Includes LiPo batteries with suitable chargers and a custom-built BMS.
- Web Interface: Provides a React-based web interface for remote control and monitoring using rosbridge.
- Arduino Integration: Custom Arduino nodes to interface hardware components with the ROS ecosystem.
- my_robot_app/: Contains the React application for the web interface.
- my_robot_ws/: Includes the ROS workspace with packages for SLAM, navigation, motor control, and Arduino integration.
- arduino_nodes/: Arduino sketches and libraries for hardware interfacing.
- README.md: Documentation and overview of the project.
- Hardware: Raspberry Pi 4, Arduino boards, motors, LiPo batteries, sensors (e.g., LIDAR), etc.
- Software: ROS Noetic, Ubuntu 20.04, Python 3.x, Node.js, npm, Arduino IDE.
-
Clone the repository:
git clone https://github.com/mohammedhassan9748/GraduationProject.git cd GraduationProject
-
Setup ROS Workspace:
cd my_robot_ws catkin_make source devel/setup.bash
-
Install Dependencies:
cd src rosdep install --from-paths . --ignore-src -r -y
-
Setup Web Interface:
cd ../my_robot_app npm install npm start
-
Upload Arduino Nodes:
- Open the Arduino IDE.
- Open and upload the sketches from the
arduino_nodes/
directory to the respective Arduino boards.
-
Launch ROS Core:
roscore
-
Launch Arduino Nodes:
rosrun rosserial_python serial_node.py _port:=/dev/ttyACM0
-
Launch SLAM:
roslaunch mybot_nav SLAM_REAL.launch
-
Launch Navigation:
roslaunch mybot_pp test_amcl.launch
-
Control the Robot: Open the web interface at this link and use the controls to navigate the robot.
- my_robot_slam: Configuration and launch files for Hector SLAM.
- my_robot_navigation: Configuration and launch files for the navigation stack.
- my_robot_control: PID controller for motor control.
- my_robot_description: URDF and other files describing the robot model.
- arduino_nodes: Arduino sketches for interfacing sensors and actuators with ROS.
The web interface allows operators to:
- Monitor battery status and power state.
- Control the robot using a virtual joystick.
- Set navigation goals and view real-time navigation status.
You can check the robot’s mapping and navigation process through the video found in this link.
This project would not have been possible without the incredible support and hard work of my teammates:
- Youssef Aly
- Sondos Mohamed
- Rawan Ahmed