The Autonomous Warehouse Robot
Overview
This is a semester-long project as part of the subject ELEN90090 - Autonomous System Clinic, coordinated by Dr Paul Beuchat. The project focuses on control and software design, based on the given robot platform. The robot prototype will then operate in a small-scale warehouse of no obstacles, automatically maneuvering between a dispenser and a receptacle to sequentially perform pick and drop-off tasks.
Source Code
This project is written in C++ and Python as multiple ROS (Robotics Operation System) nodes, developed to run on the NVIDIA Jetson Xavier. The repository currently also includes code which has been run on the NVIDIA Jetson Xavier, and using desktop or laptop Ubuntu installations.
Tool
Engineering Concepts
Successful completion of the project will require the team to apply different engineering concepts and analysis tools from the prerequisite subjects:
-
Embedded System Design:
Finite, extended, and hierarchical state machine, modelling cyber-physical systems; scheduling, multi-tasking and interfacing to the analogue world. Having a state machine diagram will give a high-level capture of the system architecture.
-
Control System:
Modelling, linearization, proportional, integral and derivative (PID) control.
-
Signal Processing:
Design and implementation of digital filters, sensor fusion. This will take an important role in processing the raw data/signals from the sensors, accurately capture the robot’s motion and poses.
Hardware
- Main Computer
- Distance Sensor
- Proximity Sensor
- Camera
- Power Supply
- Servo Motors
- Motor Encoders
- Motor Controller
Software
- Ubuntu
- Shell scripting
- Robotics Operation System (ROS)
- MATLAB
- Simulink
- Git
Design Procedure
Warehouse Layout
For one cycle the robot needs to perform, there consists of three paths, transit, delivery and return. The robot is designed to received the user command as an array of 2-digit numbers. For each element in the array, the former digit indicates the label dispenser and the latter indicates the receptacle label. The robot will then process each cycle, firstly by importing the three paths from its database, then process through each path in sequence shown in the FSM of Figure. It will automatically move to the next cycle once it finishes.
Path Planning
To navigate autonomously, the robot must be able to generate a geometric path between any two locations within the warehouse. A path-planning algorithm was developed, using MATLAB. The have been several path planning algorithm we have looked into, such as Greedy, Djikstra, etc. A* algorithm which is an extension of Djikstra's graph traversal algorithm was chosen to be implemented.
Trajectory Tracking
In the following figure, the main program of the robot is designed as a loop of subsystems to perform a specific task. The task determination process takes the object and robot’s pose data as an input to make decision on the next task to be performed. This process will also take user command as an initial request or interrupt action needed in emergency circumstances.
Having identified the task, warehouse layout and its pose in space, the robot will then plan the path to perform it. Knowing that the path is presented in different shapes, one strategy to control the robot following a determined path is to partition it to a list of shorter trajectories in straight lines with associated coordinates in the inertial frame that the robot needs to reach. These reference trajectories are then fed into the motion control block which is responsible for controlling the speed of two wheels. Signals from these wheels are read by the encoder in sensing system. Moreover, different sensors will also be used to capture the data of the robot in the driving environment which is used for feedback to the motion control. This is a part of the localization process so that the robot can identify itself in the space and adjust its motion accordingly.
ROS architecture
Robotics Operating System (ROS) framework was used to develop the system architecture for the robot. Visual Studio Code (VS Code) was used as the main Integrated Development Environment for programming. For software development, C++ and Python are the two main programming languages used in this project.
ROS can be run on Linux platform, for Windows laptop, we can to run it through Ubuntu. With ROS, the software pipeline was implemented on the main computer of the robot that is responsible for communicate with other electrical/electronics components. The software architecture was build based on the system-level diagram representing the relation between different blocks, shown in the previous section. Each of the node in ROS takes on one crital function of the robot. It can be either motion planning, trajectory tracking or data fusion, etc, can they communicated with each other via different dedicated topics.
Video Presentation
Our video presentation will focus on delivering the key insights for future master’s students who may consider taking this subject. As a student who is considering taking this subject, we assume that the student has been successfully enrolled into Master of Engineering course with major in Electrical or Mechatronics. Therefore, we assume that the student’s engineering domain knowledge will include analog and digital electronics concepts (ELEN30014 or ELEN30009), basic understanding of system modelling (MCEN30020) with some hands-on experience in mechanical design and manufacturing (MCEN30021). Having graduated from Bachelor of Science, the student has basic knowledge in programming and data structure, especially in C and Python, which are the key fundamentals to help them develop further with C++ and using ROS. In terms of hardware familiarity, the students are expected to get basic knowledge with Arduino framework (ELEN30013 and MCEN30019) as well as FPGA in ELEN30014.
From the video, we think the students who are interested in getting hands-on experience will take the practicality of the subject into consideration. While other students may understand how knowledge from previous subjects can be applied into these kinds of projects.