(Code not yet updated for the new version of EOgmaNeo, stay tuned for updates!)
The program runs on the Pi, and performs all the online machine learning on the Pi's CPU. With the OgmaNeo library, there is no pre-training and no offloading to a more powerful machine. The network learns to predict the next command as you drive it. The car takes video from the camera and the steering angles as input, and uses a predictive hierarchy to predict the next desired steering angle. This greatly lowers the computational cost, as well as saves the time and work necessary for collecting data for other kinds of neural networks.
OgmaNeo is online (real-time) learning software. The OgmaNeo library contains implementations of Online Predictive Hierarchies based on the Feynman Machine.
If you have a machine learning problem that has to do with data changing over time, and the traditional approaches to machine learning don't work, check out OgmaNeo!
The Feynman Machine is a brain-inspired sequence prediction algorithm AI architecture for machine learning. It is a network of intercommunicating nonlinear dynamical systems, and each system can adapt to predict its future inputs. While the Feynman Machine is not for beginners due to the combination of hard math, neuroscience, and machine learning, Ogma has done an extraordinary job in packaging their software in a way that is approachable.
If you are interested in the inner workings of the Feynman Machine, read the paper "Feynman Machine: The Universal Dynamical Systems Computer" here!
EOgmaNeo is Ogma Corp's embedded version of OgmaNeo. For some tasks it is also much faster than OgmaNeo.
While OgmaNeo can run on large networks and parallel architectures like GPUs, EOgmaNeo runs on the CPU and is optimized for low-powered hardware.
EOgmaNeo is used for this SDC.
-
Traxxas Rustler camera mount .stl file included in this repository.
-
Arduino Uno R3 and case
Walkthrough for the installation process in my Docker container repository here.
-
Install the Steam controller on the Pi
-
Install Docker on the Pi
-
Ino build + upload in the Docker container
Docker image repository for setting up a Raspberry Pi 3 Stretch environment for the EOgmaDrive self-driving car.
The breadboard is used to multiplex the power and ground pins. There should be 3 in each + and -. The power and the ground cables connected at the breadboard are:
-
Arduino
-
Steering servo
-
Driving servo (back motor)
On the Arduino, here are the corresponding digital connections:
-
Digital 2: Driving Servo
-
Digital 3: Steering Servo
If you want, you can change the assignment in the .ino file.
The 2 remaining cables:
-
Red goes into 5V on the Arduino
-
Black goes into ground on the Arduino
The Steam controller dongle is directly plugged into the Pi. Steam controller installation instructions here in my Docker repository, or here, from the driver repo.
Push a button on the controller on reboot and after starting the daemon!
I replaced the stock ESC with the Dynamite Brushed ESC because the one that comes with the car makes the car stutter randomly.
I couldn't get all the materials to fit under the truck case, so I ended up with a cable monster. You try it! Good luck!
The camera is mounted to the front of the truck.
To test if the camera works:
from picamera import PiCamera
camera = PiCamera()
camera.capture('image.jpg')
I used this mount to mount the camera for the Raspberry Pi to the truck. It doesn't perfectly slide onto the truck, and is made for the GoPro, but with some epoxy, it got the job done. Please let me know if you find something better!
If you are using my Docker container, here are the instructions:
-
Connect all wires
-
Wait for the Pi to start
-
Pi will be looking for the controller, press a button for them to connect. After the controller is connected, you should be good to go!
To train the SDC, just drive it around for a bit. The button A switches between training and self-driving mode.
The work in this repository is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. See the EOGMADRIVE_LICENSE.md and LICENSE.md file for further information. Contact Ogma via licenses@ogmacorp.com to discuss commercial use and licensing options.
EOgmaDrive Copyright (c) 2017 Ogma Intelligent Systems Corp. All rights reserved.