Line Following Robot (LFR) 🚓
Hi! I'm Nazmi Ropi, the author of this software documentation. One of the objectives of this year's project is to produce a high average speed line following buggy without compromising its robustness. Also, my approach towards software development is to implement Object-Oriented-Programming features to abstract any technical details to the user. Details of technical demonstrations were also documented on its page.
Dependencies 📌
Mbed OS 6.15.1
QEI by David Smart and Aaron Berk
PID by Aaron Berk
Installation 📋
- Install the latest Mbed Studio or use the online Arm Keil Studio.
Import this repository.
git clone https://github.com/nazmi/esp-buggy
- Compile main.cpp using the compiler.
- Upload the binary file to the NUCLEO-F401RE through USB.
- Note
- You need to replace some of the MACROS values, and PID parameters based on your specifications.
Run on Docker 🐋
Follow the steps below (run in bash/cmd/terminal)
# Pull the latest image
docker pull nazmiropi/esp-buggy:latest
# Run the image in a container
docker run -d -it nazmiropi/esp-buggy:latest
# Get containerID
docker ps
# (Optional) Copy projects files into the host machine
docker cp <containerID>:root/esp-buggy <relativePath>
# Two known issues
# (cmd/PowerShell) Attach to containerID
docker attach <containerID>
# (git-bash) Attach to containerID
winpty docker attach <containerID>
# Compile to check any problem
mbed compile -t GCC_ARM -m NUCLEO_F401RE --profile release
# Docker image has reduced version of mbed-os with removed targets.
# If you want to compile for other targets, you must deploy mbed-os again.
mbed deploy
- Note
- Attach to the running container in VSCode, navigate to
/root/esp-buggy
and start developing.
Troubleshooting 🩺
- Mbed Studio 1.4.3 has linter problems when using GCC_ARM, but it can compile the program. Use MbedStudio 1.4.1 or compile with ARMC6 toolchain to solve this problem.
- Some of the libraries might not work if you want to import and use them on Mbed OS 6, I have made modifications to some of them to replace the deprecated functions from Mbed 2. This can be easily done by referring to the latest API list from Mbed OS 6 documentation.
- Note
- You can use the joystick, potentiometer, and LCD on the application shield to help debug your program.
Components 🛒
You can buy any component you like, but the table below will help if you want to build the robot without thinking about the selection of the parts.
Contributing 👨💻
Contributors are welcome. Please create a pull request and raise any issues to discuss with.
Contributors 👷♂️
Special thanks to my supervisor and every group member that helped in this project (in no particular order).
Dr Subhasish Chakraborty
Ibrahim, Euan, Joseph, Zech, Eric
Credits 💚
This documentation theme is from doxygen-awesome-css.