This is a final team-based project for Georgia Tech's ECE 4180 Embedded System Design Course.
Juntao Wang: jwang3046@gatech.edu
Sicheng Zou: Sicheng.zou@gatech.edu
Nick Witten: nick.witten@gatech.edu
The goal of the project is to create a robot that autonomously roams a room and plots the 2D coordinates of walls and obstacles while expanding its knowledge in a frontier-based fashion.
The shadow bot chassis is used as the frame of the robot, 2 DC motors with a dual H-Bridge driver module are used to maneuver the robot, and 3 LIDAR sensors are used to measure distances while the robot is moving. The whole system is based on the Mbed LPC1768 running Mbed RTOS. In addition, a raspberry pi is used to send control commands and for data manipulation in Python. The robot is able to flash code wirelessly using the ssh protocol on the raspberry pi and serial communication between the raspberry pi and Mbed.
The virtual COM port is used to control the Mapper through the Raspberry Pi. Make sure the Pi has internet connection, use SSH to obtain a terminal. Clone this repository, and use gcc-arm-none-eabi compiler to build the MBED source code. A USB micro type B to a USB mini type B cable should be used to connect the Raspberry Pi to the MBED. To flash the binary file, copy it to /media/pi/MBED. The two python scripts are to be run on the Pi and a spare PC, not connected to the Pi. Make sure the project paths and Pi IP address is updated in the python scripts.
To control the robot, open the serial port to the MBED from the Pi. This can be done with the following commands:
pip install pyserial
python -m serial.tools.miniterm /dev/ttyACM0 9600
The following commands can be issued over the serial port:
| Key | Action |
|---|---|
| Arrow Up | Speed Up |
| Arrow Down | Slow Down (Backup) |
| Arrow Left | Turn Counterclockwise 90 Degrees |
| Arrow Right | Turn Clockwise 90 Degrees |
| r | Reset State and Map |
| a | Toggle Autonomous Mode |
| Enter | Print Mapper State |
The two python scripts can be used to enable plotting. pi_saver.py should be run on the Pi and pc_plotter.py should be run on a PC. Commands can still be issued while running the pi_saver.py script, but they should typed into the script STDIN and enter must be issued after every keypress so they can be passed through to the MBED.
mbed LPC1768
Shadow Bot Chassis
SparkFun Motor Driver - Dual TB6612FNG (with Headers)
Hobby Gearmotor - 140 RPM (Pair)
2x Wheels
3x VL53L0X ToF Sensor
2x Wheel Encoder Kit
5V Battery Pack
USB Portable Charger
DC Barrel Jack Adapter
Raspberry Pi Zero W
| Mbed LPC1768 | Motor Driver | Motor_Left | Motor_Right |
|---|---|---|---|
| VOUT | VCC | ||
| GND | GND | ||
| VM (to Power) | |||
| A01 | RED | ||
| A02 | BLACK | ||
| B01 | RED | ||
| B02 | BLACK | ||
| p21 | PWMA | ||
| p22 | PMWB | ||
| p6 | AI1 | ||
| p7 | BI1 | ||
| p5 | AI2 | ||
| p8 | BI2 |
| Mbed LPC1768 | LIDAR_Right | LIDAR_Left | LIDAR_Center |
|---|---|---|---|
| VOUT | VIN | VIN | VIN |
| GND | GND | GND | GND |
| p28 | SDA | SDA | SDA |
| p27 | SCL | SCL | SCL |
| p24 | SHDN | ||
| p25 | SHDN | ||
| p26 | SHDN |
| Mbed LPC1768 | Encoder_Left | Encoder_Right |
|---|---|---|
| VOUT | RED | RED |
| GND | BLACK | BLACK |
| p11 | WHITE | |
| p12 | WHITE |








