First Person Driving with a Wheel

I’ve hacked together a first person driving experience that uses a natural steering wheel to control an RC car. The experience is a lot like playing a Racing Kart game IRL. It’s probably easier to understand if you see it in motion. Check it out:

AlexDrive.gif

I got the idea for this project while watching my three-year-old son play with his radio controlled toy cars. These all use the conventional two joysticks. The left is isolated to vertical movement to control the motor and the right stick is isolated to horizontal movement to control the turning direction of the front wheels.

As a toddler, my son tends to only meaningfully control one stick at a time. It’s probably too sophisticated for him to infer that directing the car to a diagonal means he needs to press the left stick forward and combine that with the right stick’s sensitivity. What’s interesting, though, is that he has no such difficulty driving his big power wheel. Same operations but different interface. It has a natural steering wheel, a gas pedal, and a shifter to control direction. It got me thinking: what if RC car’s could be controlled by natural steering wheels too?

I quickly realized that having a more natural controller isn’t enough. Without locking my son’s orientation to the car’s, I would just be recreating the struggle I had with the arcade game Super Sprint. I could never tell if turning the wheel left was moving the avatar screen left/right/up/down. Luckily, with the rise of drone racing, I could simply mount an FPV camera and place the monitor as if it were a windshield or wear it directly on my face.


The combination of a natural steering wheel controller and visual feedback directly from the car itself makes for a really compelling experience. The perspective is really novel and the scale magnifies the intensity of speed. It can feel like travelling at 300 mph, but at the same time, everyone who has picked it up can deftly control the car within minutes. It’s a lot more approachable than a drone. Who knows, with autonomous cars on the horizon, maybe this is how the joy of driving is preserved?

I had a lot of fun making, breaking, and remaking this rig. I learned a lot about electronics in the process and it’s been really fun sharing the experience with friends, and now with you!

Advertisements

34 thoughts on “First Person Driving with a Wheel

    1. I found the NRF24L01 finnicky, especially if you are buying off-brand components. I suspect the pin outs are not always the same. Also be sure it gets a consistent 3.3V, a regulator may help there.

      1. Hi Paul, I’m not very skilled in electornic but I want to replicate this project to drive my rc cars, can you help me with the list of components and the source code?

    1. Sure! Just search for “FPV” (first person view) cameras and monitors. There are approximate 40 channels available on the 5.8GHz frequency for analog video. Match your camera transmitters channel to the receiver and you’ve got a live picture.

  1. Paul please, pass the code of the Arduino and one diagrama, its for one proyect of fair to science, for orientation, tanks
    I am from México, my English no is good

  2. Paul are you willing to share the code for this project? I have ordered all of the components already! It would be greatly appreciated.

  3. Hello! First of all congratulations for this great project! I am looking into the first person view camera and monitor. Could you tell me how much you paid for them?

    Thank You

  4. Nice Job! How do you make the Arduino, PS2-Shield and the nRF work together? I use a USB-Shield for my XBox360 controller, but have problems with SPI-BUS and the library…

  5. Nice Job! How do you communicate between Uno, PS2-Shield and the NRF? I have problems with the SPI-BUS. I use the NRF24L01+ modules and have problems… when I use only the two Uno´s and the NRF the communication is OK, but with USB-Shield (I use a XBOX Controller) the SPI-BUS communication is in trouble…

    1. I have not tested the extends of the radio, but I have seen a few articles online that have done this. It will vary depending on the type of antenna and brand.

  6. Hi paul. Awesome work. I am making an attempt to replicate it. But i cant afford the FPV camera and the monitor. Instead I am having a wireless IP camera and an android application capable of streaming the video. I have tested it and it is found to have a slight delay (maybe half a second). considering this delay, will the system work fine?

  7. Hi Paul,

    Just a quick question, do you have a recommendation of somewhere I should read up about transmitting controlls to a remote controlled car? I’m thinking of doing something smiliar and thinking about how to deal with the car going out of range/losing connection to the “controller”.

    Do you do a sort of “are you still there?” check from the car to the receiver multiple times a second and if the car can’t “talk” to the controller anymore stop moving? Is this something you wrote yourself or is there some sort of protocol to follow. I know about networking protocol for transmitting data but I’ve only done it for sending packets of data rather that streaming things so I’m a bit unsure as to what to do.

    Any advice you feel comfortable sharing would be much appreciated. Great project by the way, I love it.

    Thanks in advance,

    Sean

    1. Hi Sean,
      What you’re suggesting is smart and it’s something I didn’t get around to implementing but if I did, I would do as you describe – have the car check for a connection and zero out the throttle if there isn’t one. If you’re writing it from scratch like I did, I imagine you’d have to write this check yourself. Some people have suggested that you could hijack an existing RC transmitter/receiver and in that case you could rely on the checks that are already in place.

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s