One of the most important components of a self-driving car is the drive-by-wire system (DBW). The DBW receives inputs from the onboard computers and execute those commands. In the last iteration of the vehicle, we had a steering, throttle, and braking control as part of the DBW. Even though we demonstrated decent functionality, the hardware modifications were far from being reliable, especially when I came to the steering-by-wire system. 

The steering motor

We simply attached a strong enough DC motor to the steering column. The sloppy design, weak motor, and terrible attachment led to many problems. The error margin of the hardware actuation was very significant. This Fall, I realized that it’s time to completely redesign the steering system. Here is what we did. 


  • 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.

Building the Hardware

I took apart the original steering system. (I apologize for the dirtiness and mess in advance. It’s not going to look pretty.)

Under the hood
I cut the steering column in half, hoping that I will never need this part again. 

After basically destroying the whole steering system, I thought it was a good idea to do some more damage. With some tremendous help from my advisor, we took out the batteries and the roof, and finally, flipped the cart over. 

Also, we flipped the golf cart over. 

The Linear Actuator

The linear actuator

A linear actuator is an actuator that creates motion in a straight line, in contrast to the circular motion of a conventional electric motor. I purchased a linear actuator from ServoCity, which cost me around 400 dollars with two mounting brackets. Here are the specs: 

The actuator pushes and pulls the front right wheel of the golf cart, bypassing any traditional steering column and steering mechanism. As you can see from the numbers above, the actuator has more than 500 pounds of force, plenty to push the wheels of a golf cart. 

Some Pictures

A Video Demo

A video demo of the system

Some Final Thoughts

This is part 1 of a two-part series on the new hardware system. The next step is to connect the linear actuator to an Arduino. Please contact me at if you have any questions, comments, or concerns. Also, if you like this post, please give me a thumbs up and follow my blog! I really appreciate your support, it means a lot to me! 

Posted by:NeilNie

Student at Columbia University, School of Engineering and Applied Sciences. Prev. software engineer intern at Apple. More than six years of experience developing iOS and macOS applications. Experienced in electrical engineering/microcontrollers. From publishing several apps to presented a TEDx talk in machine learning. Striving to use my knowledge, skills, and passion to positively impact the world.

4 replies on “Autonomous Golf Cart Power Steering Using a Linear Actuator (Part 1)

Leave a Reply

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

You are commenting using your 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.