top of page

Forklift Simulation

Mobile Robot Programming Laboratory

Fall 2020

image.png

Over the course of one semester, my partner and I built a path planning infrastructure to autonomously direct a forklift to pick up pallets with known coordinates. All the code is through MATLAB, and the final product can be seen in the video above. Note that this project was done in a simulation provided by the professor due to the Covid-19 pandemic. It is normally completed on hardware.

​

Given known general locations of the ten pallets, the forklift should pick up any seven of them and place them in the dashed green squares at the bottom of the map. The ultimate goal of the project was to complete this task as fast as possible. The robot also knows the coordinates of the map which include the walls, pallet pick up locations, and pallet drop off locations.

 

Each time the simulation is run, the pallet locations are given random noise. In order to account for this, the robot goes to a waypoint in front of the original known pallet location, and uses lidar readings to scan for for a pallet. The large blue rectangle on the map is there to simulate walls. When the algorithm is scanning for pallets, it needs to be able to determine what is a pallet and what is a wall.

 

There are many steps to building this infrastructure. Most notably, the simulated robot is also programmed with random movement noise. On a real hardware robot, we cannot expect the robot to go exactly where we send it, so the noise in simulation exists to represent a similar pattern as would be seen on a real robot. To address this, a feedback control scheme was used. In the graph below, the reference graph (shown in blue) shows where the robot should be ideally, and the real graph (shown in orange) shows where the robot actually is based off of pose estimation. A feedforward element is used to send the robot on a desired trajectory.

 

The pose estimate largely depends on encoder readings. However, encoder reading still have some amount of error to them. This error accumulates over time, making encoder readings less reliable the longer the simulation is run. Using the known map locations and the lidar readings, the robot occasionally runs a localization algorithm to regain its absolute bearings, and obtain a more accurate pose estimate.

 

In creating this project, we also desired to pursue a robust solution. The robot fails to pick up a pallet when more than one centimeter away (each grid square equals one foot). As can be seen in the video, the robot occasionally fails to pick up a pallet in its first attempt. If this occurs, the robot is programmed to back away, rescan with lidar for the pallet location, and approach the pallet again. Normally, this second attempt is enough to create a successful pick up. This can be seen in the seventh pallet pick up in the video. Very rarely, the robot misses on the second try too. In this case, the robot will abandon the twice missed pallet. It moves on to the next pallet. But, the robot knows how many pallets it has picked up total, so it will continue trying to pick up pallets until it has successfully picked up seven. In the video, this can be seen with the fifth pallet pick up.

 

Teammate: Stephanie Tam

  • LinkedIn

©2021 by Erin Wong. Proudly created with Wix.com

bottom of page