Course 1 falls under the workshop series Self-driving Cars & AI and focuses on the analysis, explanation and synthesis of:

  1. the electromechanical parts of the vehicle
  2. the basic motion and remote control programming
  3. the programming and image capture from a built-in camera
  4. the basic programming of autonomous tracking algorithms (face detection and tracking)

Course 1 consists of the following sessions: 

Session 1: General Description and Integration of the Self-driving Car Mechanical Subsystems 

Description of the mechatronic assembly of the self-driving car as well as the autonomous functions we wish it to perform. Explanation of the kit of materials and tools that will be used to build the vehicle. Assembling the vehicle frame. Mounting motors and soldering the wires. 

Session 2: Integration of the Self-driving Car Electrical Subsystems 

Description of the power circuit of the self-driving car. Installation of switch, battery case, voltage regulator. Implementation of required electrical soldering for the installation and operation of the electrical subsystems. Implementation of the voltage regulator - motor driver – motors connections. Implementation of voltage regulator wiring - ESP32 CAM. 

Session 3: Synthesis of the Embedded Computing System (ESP32 CAM) for the Self-driving Car 

Installation of ESP32-CAM embedded computer system to the robot. Introduction to the ESP32-CAM computer system and its capabilities. Introduction to the ESP32-CAM programming environment, settings, downloading code to the microprocessor. Implementation of a step by step procedural code. Familiarization with the basic commands of ESP32 CAM. 

Session 4: Programming Basic Motions for the Self-driving Car 

The logic behind vehicle motion (linear, rotary, circle segments) and motor rotation. ESP32 CAM motor-computer interface, gate level explanation. Basic self-driving car speed control in 2 dimensions. Programming routines for linear and rotational motion, stop. Implementation of a basic application so that the vehicle performs a series of programmed motions inside the workspace.

Session 5: Connectivity and client/server programming for the Self-driving car

Explanation of the code to connect the Embedded Computing System ESP32-CAM to WiFi and programming to find the signal quality. Introduction to client/server programming logic and the concept of a web server. Implementation of test code for image capture and basic settings related to this capture. 

Session 6: Design of a support base of the Embedded Computing System (ESP32 CAM) for the Self-driving Car 

Finding the best angle of the camera of the ESP32-CAM on the robot for optimal visual coverage. Designing a suitable support base for the ESP32-CAM and printing it using a 3D printer. Building the vehicle's outer casing. 

Session 7: Self-driving Car remote control mode programming

To server/client programming techniques for data transfer. Programming to remote control the vehicle via a keyboard. Programming server/client services for sending motion commands to the self-driving car. 

Session 8: Programming and Management of Visual Information for the Self-driving Car 

Programming to capture live video from the ESP32-CAM camera. Display the live video stream in a remote computer window. Remote control the vehicle in order to track a moving object via video on a remote computer. Programming algorithms for autonomous face tracking (face detection and tracking). 

References - Supplementary Material