Post

Spark Init

Project inception for SPARK (Smart Perception and Autonomous Racing Kernel)

Spark Init

Motivation & Inspiration

I was doom scrolling on YouTube like one normally does before going to bed when I stumbled upon this video from Steven Gong (link to video) where he makes an RC car autonomously race around tracks. Naturally, I was very inspired and decided that I wanted to try making a car like this!!

Now, this also happened to be the night before my Compilers final, so I backbenched the idea. Until now. After graduating college, I realized I have a ton of free time outside of work where I can do side projects!! So I got started researching and finding components for building such a car. I did not really give myself a fixed budget nor deadline, something I will come to regret later. Maybe?


Objectives:

Crawl
I want the RC car to be fully controllable by software.
Walk
I want the RC car to be able to autonomously navigate and explore a region of space and provide a map back to the user. The user should then be able to provide a race line that fits within the explored region to the car.
Run
I want the RC car to take the racing lines provided by the user and optimize them locally to traverse the lines quickly and efficiently.
Run Faster?
I want the RC car to be able to overtake and avoid moving objects that may appear on the “track” defined by the user.

Basic Requirements

  • The RC car shall be controllable by software entirely
  • The RC car shall provide telemetry over a wireless network
  • The RC car shall contain a deadman switch mechanism for a soft e-stop
  • The RC car’s steering shall be fully controllable by software
  • The RC car’s traction shall be fully controllable by software
  • The RC car shall be able to map its surroundings
  • The RC car shall be able to avoid static objects
  • The RC car shall be able to make its own hotspot for users to interact
  • The RC car shall be able to interpret data passed by a user
  • The RC car shall have independent power supplies for control and actuator power

Getting Started

Picking a Car

So the first big task for this project was selecting my car that was going to become the base for this project. I initially had gotten an RC car (model shown in Figure 1) with my friend through Facebook Marketplace; however, there were a few problems that became apparent as I started getting started with that base.

Desktop View Figure 1: Initial base for SPARK (Tamiya Chassis/Base)

The first was that the base was already super compact. There wasn’t much space for adding stuff since the body was super compact, so adding the sensors I was going to need was not going to be feasible with this car. Furthermore, the wheels were way too close to the ground and with the added weight of the control-power battery, there were issues with getting the car to avoid scraping against the floor. The parts for replacement were also just way too expensive for me.

As such, I went to my local RC car hobby store and picked up a new RC car that I was going to use as my base. I went with the Traxxas Slash 2-wheel drive since it was cheap and had a ton of space on the chassis. Furthermore, I later learned that this base actually is used by others as well, so there is a bit of open-source documentation on the motor drivers (which did not actually come in handy at all). Regardless, the base was far more open for mounting components, as shown in Figure 2.

Desktop View Figure 2: Initial base for SPARK (Traxxas Chassis/Base)

Initial Stab at Electronics

Now that I had a rough idea of what my base hardware for this car was going to be, it was time to look into the wiring that will actually get this car moving. Naturally, since I picked up the whole kit from the RC car store, all the wiring to make it work like an RC car would already be provided. So I just needed to figure out what addons I would append to the car.

So I went with a cookie-cutter system as a first go at the problem (as shown in Figure 3). I based this on several designs I found when searching for examples on the internet. Now, I did not know this at the time, but this was going to change a ton very fast.

Desktop View Figure 3: Initial electronics sketch for SPARK

Initial Parts Ordering

I had many of the components listed in my initial electrical sketch already on hand, so I did not have to order or buy much. The only components I needed to buy were: the I²C PWM servo head to connect the Jetson to the car’s existing components; the IMU, which was bought secondhand to avoid the spike in pricing; and finally, the car itself.


Next Steps

Everything I would need was being shipped on its way or already here with me, so the next step was pretty straightforward. It was time to just go “build the damn thing.”

This post is licensed under CC BY 4.0 by the author.