Industrial AGV
Overview
This was a team project in which we upgraded an existing Ackerman vehicle by turning it into an Automated Guided Vehicle. This was achieved by using ROS as framework on a NVIDIA Jetson Xavier computer and with the implementation of navigation concepts such as mapping, path planning and motion control. As a result, we managed to navigate the AGV inside a closed environment by setting a goal position and avoiding collisions.
My main role was as software developer, although I also contributed to hardware adaptations whenever we faced challenges translating our software output to the vehicle.
Tools
Hardware
- RPLIDAR A3: laser sensor for mapping and object detection.
- NVIDIA Jetson Xavier: main computer running all the software.
- Arduino Mega 2560: microcontroller board.
- DC motors: movement of the AGV steering and acceleration.
- DC-DC converter modules: DC motor and NVIDIA Jetson Xavier power supply.
- 5V Step-Down converter: power supply for acceleration and steering H-bridges, relay module, and RC receiver.
- RC controller: controlling AGV in manual mode.
Software
- Python: programming language for communication between TEB local planner output and Arduino IDE.
- Arduino: programming language for embedded software development.
- Arduino IDE: software environment for writing and running Arduino code.
- ROS: framework for robot communication.
- Hector SLAM: mapping of CIMA space.
- GIMP: map refinement and editing.
- RViz: visualization of map and robot navigation.
- TEB local planner: navigation algorithm.
- SolidWorks: CAD of RPLIDAR A3 and NVIDIA Jetson Xavier mounting bases.
- Alltrax 39 Controller Pro: traction motor controller.
Key Improvements
- Damaged steering motor replacement.
- Electronic circuit organization.
- Attachment of the NVIDIA Jetson Xavier and RPLIDAR A3 to the AGV using custom laser-cut bases.
- Mapped an engineering laboratory called CIMA.
- Added the navigation system by using a RPLIDAR A3 and Hector SLAM.
- Added path planning with TEB local planner, with the desired linear and angular velocities as output.
- Added a toggle to switch between autonomous and manual mode with an RC controller in case human intervention was needed.

