Real-Time System Implementation on Autonomous Lego-Robot
MetadataShow full item record
A new hardware abstraction layer was created for the EV3. This includes drivers for UART, timers, interrupt controller, SPI and I2C peripherals. This was documented using Doxygen; an in-code documenting tool. Doxygen was used to create an off-line reference manual for the abstraction layer as a PDF (generated with LaTeX). Using the new drivers for the timer and interrupt controller, FreeRTOS was implemented on the EV3 using the timer interrupt as an RTOS tick interrupt for the FreeRTOS scheduler. A new port file for the RTOS was created that is compatible with the Texas Instruments AM1808 MCU in the EV3, and Doxygen was then configured to extract the FreeRTOS code structure such that the RTOS layer interface documentation was added to the reference manual. The robot was built using a previously built AVR-based robot as a reference. EV3 Large Servo Motors were used for wheel movement and to control the sensor tower. Given the remaining sensor ports on the EV3 only fits four sensors and there is no access to the GPIO pins in the AM1808 in the EV3 directly, there is not enough room for the remaining sensors to be implemented on the robot without an additional hardware card to interface with the sensors. The sensors needed for the SLAM application are four IR sensors, one gyro, one electronic compass and a BLE dongle. Plans were made to use a card developed for a similar problem on a Lego NXT robot, but due to time constraints, the card was not produced in this thesis. Finally, the application was ported to the EV3 and with FreeRTOS running almost no changes to the code was needed to get implemented, only a few minor EV3 specific hardware calls to the motors needed to be changed.