RC Telemetry Board Lets Virtual Crewmember Help You Race Better

Logging and telemetry in remote controlled racing is a great thing, and not only does [jwachlin]’s Open RC Spotter do a fantastic job of that, it has quite a few clever tricks up its sleeve that make it extra special.

Open RC Spotter is an ESP32-based hardware platform for high performance RC car racing that reads from various sensors (including IMU, GPS, temperature, battery, and IR receiver for IR lap beacons) to create a filtered stream of readings that include position, velocity, lap time, battery voltage, and more.

Got RC car telemetry? Feed it to a virtual race engineer for real-time voice feedback.

This data gets logged to an SD card, but can also be broadcast wirelessly via ESP-NOW to a receiver that can in turn send it over serial USB, or do whatever else one wishes. There’s also a neat feature that fires up a temporary WiFi access point on demand so log files can be downloaded with a web browser, no need to hook up a cable.

So far, so cool. But there’s still another nifty feature. Open RC Spotter supports the Crew Chief telemetry protocol. Crew Chief is a piece of free Windows software that serves as a companion application for sim racing. It acts as a virtual race crew member, providing spoken information based on live telemetry read from supported racing sims.

Since Open RC Spotter supports the same telemetry format, one can use the virtual race engineer with RC car racing by simply feeding Open RC Spotter‘s serial data to the Crew Chief application. The RC telemetry data isn’t as rich as what comes from the racing sim APIs, but it’s more than enough to be useful.

People come up with all kinds of neat ideas when it comes to RC racing, and most of them depend on having access to good data. For example, a load cell in the steering mechanism can provides the data for force-feedback steering. We’ve even seen LiDAR and a depth camera used to automatically compute optimal racing lines.

D-POINT: A Digital Pen With Optical-Inertial Tracking

[Jcparkyn] clearly had an interesting topic for their thesis project, and was conscientious enough to write up a chunk of it and release it to the wild. The project in question is a digital pen that uses some neat sensor fusion to combine the inputs from a pen-mounted gyro/accelerometer with data from an optical tracking system provided by an off-the-shelf webcam.

A six degrees of freedom (6DOF) tracking system is achieved as a result, with the pen-mounted hardware tracking orientation and the webcam tracking the 3D position. The pen itself is quite neat, with an ALPS/Alpine HSFPAR003A load sensor measuring the contact pressure transmitted to it from the stylus tip. A Seeed Xaio nRF52840 sense is on duty for Bluetooth and hosting the needed IMU. This handy little module deals with all the details needed for such a high-integration project and even manages the charging of a single 10440 lithium cell via a USB-C connector.

Positional tracking uses Visual Pose Estimation (VPE) assisted with ArUco markers mounted on the end of the stylus. A consumer-grade (i.e. uncalibrated) webcam is all that is required on the hardware side. The software utilizes the familiar OpenCV stack to unroll the effects of the webcam rolling shutter, followed by Perspective-n-Point (PnP) to estimate the pose from the corrected image stream. Finally, a coordinate space conversion is performed to determine the stylus tip position relative to the drawing surface.

The sensor fusion is taken care of with a Kalman filter, smoothed with the typical Rauch-Tung-Striebel (RTS) algorithm before being passed onto the final application. This process is running in Python using the NumPy module, as you would expect, but accelerated using the Numba JIT compiler.

Motion tracking is not news to us, we’ve seen many an implementation over the years, such as this one. But digital input pens? Why aren’t they more of a thing?

Thanks to [Oliver] for the tip!

Kalman Filters Without The Math

If you program using values that represent anything in the real world, you have probably at least heard of the Kalman filter. The filter allows you to take multiple value estimates and process them into a better estimate. For example, if you have a robot that has an idea of where it is via GPS, dead reckoning, and an optical system, Kalman filter can help you better estimate your true position even though all of those sources have some error or noise. As you might expect, a lot of math is involved, but [Pravesh] has an excellent intuitive treatment based around code that even has a collaborative Jupyter notebook for you to follow along.

We have always had an easier time following code than math, so we applaud these kinds of posts. Even if you want to dig into the math, having basic intuition about what the math means first makes it so much more approachable.

Continue reading “Kalman Filters Without The Math”