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.
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.)
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.
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.
A Video Demo
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 firstname.lastname@example.org 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!
- Driver by wire system (DBW)
- Robot Operating System