A comprehensive robot control system featuring an Arduino-based robot and a JavaFX-based control dashboard. This project demonstrates the integration of embedded systems with high-level software for real-time control and monitoring.
self-driving-bot.mp4
- State Machine Architecture: The robot is controlled by a state machine that manages the different modes of operation.
- WiFi Control: wirelessly control the robot using a custom communication protocol (HTTP + TCP).
- Modes of Operation:
- Manual Control: Drive the robot using the GUI or keyboard.
- Line Following: Autonomous line tracking using IR sensors.
- Maze Solving: Algorithms to navigate and solve mazes.
- Obstacle Avoidance: Autonomous obstacle avoidance using Ultrasonic sensor.
- Autonomous Maneuvers: The robot can perform a series of autonomous maneuvers using its encoders and sensors.
- Real-time Telemetry: Visualize sensor data (UltraSonic, IR) and odometry in real-time.
- GUI Dashboard: A user-friendly JavaFX interface for control and monitoring.
- Hardware: Arduino (with WiFi support), DC Motors, Encoders, IR Sensors, Ultrasonic Sensor.
- Firmware: C++ (Arduino).
- Software: Java 17+, JavaFX, Maven.
Before you begin, ensure you have the following installed:
- Java Development Kit (JDK) 17 or higher.
- Maven (for building and running the Java application).
- Arduino IDE (for uploading code to the robot).
- Open the
Arduino/Main/Main.inofile in the Arduino IDE. - Connect your Arduino board to your computer.
- Install necessary libraries (e.g.,
WiFi101). - Upload the sketch to your board.
- Clone this repository:
git clone https://github.com/Skpml/Self-Driving-Bot.git cd self-driving-bot-main - Clean and build the project:
mvn clean install
- Start the Robot: Power on your Arduino robot. Ensure it creates or joins the expected WiFi network.
- Run the Dashboard:
Open a terminal in the project root and run:
mvn javafx:run
- Connect: Use the GUI to connect to the robot's IP address and start controlling it!
Arduino/: Contains all Arduino firmware code.src/main/java: Source code for the JavaFX application.src/main/resources: FXML files and assets for the GUI.pom.xml: Maven project configuration.