An autonomous rover must be able to coordinate its steering direction well enough while in motion to ensure that it will arrive at its destination. The given motors are low quality and yeild an unexpectedly large amount of error. In order to correct this error effectively and keep the system stable, a PID (Proportional Integral Derivative) Controller is implimented. It is created, tuned, and tested to be accurate enough for the rover to consistently reach its coordinates with no more than +/- 1cm error, every 30cm of travel.
This project takes place in a class called Embedded Systems Design, which is a capstone class for Computer Engineering students at Virginia Tech. All students are grouped into 4's, and we're each given a board that we must learn to use effectively. After lots of planning and paperwork, we plan out our long team project. We had decided to create a small-scale, autonomous factory with an LED lighting system, a robotic arm, a PIXY cam, and a rover. This all takes place as the role for the Delivery Rover.
This project uses a microcontroller (PIC32MX series). We use FreeRTOS to simulate a multithreaded environment with our limited board, and we program in C. To be consistent when reading from queues and interracting with other threads, we use a programming model created by the engineering department. To debug and monitor the code executing in a real time environment, we output location values in the code through GPIO ports. We read these values with a logic analyzer and record them over time. Looking back over the record, we can see what is happening in the code.