Special thanks to Aleksandre Gordeladze for his great effort in laying the foundation for this repository.
This repository provides a robust template for a ROS-based Duckiebot project with a focus on lane following. It serves as a foundation for more advanced autonomous behaviors such as obstacle avoidance, object and sign detection, and navigation.
Developed as part of the Software Engineering Practical Course at Kutaisi International University, this repository is designed to run inside the Duckietown ecosystem using Docker and duckietown-shell (dts).
This template includes the essential components to get a Duckiebot to follow lanes autonomously:
- ✅ A camera node that processes real-time image input using OpenCV
- ✅ A wheel control node that computes and publishes motor commands
- ✅ A
defaultlauncher for easy deployment - 🧱 Clean modular setup to extend with additional nodes or features
git clone https://github.com/nikakhalatiani/base-lane-follower.git
cd base-lane-followerNavigate to the src/ folder and run:
chmod +x ./packages/Main/src/camera_node.py
chmod +x ./packages/Main/src/wheel_control_node.pyEvery time you modify the code, rebuild the image using:
dts devel build -fTo deploy and run your code on a physical Duckiebot:
dts devel run -R BOTNAME -L default -XNote:
defaultrefers to the launch script in thelaunchers/directory and should not be renamed.
When deployed on the Duckiebot:
- The camera node captures and processes video feed in real time.
- It identifies lane markings (white and yellow).
- Motor commands are computed based on detected features and passed to the wheel control node.
- A visual overlay of processed output, including detected lines, is shown for debugging or demonstration.
.
├── launchers/
│ └── default.sh
├── packages/
│ └── Main/
│ ├── src/
│ │ ├── camera_node.py
│ │ └── wheel_control_node.py
│ └── ...
├── Dockerfile
├── README.md
└── ...
All user-defined logic and ROS nodes should be placed inside
packages/Main/src.
This repository is maintained as part of the Software Engineering Practical Course at Kutaisi International University.
💡 Contributions are welcome!
You are encouraged to:
- Fork this repository and build on top of it
- Open issues for bugs, questions, or feature requests
- Submit pull requests (PRs) to enhance or fix the current implementation