My wife Andrea, AKA Feorlen, had foot surgery a few weeks ago. Part of her recovery is to stay completely off her feet for about 6 weeks or so. She gets around the neighborhood and our apartment on a knee-scooter that keeps her healing foot up in the air and lets her push off with the other one. It has a very tight turning radius for moving close up to tables, shelves, furniture, etc.
One thing she asked of me to help her get around was to make her a simple sort of backup sensor so she wouldn’t bump her foot against something when she was moving around and not always able to see directly behind her.
So it was off to the drawing board and parts bin with me where I hacked away on a few ideas. Her requirements/specs were:
- Simple to use
- No wires hanging around to tangle on the scooter itself
- Audio-only. As cool as a visual “RADAR”-like display might be, it would be distracting to have to look at that while trying to navigate around.
- Hands-free operation. Manuevering the scooter around is a two-handed operation, so again we couldn’t have anything that took attention or hands away from driving.
- Simple to attach/detach from the scooter.
This kind of ruled out an iPhone or IOIO-board-based approach as cool as that might have been. Instead, I decided to use an plain old Arduino Diecimila board for the microcontroller with a MaxBotix EZ1 sonar module and a large piezo beeper from Radio Shack. There was some fiddling and dremel-ing of plastic and no small amount of cursing but I managed to squeeze it all into a project box. I drilled a few holes to pass cables through. The “front panel” consists of an On/Off toggle and a “Indoor/Outdoor” range mode switch.
Note the programming port up at the top, consisting of a male/female pair of USB ‘B’ components soldered back-to-back.
Soldering the connectors together was a bit fiddly but I don’t have to take the darn thing out of the box every time I want to flash an update onto it.
I had an old handlebar strap laying around in the parts box with racheting notches on it. That’s screwed onto the bottom of the box and wraps around the frame of the scooter quite nicely to hold it in place.
Ranging/distance data is acquired by using a Maxbotix LV-EZ1 sonar sensor.
The code from the SaucerBot project made a good starting point for the code here. Even though I’m using sonar and the SaucerBot uses SharpIR rangers, they’re both working on basically the same problem: Using analog sensors to rapidly keeping up with closing distances between themselves and nearby objects and alerting as necessary. For the Saucerbot this means not running off the edge of the table. For this project, it meant not running into things.
There was some tweaking and adjusting that needed to be made because Andrea’s foot hangs off the back of the scooter about 10-12″ ahead of where the back of the scooter is and about 8-12″ down from the “seat” of the scooter. This meant that there was really only one or two places I could mount the box and have a clear, unobstructed view behind.
Since this wasn’t for the robots or a hack to amuse myself with, I actually spent a lot of time talking to my end-user population about design and requirements
Working with the people that are going to use the things you make and letting them help shape the design can be pretty challenging because it can involve giving up on pre-conceptions, pet ideas, pet technologies and, well, basically control over the whole thing. And that’s just for a project with off-the-shelf parts that’s put together in a weekend or two. Add in a target price, budget and deadlines and assorted administrivia and it’s easy to see why user feedback and design sometimes gets the short end. For things that are actually going to be useful to people though, it’s critical.
After visiting the Curiosity exhibit @ The Exploratorium, I also paid a brief visit to my overall favorite exhibit, Shawn Lani‘s “Icy Bodies” . This is one of those very few things that, should I ever become suffused of enough cash to afford it and a place to put it, I would commission the artist to make one for me.
In brief, a tank of CO2 is attached to a freezer that makes small chunks of dry ice, these are then ejected onto a thin film of room-temperature water where they rapidly sublimate and outgas, scooting and jetting along the surface until they finally dissipate into the air. In the space of one exhibit you have active example of:
- Classic Newtonian “Pool table” physics as chunks clump, collide and bounce off the walls of the tank and each other.
- Sublimation (“It’s gonna go from a solid directly to gas…”)
- How comets form and move around in our Solar System.
- The Heliosphere and how the Sun’s radiation deflects interstellar gas and radiation around our Solar System.
- general fluid dynamics and other cool science .
It’s been about 7 or 8 years since I first saw this exhibit and it still captivates me. I can still stand in front of it for good 20 minutes or more at a stretch and just watch the bits of frozen CO2 zip around and interact with each other.
Anyway, if you’re ever in SF and get a chance to go to the Exploratorium, check it out.
I popped into to the Exploratorium last weekend(Yes, I’m lucky enough to live in San Francisco where I can say things like that ) to get a look at the Curiosity model they have there. They’ve been doing webcasts and Mars-related events for the past month or so since Curiosity landed on the 4th planet of our Solar System and last Sunday was the last day for the whole thing. Presented below, for your amusement, a small gallery of the best shots of the full-scale model of Curiosity that was part of the exhibit. I’ve inserted me in one of the last pictures for scale
After a hard evening of plane-spotting, I came back home to chez-’dillo and thought “Hmmm, I’m thirsty. Why yes, a glass of fizzy water would hit the spot.” So I got out one of the Costco-sized bottles of seltzer and started to open it when it started leaking from the top and spraying all over the place. I quickly moved it into the kitchen sink to pulled the cap off to let it do it’s thing. I didn’t think I’d shaken it up, but there it was. Until I took the cap off and then saw the problem. It had been filled all the way to the absolute top. To the point where there was this nice little dome of bubbling water across the top of the bottle which would, every few seconds, blow its top off when a nice large bubble of CO2 reached the top and popped. It was enough to throw little droplets around, but not enough to actually disrupt the surface tension of the water clinging to the inside lip of the bottle.
It was very cool example of surface tension, things in solution, etc.
Here are some of the better shots I took of this neat little display of fluid dynamics.
This is part of my building myself a “MockTurtle”-bot, AKA a DIY “TurtleBot“. I’ve already got the iRobot Create, and a netbook, and the Lucite disks for the deck, not to mention a bunch of sensors, servos and other bits, including a surplus Neato Piccolo Laser Distance Scanner(LDS). So, as much as I love the Willow Garage guys, I can’t see myself actually buying a full-on TurtleBot any time soon.
There’s a whole bunch of background about the Neato LDS that I’m going to skip for now(and possibly address in another post), partially because I want to show off my results right now but also because there’s lots of other (slightly dated but still useful) info out there about hacking the Neato XV11 Laser Distance Scanner(LDS), and getting data out of it.
My experience is a little different because I’m using a later model firmware than most of these guys, so there has been some drift in how you interpret the LDS protocol between versions 2.1, 2.4 and the 2.6 revision on my LDS. Mine is also mounted bare on top of an iRobot Create, not inside an XV11, so I also have to do things like PWM the LDS spinner motor myself, but their work certainly helped and was useful to crib off of while I dissected my LDS and the data coming out of it.
Some debugging and staring at hex dumps, some Python, a little more staring at hexdumps and then running the results through gnuplot gives me this:
This is pretty cluttered, but so is my workbench and the space around it. The scale is in millimeters. The long “dash” at 0, around 1200-1500 mm out is my skateboard sitting up against the table I’m working off of. I put it there because I wanted something relatively nearby for the laser to hit, which would make the other clump of points at around 90 degrees either me or my laptop.
The rest of it all, I’m not entirely sure. The laptop is probably the other long red streak there at around 90. This is still pretty rough, but I’ve processed out a lot of the noise and it’s the first set of data I’ve seen from the LDS that looked fairly believable. The next thing to do is to stick the robot in a large box or something and see if it accurately scans the walls around it. That image should look like a nice square.
The code that got me this far is up on my GitHub.
There’s a lot more to do here, but enough done already to know I’m heading in the right direction.
So here’s the LDS, hooked up to a BeagleBone board, mounted atop my iRobot Create. Yes, this is the same Create from a few years ago. Now a single laser scanner takes the place of 3-4 sonar sensors at about half the power draw. This whole assemblage will eventually be a Mock-TurtleBot. Building my own makes more sense for now because I’ve got an iRobot Create already and the LDS and pretty much just about everything short of the custom standoffs and deck plates. (My deck is a lucite disk I bought from TAP a few years back).
Here’s the ‘bot in its current configuration.
I can’t claim credit for this one, although I did put it together tonight and know it works. Bear with me for a minute here while I ‘splain.
So, I’ve been having a lot of fun over the past month or two with these little Bluetooth modules. They’re the actual SMD chip that goes in a lot of Bluetooth widgets, dongles, some cell phones, etc. that’s. Since this is JUST the component, this means no carrier or breakout board, just the raw chip. You need to dust off your SMD-by-hand skills, but since there are really only 4 connections needed, it’s not too hard. My iron, my soldering goggles, a steady hand and a little heatshrink was all it took for me to put that up there together.
One problem is that while they are 5V tolerant at VCC, the TX/RX lines are 3.3V only. Apply 5V and you’ll burn out the RX line as the TX line on the other end sends data to it at 5V. One solution is a voltage divider , but that can wind up looking a little messy and they’re annoying to calculate. Last night, while I was probing through the resistor bits box for the right value resistors to make another divider for another Arduino-and-breadboard type set up I was throwing together, my buddy Kamran, from TechShop, pointed out that this could actually be accomplished much more simply with just a diode and a 10K resistor.
Which is cleaner and still does the same thing as:
I think this is pretty cool, but then again, I’m still kind of an idiot when it comes to circuits, so maybe some of you out there have seen this before.
I went to the Post-GoogleIO AnDevCamp hackathon on the weekend of 6/29-7/1/12. I met up with a couple cool guys, Brian and Anand. Friday night we were casting about for ideas about what to do with ourselves for a weekend project and noticed that we were all interested in experimenting with NFC and there just happened to be a a couple Nexus 7 tablets floating around for those who wanted to hack on them. I’ve been meaning to get some sort of NFC capabilities rolled into Nyala for a while now and this seemed like it might make a good weekend project.
We plowed in and 30-ish hours later were able to demonstrate a prototype for an NFC-based access system that’s even simpler than Nyala. Now, logging onto a wireless network is as simple as tapping your NFC-enabled phone or tablet to a tag or reader.
Naming our new beast fell to me, so I decided to stick with the antelope theme and called it “Impala”. The judges at the Demo Night seemed pretty impressed too as we won two of the Vendor API awards and also got some positive comments about having written an app that used NFC in a non-shopping context.
So this is pretty cool. I continue to think that these sort of approaches for access are really the way to go for guest/temporary access to WLAN connections. The next step would be to “Beam” some data from the client device onto a server connected to some sort of 802.1X or RADIUS authentication, then we could start using NFC for 2-factor auth and all sorts of other really cool stuff.
Since this was written by a team and not just me, the status of the source for this project is a bit up in the air but if we can agree to Open Source it, I’ll definitely post it here and/or on my GitHub. Anyway, let me know what you think.
I was flying back through IAD yesterday and grumbling over the fact that I was stuck with a tight connection that everybody seemed to want to shave 5 minutes off of(10 minutes waiting for our gate to clear. 5 minutes waiting for gate-checked bags, 8 minutes ’till the next shuttle bus) when I noticed something out of the big windows on the IAD “moon bus” that I was on.
An Air France A-380 had just pushed back a few minutes ago and was in the alley between B and C/D terminals waiting for traffic to clear.
A good plane geek always has his camera ready. A good plane geek doesn’t grouse or complain about where he is as long as he’s at an airport.
I finally got around to actually doing something with my Market (sorry “Play”) account this weekend and uploaded Nyala to it.
Getting the app up there was a bit annoying. It kept getting rejected when the Play uploader got to the AndroidManifest.xml file. I ended up having to change a lot of @string references to their static equivalents to resolve that, but Eclipse and the Developer Console were both supremely unhelpful in pointing out exactly what I was doing wrong.
I finally had to just start outright changing things, mostly at random, just to see if I could figure out what it was. Anyway, it’s up there now, so go download it. Even though you probably already snagged it from my GitHub or you got it from me at some other meetup, workshop, con, etc. It will increase my install base on the Play Store and thereby salve my attention-and-validation-starved ego.
Back in January I got a message from Jen McCabe, a former hackathon colleague, saying that she’d moved to Vegas to work for a small robotic startup. Could I help them out ? Maybe consult a bit ? Show them some of the robots I’ve built ?
This happened right about the time I was getting ready to head out the door for the Wireless Sensor Workshop at ICTP . So I sent her a couple links to my robot projects pages here and YouTube, apologized I couldn’t be more help and headed out.
Fast forward about month or so to early March and I found myself again on a plane, only this time heading to LAS for a weekend hacking invitational at the expansive World Headquarters of Romotive, Inc.
It seems that in the time I was gone, I managed to completely blow them away with the FanBot, enough that they put it on their “How to get hired by us” page.
Clearly this flattery could not stand. I mean, we’re talking about drawing a line in front of The Sands here. So a few more email messages fly back and forth between us and it quickly becomes obvious: I’m going to have to go there. Another quick volley of email to make sure they’re not going to freak out if I show up on their doorstep and it’s all set. Me, Romotive, the FanBot, hacking, Vegas, “What could possibly go wrong!?!?”
Now to get a small, fragile robot with lots of wires and bits hanging about past the TSA and gorilla baggage handlers in one piece(and back!). I Amazon-ed up a Pelican case, Feorlen cut block foam for just the occasion and I headed off to the desert FanBot-in-tow for a weekend of robots and who knows what else.
Las Vegas - The Ultimate unreality
Vegas is, well, it’s Vegas. It’s one of those patches of unreality that can only be described tautologically. It is its own ur-self, a place where the remaining 6 dimensions of our universe, which are normally too twisted and strange to be anything other that curled up on themselves down at the Planck scale, uncurl into slabs of glowing, glittering unreality bounded by rigidly defined tracts of dark matter. And in the middle of this Heisen-scape of sin and shiny and shimmering heatwaves, there is a robot company.
I got off the plane to find a text message from Bobby telling me to meet him in the passenger pick-up area outside the terminal, on the other side of the taxi/limo/van area. Hundreds of people queue up behind these gates until they’re crowding back into the main terminal between the baggage carousels. Then a traffic director opens the gate at opposite sides of the curb and this wall of people streams across the road to the other side where the gate closes right behind you and it seemed all rather reminiscent of the scene from “Metropolis” with the crowds of workers piling into and out of the factory elevators .
So I get there to the other side and hang out for a few minutes by the curb when a white Jetta pulls up and kind of a woodsman-surfer-looking like dude gets out and holds up a sign with a Picture of Romo on it and a hand-scrawled “@jetdillo” pasted onto it. It’s Bobby. I wave at him, he waves back, pops the trunk and we stuff the ‘bot in the back and me in front. Bobby hands me a cable going into the dash of the car. I know what to do with this and reflexively plug it into my phone. “Teleport Massive” by Bass Nectar begins to boom out of the speakers as we pull away from the curb and out into the Vegas night towards the Ogden where Romotive is currently located.
The FanBot and I find ourselves welcomed and made to feel at home almost right away. I meet Keller, the CEO, Phu, one of the other co-founders and iOS devs, James and Oscar, canine-in-residence.
I had barely put my backpack down, before we started playing with robots. I got the FanBot out and let it run around on the table. The battery was completely topped up and it’s minus the brakes these days, so it got away quite a bit and everybody had fun simultaneously watching it yet ready to catch it if it tried to dive off the edge of the table.
On every other flat surface in the apartment, there are robot parts. Boxes from Pololu and other suppliers litter the floor and there are 4 foot-tall bags of packing peanuts down the hallway. This is what your apartment winds up looking like when your Kickstarter project succeeds beyond your wildest expectations.
Robot parts wait to be assembled into Romos
MOAR ROBOT PARTZ!
Fresh off the plane and already feeling at home, the FanBot chillaxes at Romotive HQ
Hmmm…what’s that there ? A Sparkfun robot claw ? And a Romo robot ? Clearly we must get these things together. The hardware team was mostly out that weekend so it was up to me and Phu to figure out how to hook this up to the Romo AUX ports. A slight case of blue smoke and a minor fire later, we learned that we weren’t going to be able to pull the elephant-sized servo through the garden hose that was the AUX port’s FET. Oh well, there are still two ports left
I tied them together with a bit of cable hackery and this time was rewarded with:
By the time I got all that working, it was late and everybody pretty much was about ready to pass out. So I basically went to the room they had graciously allotted me and fell over. The next morning, I woke up and it was time for, yes, you guessed it: MOAR ROBOTZZZZ!!!
No more batteries, no more beer and even the hot sauce is getting a bit low..We now conclude our hacking day...
Like all weekends in Vegas, it’s hard to recall everything that went on. I remember robots, little sleep, lots of coffee & late-night hacking, some late-night debauchery with my hosts and fellow humans and generally the fact that I got to spend a whole weekend with a bunch of nerds who decided that the world doesn’t have enough robots in it and that they should do something about that. They spoiled the crap out of me by giving me my own place while I was there and fed me far better than I was expecting. I mean, I was figuring that I’d roll into a coffee shop I came across down the street and getting whatever the $5.99 special was, but they busted out this gourmet stuff on me.
Part of this can be explained by the (still) over all cheapness of the real estate market, esp. in comparison to what it was back in 2006/2007. Jen, my initial contact into Romotive, explained that another part of the story is the economics of Costco and the fact that she, quantifier that she is, bases their grocery runs on a calorie budget instead of strictly what’s cheapest, so they tend to eat A. cheap, B. good and C. relatively healthy without a lot of crap, even on a startup budget. Very smart!
Most of one day was devoted to hacking and soldering and debugging. Another was a build-and-ship day. I got to build my own Romo that I’d ordered off their site and take him home with me. Then, having a surfeit of robot parts and lots of orders to fill, they let me build a bunch more. So, if you got your Romo sometime in March or April, it’s possible that it might have been built by yours truly.
Shipping boxes lined up, all ready to receive robots
"Let's ship robots!!": A bagful of robotic Luuuuuuuuv heads off to the Post Office.
Too soon, the weekend was over and it was time to head back home. Back in the Pelican went the FanBot, my new Clear plastic Romo went in my backpack and I was on my way back to McCarran courtesy of Bobby’s Airport Shuttle and Robot Building Service.
Set against the early morning Vegas skyline, the CRJ back to SF looks like a toy. Is there any time that this place actually looks *REAL* ?
So, why have I become so taken with such a comparatively simple robot that, honestly, is actually more like a remote-controlled car than what we tend to think of as a robot ?
I think I like Romo for the same way the I originally fell for the iRobot Create. It’s a defined thing that is perfectly good at being what it is and we need that. It takes people other than the hardcore geeks to put shells on things and make them presentable and even desirable to normal humans. I have sometimes grumped, in a moment of superiority, that the entire public, commercial Internet could dry up and blow away and I would still be able to find a job in my field because I had no shortage of work BEFORE the mid-’90s expansion. But the world and indeed, I, would generally be a much poorer place than it is now. There would be far fewer cool things to play with, people to talk to and thing to experience.
Romo the vehicle doesn’t have to have all the brains because the phone you strap onto it already has it. The phone has most/all of the sensors you’d put on a robot anyways and it has network access plus a GHz-speed CPU, memory, GPS, a camera, etc.
Romo has everything he needs, even if there aren’t GPIOs sticking out all over the place. The tagline from “Ghost in the Shell” is ‘It has a voice, now it just needs a body’. Well, Romo IS a body…