Electronic Braking System – Self-Driving Golf Cart


A self-driving vehicle requires a robust Drive-By-Wire (DBW) system. DBW allows the vehicle’s onboard computer to control the car’s motion using electrical signals. Most modern cars already come with a great electronics system. For example, you can even hack into a Toyota Camry and control the braking, throttle, and steering with open source software. However, my 1998 Yamaha golf cart is almost purely mechanical, with the exception of the motor control system.

After successfully designing and implementing the all-new steering system, it’s time to move on and build an electronic braking system.

The front of the golf cart.


  • Linear actuator: an actuator that creates motion in a straight line, in contrast to the circular motion of a conventional electric motor.
  • ROS (robot operating system): a collection of software frameworks for robot software development. It provides services designed for hardware abstraction, low-level device control, implementation of commonly used functionality, message-passing between processes, and package management. 
  • ROS Nodes: a process that performs computations. Nodes are combined together into a graph and communicate with one another using streaming topics, RPC services, and the Parameter Server. 
  • Arduino: Open source microcontrollers for robotics and so much more.
  • Deep Learning: is part of a broader family of machine learning methods. Not task-specific algorithms. Vaguely inspired by information processing and communication patterns in biological nervous systems yet have various differences compared with biological brains.

Hardware Implementation

I designed the braking system with two goals in mind. First, it has to be precise and reliable. I strived to eliminate points of failures. Second, it has to be human-overrideable. In other words, in an emergency, the human safety driver could step on the brake pedal and immediately stop the moving golf cart.

Here is the design I landed on. It includes a metal cable and a linear actuator.

Software Implementation

The software implementation of the braking system is very similar to the steering system. In fact, they rely on a lot of the same code. I also use the same xbox gamepad to manually control braking.

A flowchart illustrating the interactions between different ROS nodes.


A quick demo of the braking system


This is a quick and simple overview of the new electronic braking system. I can’t wait to combine the object detection system with the braking hardware. Hopefully, in the next few weeks, I will take this out on a test ride. Thank you very much for visiting my blog. Please like this post if you enjoyed it. Also, you can contact me at contact@neilnie.com.

If you are interested in learning more about the self-driving golf cart project, you might enjoy the following posts.

  1. Deep learning steering prediction
    1. Visualizing the Steering Model with Attention Maps
    2. Successfully Tested the Autonomous Steering System for the Self-Driving Golf Cart
    3. Predicting Steering Angle with Deep Learning — Part 2
    4. Predicting Steering Angle with Deep Learning — Part 1
  2. Semantic segmentation
    1. The Robustness of the Semantic Segmentation Network
    2. Autonomous Cruise Control System
    3. Understanding the World Through Semantic Segmentation
  3. Robot Operating System
    1. Hello, ROS
    2. Open Street Map with ROS
    3. Self-Driving Software + Carla Simulator
    4. GPS Localization with ROS, rviz, and OSM

2 thoughts on “Electronic Braking System – Self-Driving Golf Cart”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.