To that end, we have trained our model through imitation learning on a dataset compiled from four different sources:
- Real-world Duckietown dataset from logs.duckietown.org (REAL-DT).
- Simulation dataset on a simple loop map (SIM-LP).
- Simulation dataset on an intersection map (SIM-IS).
- Real-world dataset collected by us in our environment with car driven by PD controller (REAL-IH).
We aimed to collect data with as many possible situations such as twists in the road, driving in circles clockwise/counterclockwise, and so on. We have also tried to diversify external factors such as scene lighting, items in the room that can get into the camera’s field of view, roadside objects, etc. If we keep these conditions constant, our model may overfit to them and perform poorly in a different environment. For this reason, we changed the lighting and environment after each duckiebot run. The lane detection was calibrated for every lighting condition since different lighting changes the color scheme of the image input.
We made the following change to the standard PD algorithm: since most Duckietown turns and intersections are standard-shaped, we hard-coded the robot’s motion in these situations, but we did not exclude imperfect trajectories. For example, the ones that would go slightly out of bounds of the lane. Imperfections in the robot’s actions increase the robustness of the model.