I recently posted a thread on reddit linking to this project and asking for feedback on how the people of /r/running run with a stroller. I will present the results soon, but in the meantime I'd like to address a topic that came up over and over again.
A little perspective
I want to stress that the results were overwhelmingly positive, but several people raised concerns that they would suddenly pass out and their child would be mindlessly driven into the next intersection. I love that people are asking questions and thinking about the application of the RoadRunner! In that respect, it may be useful to gain a little perspective in order to define the problem clearly and arrive at a better solution.
Personally, I've been running about 10 years now (including the last 786 days in a row) and have yet to lose consciousness. Judging by my peer's lack of knee and elbow pads, they don't seem to even anticipate falling over during the thousands of steps they take every week. So when we're discussing motor control safety, we’re talking about two things: a fringe edge case, and a feeling of security. Both are equally important to the design for their own reasons, and we have the means of solving both. So let’s take care of them!
Mitigating Stroller Insecurity
The choice of the driven wheel (the front only) means that as power is applied, the center of gravity causes the wheel to slip, limiting acceleration. In testing this works great— combined with a speed governor, the stroller does not feel like it’s going to “get away” from the runner, even when the pace is set too high. With predictable autonomous steering, I think this will be even less of an issue.
However, trusting a black box is different than trusting code you’ve written (or even open-source code you’ve read), and the feeling of control is extremely important when you’re strapping your kids into a robot of sorts.
The safety system must:
- Provide a feeling of security
- Allow the parent to stop the stroller remotely
- Stop the stroller with no manual intervention in an emergency
There are lots of solutions that come to mind, and many were shared on the Reddit thread:
- Hand straps (shackles, if you will) that simply chain the stroller to the parent.
- A somewhat less intrusive strap, magnetically attached, that removes power if disconnected
- A watch-dog timer type solution with a button that polls for parental presence.
- One or two Lawnmower-style grips that must be held onto and kept closed to maintain power
- RF Proximity detection
After reading through responses, lots of discussion, and considering the implications of each, wireless proximity detection seems like the only reasonable solution. The other solutions are so encumbering—and most easily defeatable— that they would be of limited utility.
Bluetooth LE offers a Proximity profile (PXP) that fits our requirements exactly, and to a lesser degree the Link Loss (LLS) profile. A small remote powered by a LiPo pouch battery will be paired to the main controller. The remote has a belt clip and single stop button for emergencies or just when done running. Because I have some NRF8001 chips on hand initial development will be done with this chipset, but the real design work is around the Bluetooth protocol itself.
The remote plugs into the stroller for both charging, pairing, and storage. Because of the number of easily-available parts, 5V is a convenient step-down voltage to power the logic & control rail. In this same vein, charging will be handled by a MCP7381. Providing a 5V rail also makes it possible to provide a charging port for a phone or tablet.
The connector and storage mechanism needs to be physically robust and sweat resistant. Electrically, three pins are required: a ground reference, charging voltage, and communication. The remote will house a one-wire eeprom. When the stroller senses the remote insertion by way of the one-wire bus going to a high level, it will ensure that its bluetooth MAC address is written to the eeprom. Upon removal the remote automatically pairs with this address, providing a simple, robust, and secure pairing process.
Physically, the connector will encompass about half the remote. Three spring-loaded pins (think pogo-pins) will be at the bottom of the slot. When the remote is inserted, the pins will make contact with pads on the end of the remote. Charging will only be enabled when voltage is sensed on the communications pin.