Inspiration

Autonomous vehicles are very prevalent nowadays, from Tesla's autopilot to drone swarms. These autonomous vehicles have a wide range of useful applications, from enhancing road safety and reducing traffic congestion to revolutionizing manufacturing, agriculture, and rescue missions. Given our interest in these subject areas and some members' previous robotics experiences of similar scope, we decided the autonomous vehicle challenge was a better fit for us.

What it does

Our autonomous vehicle implements functions that allow it to follow a marked path, attempt to avoid obstacles and solve a maze. It also integrates Kintone for web-based communication that uses information sent from the rover for real-time data synchronization, which allows for the storage of sensor information for processing.

How we built it

We started with testing the components out and figuring out how they work. Then we proceeded to assemble the vehicle, 3D printing extension parts as needed. Afterwards, we moved on to programming, starting with moving straight and rotating. We then mapped out strategies for each of the 4 challenge courses, starting with the easiest to the hardest. After confirming our strategies had some success, we finalized the component placements and secured them onto the provided chassis.

On the side, we programmed an ESP8266 to connect to the internet and communicate with a no-code Kintone database. This required using the write libraries and configuring an API token for the database.

Challenges we ran into

The largest challenges we ran into included getting the vehicle to move how we wanted to move. We had challenges with:

  • Getting the vehicle to trace along marked paths smoothly and not get stuck at junctions.
  • Having the right parameters not to overshoot line tracing.
  • Getting the robot to move in a straight line due to unequal motor rotation.
  • Having only one ultrasonic sensor that wasn't able to detect distances at an angle.
  • Coming up with efficient search algorithms for navigating around obstacles.
  • Getting the vehicle to rotate 90 degrees and sticking to the right wall during the maze search.

We also had challenges with attempting to send vehicle readings to an online database:

  • Due to voltage differences in the ESP8266 and the Arduino, the ESP8266 could not act as an I2C slave. This meant data could not be transferred between the ESP8266 and the Arduino due to the blocking event loop in the Arduino's code.
  • The ESP8266 has limited RAM, as such the size of JSON in the post request had to be kept as small as possible.

And some other challenges:

  • Uncertainty in the final project description guiding us to attempt to design for all possible situations.
  • It was the first hardware hackathon and/or first time attempting to build an autonomous vehicle from individual components for some of us.

Accomplishments that we're proud of

It was exciting to achieve web-based communication with the vehicle and a database, learning to program the ESP8266 to connect to the internet and send HTTP requests is something we are proud of.

We are also proud that our vehicle was able to trace out a marked path on the floor. Unfortunately, our strategies did not perform perfectly for the course with obstacles or a maze, but getting our robot to stop and move sideways upon direct collision with an obstacle was quite an accomplishment.

We were determined to stick to the project until the very end, so we were naturally proud of the effort we put in, especially during the last few hours leading up to the deadline.

We worked hard, we stayed up late, and we got stuff done.

What we learned

For some of us, it was the first time making a larger-scale Arduino/microcontroller-based project within 24 hours. We expanded on what was usually taught in introductory Arduino courses by making use of almost all types of pins on the Arduino and how to interface with multiple peripherals at the same time.

What's next for Web-based Autonomous Vehicle

Unfortunately, we did not have the required hardware to interface an ESP8266 board with the Arduino, so one of our first next steps is to get that working so data from the ultrasonic sensor and estimates of the rover's position based on its speed and position can be sent and uploaded for the cloud for real-time plotting and analysis.

On the more technical side, having GPS would be much more helpful in map navigation. With more detailed data, combined with better data on the vehicle's rotation, speed, and surroundings (perhaps with more ultrasonic sensors and even lidar), we hope that SLAM (simultaneous mapping and localization) can be achieved.

Built With

Share this project:

Updates