Monthly Archives: April 2021

Ped Dead Reckoning II: This Time it’s Inertial

via SparkFun: Commerce Blog

When last I left you on my journey to nail down non-GPS absolute positioning and navigation, you may recall that I was finding some difficulties maintaining accuracy, and I was not alone in my findings on this quest. Engineering reviews and Masters theses made it quite clear that I am not the only one having a rough time making this happen, but that certainly isn’t keeping me from continuing my search. So here in Part II I'll share what I’ve learned over the past few weeks (spoiler alert: I wander from pedestrian dead reckoning (PDR) down any avenue I can find where I might gain some insight into non-GPS inertial navigation.)

alt text
I did it for the first article, I felt it was only right to do it again for this one.

In expanding my search, I came across a few other communities that also continue to work on this dilemma. The first group that I came across was a group of R/C hobbyists working with submarines. I know that mariners, both above and below the surface, have been using inertial navigation systems with success for quite some time. I found a fair number of semi-autonomous underwater vehicles, including some hobby-level, Arduino-driven submarines, like this scratch-build beauty from John Redearth. However, the thing about R/C hobbyist submariners is that they enjoy controlling their submarines, so while some of them have certain levels of autonomy built in (usually for the ballast system), inertial navigation at the hobby level is fairly rare. Even searching up, projects like DARPA’s Hydra project and the ensuing Orca project by Boeing have shown that accurate inertial navigation without GPS is still an incredibly tough nut to crack. DARPA has been working on inertial navigation in unmanned underwater vehicles since 1988, and since the concept is the same whether in an underwater vehicle or on a pedestrian, I can't feel too bad not being able to get it nailed down in the two months I've been working on it.

alt text
Boeing's Echo Voyager uses a Kalman-filtered inertial navigation unit supported by Doppler velocity logs.
(Photo courtesy of Boeing Co.)

The real issue continues to be drift. For pedestrian navigation systems, zero velocity updates have been used with good effect to help minimize such drift. Basically, ZUPT zeros the measure of velocity with each perceived step. This seems to work to a certain degree for walking in a straight line at a regular gate, or while standing still. However if, as in my original foray down this twisted path, we are talking about firefighters in emergency situations, neither of the aforementioned scenarios are likely to occur for very long. Ideally, pedestrian dead reckoning would only be used for brief intervals when GPS lock was lost, but if you’re in a life-threatening emergency situation, hoping that you re-establish GPS lock isn’t a sound option.

alt text
Drifting is great for your tryke, but for PDR, not so much.

Another group that has more recently joined the hunt for the perfect inertial navigation solution is engineers working on VR hardware. If you’ve spent any time in a Sony, HTC, Oculus or any other decent brand of VR headset, then you know how attuned they are with your movements. Turn your head left or right, and your view pans left or right. Tilt your head up and down, the view tilts accordingly. Walk forward three steps… well, unless you’re pushing the accompanying “walk” button, your view doesn’t change. Oliver Kreylos, a researcher with the Department of Earth and Planetary Sciences at UC Davis, discusses this in a good video here. An idea he suggests, which has been suggested many times by many people, including me and a number of commenters on my last post, is to add fixed point transceivers, allowing the module on the user to read signal strength from the multiple fixed points, adding another set of data points to help with accuracy. He also makes it clear that without that, inertial tracking is, in his own words, "a no-go."

alt text
Okay, so there are only so many options when visualizing inertial navigation drift.

I did find a small group of engineers out of Israel, more specifically from the faculty of electrical engineering at the Israel Institute of Technology and the Department of Marine Technology University of Haifa, who are doing what most of us wish we could do when stumbling on a project - throw more sensors at it! Their piece, "Multiple Inertial Measurement Units — An Empirical Study", is an extremely in-depth look at improving inertial navigation accuracy by increasing the number of sensors used. For this paper, they’re using 32 6-DoF IMUs for a total of 192 inertial sensors! I’ve read one or two other research papers that used multiple IMUs to try to improve accuracy in pedestrian dead reckoning, usually on legs and arms, but nothing on this large a scale. If you’re really interested in utilizing this technology, this paper is a very good read.

