Welcome to my blog series about teaching a children's toy car to learn to drive through a series of obstacles. In this post, I'll talk a little about the project itself: hardware, software and overall goals.
Starting simply with the hardware used: I am using a Raspberry Pi 4 (specs here) and a simple USB-webcam for the project. I am
still have not received the actual car, but it is a 6V children's ride-on car (listing) that tops out at a speedy 2.5 mph.
One of the main reasons I decided to do this project was to learn basic hardware engineering. I have seen in similar projects that people use an Arduino board to actually control the car per the robot's instructions. Once I get to this part of the project, I will
likely find a need for something similar, but I'll deal with that later.
Software / Data
Though I am trying to implement this project from scratch (no forking self-driving repos) I will heavily rely on tensorflow for the object detection model. I have signed up for access to the Waymo Open dataset - a very large scale database for self-driving tasks. However,
given the simplicity of the goals for this project, I am skeptical that I need that scale of data; I needn't really concern with making sure my vehicle merges lanes efficiently. Once again, I'll know more as I dive into this project, but I think I can scrape by with a good object detection model and
deep reinforcement learning for the actual driving based on the object detection (I saw a stop sign, what do I do now?). In the coming week, I'll get a good grasp on the data side of things.
The most important part of any project, I want to take some time to fully explain the scope of this project so I can efficiently split this large project into several smaller actionable steps. The goals for the final project can be pretty efficiently summed up as a self-driving car that can navigate itself through a set of obstacles, while conforming to some set of pre-defined rules of the road.
This implicitly defines a few goals and parameters:
One thing to note is that though there will be only one driving car on the road, we will do our best to simulate reasonable driving conditions. I have a set of mini road signs that will define the traffic patterns that the car should respect.
I'm excited to start this project. I would love to have a working project by Christmas time to show off for the family.
- Car will drive from point A to point B
- Car will come across several driving-related tasks along the path from A to B
- Car will not crash into any obstacles and will remain on the 'road' on the path from A to B
- Car will need to maintain reasonable driving standards -- stopping at stop signs, driving the right way on one-way roads, etc