Suffice to say, accurate PDR without the aid of GPS isn't a problem I'm going to be solving any time soon. I am pleased to see that it is being worked on in an ever-increasing range of technologies, by an ever-enlarging pool of engineers. But even with as far as we've come, our automotive dead reckoning can only maintain accurate positioning after GNSS loss for about 90 seconds. And really, if I'm to be completely honest, if I'm going to put multiple IMUs on myself, it most likely won't be for dead reckoning but for a sweet motion capture suit.

alt text

The more I learn, the less I realize I know. ~ Socrates (also me, on a daily basis.)

comments | comment feed

Playing Connect Four against a mini-golfing AI opponent

via Arduino Blog

Have you dreamed of combining the two incredible activities mini-golf and Connect Four together into the same game? Well one daring maker set out to do just that. Bithead’s innovative design involves a mini-golf surface with seven holes at the end corresponding to the columns. The system can keep track of where each golf ball is with an array of 42 color sensors that are each connected to one of seven I2C multiplexers, all leading to a single Arduino Uno

The player can select from six distinct levels of AI, all the way from random shots in the dark to Q Learning, which records previous game-winning moves to improve how it plays over time. It can putt by first loading a golf ball into a chamber and then spinning up a pair of high-RPM motors that launch it. For the human player, there is a pair of dispensers on the left that give the correct color of ball. 

The entire system runs on an Intel NUC that hosts the game which was written in C#. There’s a large 22″ touchscreen at the front that is mounted at eye-level for easy interactions. Although it took Bithead nearly 18 months and $3,500, the end result is spectacular.

Be sure to check out his great write-up, which has a couple of demonstration videos and a build log. 

The post Playing Connect Four against a mini-golfing AI opponent appeared first on Arduino Blog.

Arduino Mbed Core for RP2040 Boards

via Arduino Blog

Arduino support for the Raspberry Pi RP2040 chip is available now using the official Arduino Mbed Core. This is obviously very important, and exciting, for the upcoming Arduino Nano RP2040 Connect. But it goes beyond the Arduino device to also bring support to other boards built around the RP2040 chip.

Arduino Core and Mbed OS

Arduino is no stranger to Mbed OS. It’s a hugely important platform and operating system in the IoT space. This is due toits support for Cortex-M microcontrollers and its real-time operating system capabilities. So a lot of work was done when Mbed OS was adopted for the Nano 33 BLE and Nano 33 BLE Sense devices. Since all Mbed infrastructure and drivers were in place, we could easily support all new Arduino boards with minimal effort. Including new ones like the Portenta H7 and Nano RP2040 Connect.

Arduino Mbed Core for RP2040

This makes the Arduino Core plug-and-play, and an easy choice for getting your devices up and running quickly. We provide two cores; one for our Nano RP2040 Connect board, and one for other RP2040-based boards, including the Raspberry Pi Pico. As the core is based on Mbed OS you can choose between using the Arduino’s API or Mbed’s.

If you’d like to support any other RP2040 board with its custom features you can do so. It requires very little effort by cloning and tweaking the Arduino Mbed Core.

Ready for the Nano RP2040 Connect

All Arduino APIs are standardized, which means they can be used on all boards. If you have a sketch for your Nano 33 BLE, you can now upload it to a Nano RP2040 Connect and run it without making any changes.

In effect this means you can create sketches for the new Arduino board, even if you don’t have your hands on it yet. It also makes project upgrades very easy. Nor does the Arduino Core require a custom bootloader for RP2040 devices, as it uses the ROM-based bootloader from Raspberry Pi.

Check out the Arduino Core Mbed right here. And sign up to our Nano RP2040 Connect contact list for more news as it happens.

The post Arduino Mbed Core for RP2040 Boards appeared first on Arduino Blog.

Explore Machine Learning with our Newest Kit

via SparkFun: Commerce Blog

A couple weeks ago during GTC, we announced our new Machine Learning @ Home Kit, designed to turn machine learning skills into action. We’re really excited about the opportunities the DLI Kit and course provides, and are excited to offer the next step into deployed projects.

The kit's hookup guide will be a living document - one we'll continue to update as more projects are created and shared with us by the community. Over the coming weeks, keep an eye out for some exciting news and fun opportunities (hint: start working on your questions)!


We had a great time sharing two presentations at this year's GTC - a sneak peek of the kit and one of the projects that will be in the hookup guide. The videos should be available for you to watch soon even if you missed GTC this year. In the meantime, be sure to check out the keynote from NVIDIA CEO & Founder Jensen Huang:

Did you attend GTC this year? There were a ton of big announcements, which were you most excited about?

SparkFun Machine Learning @ Home Kit for NVIDIA Jetson Nano

SparkFun Machine Learning @ Home Kit for NVIDIA Jetson Nano


Curious about the kit?

Before trying out this kit, be sure to take the NVIDIA Deep Learning Institute (DLI) course “Getting Started with AI on Jetson Nano.” It’s a free, self-paced course that will allow you to learn foundational skills for the NVIDIA Jetson Nano Developer Kit. We created the Machine Learning @ Home Kit as a next step you can take into further developing your machine learning skills.

Since we’ve all spent a lot of time at home this past year, we wanted to take machine learning and apply it at home with the NVIDIA Jetson Nano and SparkFun Qwiic ecosystem. The kit brings machine output and interaction into the picture through a number of different SparkFun Qwiic boards.

The kit will be launching with a hookup guide that includes three different applications to help you put your knowledge to use! The project examples include a machine learning pet feeder, smart kitchen assistant, and personalized lighting/appliance controls.

comments | comment feed

Allen Pan’s Arduino-controlled microwave only works while gaming

via Arduino Blog

Microwave ovens have been the peak of convenient cooking since the 1960s, and nobody appreciates that convenience more than gamers. Normally you would microwave some pizza rolls between Call of Duty death matches, but Allen Pan decided to make gaming a more integral part of the cooking process for his most recent project.

This is a microwave oven that will only cook food while an attached game console is in use. That console is a generic all-in-one handheld with many built-in games, most of which are knock-offs or in the public domain. If a Hot Pocket requires three minutes of microwave cooking, then Pan has to play one of those games for a full three minutes or risk biting into an icy center.

Pan used an Arduino Uno board to monitor a microphone placed in front of the console’s speaker. The console only outputs audio while a game is in play, so this was a reliable way to determine if the user is actively playing or if they have walked away.

If the Arduino detects sound, then it will turn on a relay in the microwave oven. Pan hardwired the microwave oven so that any time it receives power, the microwave emitter will run. All Pan needs to do is pop some food in the microwave and start playing a game. So long as his thumbs don’t get tired, he can heat up whatever treat he craves.

The post Allen Pan’s Arduino-controlled microwave only works while gaming appeared first on Arduino Blog.

The Nespresso Shield logs your coffee consumption using a MKR Zero

via Arduino Blog

How much coffee do you consume in a day? No idea? Then the Nespresso Shield by Steadman Thompson may be just what you need!

The device employs an Arduino MKR Zero, and a microphone unit to sense when a Nespresso machine gets louder than a certain threshold. When this level is met, it knows that a drink is being prepared and records this on the board’s built-in SD card reader. Info is coordinated with RTC values, allowing the card to be pulled in order to produce nice graphs in Excel or LibreCalc.

It also keeps track of water levels, based on how many cups have been poured, with a reset button and LED as the user interface. The unit simply sits on top of the machine, so there’s no modification needed whatsoever. 

The post The Nespresso Shield logs your coffee consumption using a MKR Zero appeared first on Arduino Blog.