Sawppy Field Repair Kit: Backup Electronics

About a month ago Mars rover Curiosity’s computer system had a hiccup and reset itself, causing its management team here on Earth to switch to its alternate computer. These two computers – referred to as Side-A and Side-B, allow Curiosity to run on one while mission team diagnoses the other. Initial reports indicate a problem with Curiosity computer’s on board data storage systems.

My rover Sawppy is modeled after Curiosity, and it’s only be a matter of time before Sawppy emulates its big brother with a data storage problem too – the microSD card on a Raspberry Pi 3 computer is a notorious point of failure. But Sawppy doesn’t have a redundant computer system on board that can be switched remotely. Since I’m typically not far away, I can walk up to my rover and perform replacement manually.

But I could only walk up and replace it if I had a replacement handy! This is growing in importance as Sawppy started getting booked for public appearances. When it’s just a hobbyist project it’s not a big deal if Sawppy encounters a problem, I just pack it up until I can get home to my workbench. But if we’re starting to get into situations where Sawppy is actually a featured item, we need to know how to make sure The Show Must Go On.

Thus the latest addition to Sawppy’s field repair (“first aid”) kit: Highest priority is a copy of Sawppy’s microSD card already configured with all necessary software. A microSD card is very small and light, so there’s no excuse not to have one always on hand.

Lower priority, for times when there’s space to spare, is a backup Raspberry Pi 3.

And lowest priority is a LewanSoul servo USB to half-duplex translation board required to operate LewanSoul servos. And while I’m at it, pack a replacement servo as well!

Sawppy backup electronics

Sawppy Flag Pole Now Mounted Magnetically

One of the problems I didn’t foresee in designing Sawppy was that some children might see a fun challenge in doing running jumps over my rover. I first saw this unwelcome behavior when I brought Sawppy to Long Beach, and I knew it’d only be a matter of time before a child would misjudge their jump and smash Sawppy into a pile of broken rover pieces.

Clearly I need to find some way to discourage this behavior, but I also can’t do anything that physically harms misbehaving children. This eliminates straightforward solutions such as a Samurai blade pointing straight up. I would also like this countermeasure to be stealthy and not call attention to its anti-jump purpose otherwise some would see it as a challenge.

The answer came while preparing for this year’s Southern California Linux Expo (SCaLE 17x). I was scheduled to host the Hackaday x Tindie Birds of a Feather meetup, and I was also slated to co-present a talk with Lan Dang. For publicity purposes I decided Sawppy can be a rolling billboard, as SCaLE is exactly the right audience of people who would pay attention to a 3D-printed rover running about. I pulled out a yardstick I had on hand and started planning how to use it as a flag pole, and I immediately knew I had my anti-jumpover countermeasure as well. Two birds, one stone.

Sawppy Scale 17x Sat 1 - Roving billboard

As previously mentioned, I didn’t want this flag pole to be too rigidly attached. If someone bumps my sign, or if someone decides to try jumping over my rover anyway, the flag pole must break away cleanly without damaging the person or the rover. For SCaLE I used a zip tie that was arranged so there is tension holding the yardstick flag pole in place, but pops free when stressed.

This mostly worked, but as it was built on a balance of opposing forces, it was finicky to reinstall. At Caltech Science for March, a curious toddler yanked off the flag pole and the toddler’s supervising elderly adult tried to reinstall the pole. But grandpa had no idea what he was doing, blindly stabbing inside Sawppy’s equipment bay with the yardstick applying more force as he grew more agitated. After two attempts at saying “Don’t worry, I’ll put it back myself” while I watched in horror at Sawppy electronics getting pummeled, I forcibly grabbed the yardstick from his hands in order to save Sawppy from being stabbed to death.

A better solution must be found.

In preparation for Sawppy’s appearance at Yuri’s Night, I decided to try a magnetic mounting system. Originally rejected because I thought it wouldn’t be strong enough, I thought it was worth a second look. I had a stack of these powerful little magnets and a single pair wasn’t able to hold the pole. But four pairs of them might be strong enough for the task.

For this test, four magnets were held on to chassis beam via packing tape. Two on upper beam, two lower.

Sawppy magnetic flag mount

Matching sets were held to yard stick flag pole with more tape.

Sawppy magnetic flag mount with pole

With updated camera mast and flag pole mount, Sawppy was ready for its next public appearance at Yuri’s Night Los Angeles! That event got crowded at times and there were a few accidental bumps that triggered a clean separation followed by quick re-installation. And while this adult-focused event had few children about, there were plenty of drunken misbehaving adults. The flagpole did not discourage all misguided behavior, but it has worked well enough to become a permanent fixture of my future Sawppy public appearances.

Sawppy with new camera and flag pole

(Cross-posted to

Sawppy Mount For Kinect V1

When Sawppy first started running around, I wanted something to sit atop a camera mast where the real rover has a camera and sensor array. It is the anthropomorphic head of the rover and it looks slightly wrong without one. (Like a chicken running around without its head.) The first iteration of camera mast sensor array enlisted a standard USB webcam sitting alongside a Google AIY Vision kit. It was mostly for appearance because there wasn’t much software behind it.

The webcam was fun for entertaining children and occasional longer distance driving, but not immediately useful for autonomy. The AIY Vision box is optimized for classification tasks. I thought there might exist code useful for robotic visual localization but if it’s out there I have yet to find it.

The most promising tool at hand for rover localization is my Kinect sensor bar running RTAB-Map or some similar software. So Sawppy will inch towards autonomy by getting a camera mast upgrade to my Kinect V1 sensor bar and see if we can integrate that into rover systems in a useful way.

I went looking for a good way to mount a Kinect bar to Sawppy. I disassembled its base looking for a good mounting mechanism, but there weren’t convenient existing fasteners for me to use and there weren’t good places for me to drill and tap new ones. It was surprisingly crowded in there! I knew there was a motor for up/down tilt but I underestimated size of the motor gearbox inside.

Kinect v1 base disassembled

I then reassembled the base and went with plan B: a simple flat platform for attaching my Kinect sensor bar with double-sided foam tape.

Printing Sawppy Kinect v1 platform

Kinect sits slightly offset camera mast center for two reasons.

  1. The Kinect sensor bar is very wide and if mounted centrally it overhangs to the right. I worry about it hitting obstacles so I wanted to bring it closer to the middle.
  2. By offsetting sideways, I could expose the top of the pipe used as camera mast and run Kinect’s wire down the middle for cleaner wire management.

Sawppy Kinect v1 installed on platform

At the moment this Kinect is no more functional for autonomy than the previous configuration… in fact, for its first public appearance at Yuri’s Night 2019 it is not even electrically connected to anything. It’s just a matter of taking one step at a time.

(Cross-posted to

Sawppy at Yuri’s Night LA 2019

Yesterday Sawppy attended Yuri’s Night Los Angeles 2019 as a roaming exhibit to help entertain the audience who all have an enthusiasm for space and science. As part of the volunteer event staff, we had to arrive at event venue California Science Center an hour ahead to get checked in. I noticed the signs and logos actually combined the second and third words into “California ScienCenter” but it’s not clear if this is just a bit of artistic license in graphic design or if they’re actually working to rename themselves.

Yuris Night 2019 01 - Sawppy arrives at California ScienCenter

Once checked-in, Sawppy’s assignment was to roam and entertain guests waiting in line to enter.

Yuris Night 2019 02 - Sawppy mingles with entrance line

Sawppy was not the only robotic entertainment present.

Yuris Night 2019 03 - Sawppy and R2-D2

Sawppy was occasionally stopped in its tracks when challenged by an Imperial AT-AT.

Yuris Night 2019 04 - Sawppy and AT-AT

I was surprised to learn this was sold as a popcorn bucket sold at Disneyland. The owner gave it additional surface treatment and added LEDs, but he said almost all of the physical detail (including legs that could be posed) were part of the original bucket. Sadly, it was not motorized and did not walk.

Once people in line got in and the front entrance crowd thinned out, Sawppy went visiting other front entrance displays. Largest by far was Mister Fusion, which I first saw on TV in the first episode opening of Amazon’s The Grand Tour. There, and also on its web page, it was advertising for iHeartRadio. It is now advertisement for a mixed-use development project in Las Vegas called Area 15. The sales pitch for this “experiential retail and entertainment complex” sounded interesting, once it opens it might be worth a stop on my next Vegas visit.

Yuris Night 2019 05 - Sawppy and Mister Fusion

Model of real Earth probe sent to space meets model of fictional Martian probe sent to Earth: Sawppy and a very shiny UFO.

Yuris Night 2019 06 - Sawppy and UFO

At one point there was discussion of a display of Star Wars cars, which was the context of how I originally got involved with my RXBB8. That was removed from the plan at some point, but Sci-Fi cars still had representation with one of the Back to the Future DeLorean replicas.

Yuris Night 2019 07 - Sawppy and DeLorean

Main space for this event was in the Space Shuttle Endeavour room, where photography was difficult but I wanted a picture of Sawppy with a real spacecraft.

Yuris Night 2019 08 - Sawppy and Endeavour

Lots of people loved Sawppy and asked many interesting questions about Mars rovers. The event had everyone from “I don’t know much about the Mars rovers but I want to hear about them” to JPL engineers who are actively working on building the Mars 2020 rover. My discussion topics with people fluctuated wildly to suit.

At the end of the night, guests for the event were directed through the kelp forest tunnel to exit.

Yuris Night 2019 09 - Sawppy in Kelp Forest

After a full night hanging out with other space fans, Sawppy headed home.

Yuris Night 2019 10 - Sawppy Heads Home

Instructions Posted For Running SGVHAK Rover Software on Sawppy Rover

I had always intended for Sawppy to be an adventure in building autonomous robots, but the Sawppy hardware I built and declared version 1.0 needed software of some sort in order to get up and running. Since I had code for SGVHAK Rover handy, I adapted it to control Sawppy as well. Both rover models had six wheel drive and four wheel steering resulting in large overlaps of functionality. I only had to write adapter code for it to communicate with Sawppy’s LewanSoul serial bus servos instead of SGVHAK Rover’s RoboClaw motor controllers.

At the time I was overly optimistic about how quickly I could get new software up and running on Sawppy. I didn’t climb the learning curve for ROS nearly as fast as I had hoped, requiring detours along the way to build learning robots like Phoebe. In the meantime Sawppy continued running on this “interim” software that threatens to become the permanent software with each passing day.

A symptom of optimism was my decision to not write very much documentation helping other Sawppy builders adapt SGVHAK rover software to run on their own rover. I thought I would have new software soon so why bother? At first this was not a problem – first three Sawppy builds I’m aware of were built by people who made modifications and used their own methods of rover control. (Two are writing their own software, the third was modified for standard remote control.)

But now I’m starting to receive queries from people who want to run SGVHAK rover code on their Sawppy rovers as well. While a talented few have been able to find their own way just by examining my Github repositories, it’s not very friendly to tell people “Go look at the code and figure it out.” I need to put in the time to write instructions for putting SGVHAK Rover software on Sawppy.

I’m happy to announce that this work is now complete and posted up on Sawppy’s build documentation repository. It walks through assigning unique IDs to LewanSoul serial bus servos, to which configuration files to edit, and which configuration files to just completely overwrite. I hope this will help more Sawppy builders get their rover up and running!


(Cross-posted to

Sawppy Documentation Updates

It’s been a few months since I declared Sawppy version 1.0 complete and documented. A project like this is never done and there’s always more to do, but I had reached a good milestone in mechanical design supported by “good enough” electronics driven by software borrowed from another rover project. I released it open source to the world, curious what would happen next.

backyard sawppy 1600

I was very happy to see people go beyond just talking about building their own Sawppy, and have gone ahead and actually done so. In the course of their builds, people have reached out to me with questions about the information I’ve published, which I welcome. It’s always good to have extra sets of eyes to look over what I’ve written. Sawppy documentation is my best effort, but it’s very easy for me to overlook gaps in information because it’s all in my head and my brain doesn’t necessarily notice when something crucial is missing. Having other people try it out and letting me know of their experience is the best real world test, and I add clarifications in response.

And this past week the Sawppy project documentation crossed another threshold: its first external contribution pull request! I really appreciate the work of [TechMav75]. Not just point out gaps in my documentation, but actually rolling up sleeves and helping to patch those gaps based on their experience building a Sawppy. Thank you!

As for software, SGVHAK Rover’s adapted software was always intended as a placeholder, not the long term software solution for Sawppy. Indeed the first three Sawppy builds I’m aware of didn’t use that software, either. Two builders have written their own rover software, and a third has wired up their Sawppy for standard remote control. Nevertheless, some Sawppy builders want to use what works today so I should put in the time to write more detailed instructions on how to adapt that code to drive Sawppy. In the immediate present, user feedback has alerted me to an embarrassing bug that I’ve since fixed. It’s not my first public embarrassment, it won’t be the last.

Thank you everyone who has shown interest in my project. Constructive feedback and questions are always welcome, use whichever venue you are most comfortable with:

  • I encourage asking questions in public so my public answer will be useful to others as well. Go to Sawppy’s page, click on “Discussion“, and add your comment.
  • If you rather not comment in public, you can send me a private message. From Sawppy’s page, click on my name up top to reach my profile, and click “Send a private message”.
  • File an issue on Sawppy’s Github repository.
  • And finally, my favorite: not just file an issue, but also send me your proposed solution via a pull request! Let’s work together to make Sawppy better.

(Cross-posted to

Sawppy Field Repair: Servo Coupler

Every time I encounter problems at a public Sawppy appearance, it is a lesson. It might be a lesson in how I might be able to improve Sawppy’s design, or it might be a lesson in how to better prepare a kit for field repairs a.k.a. Sawppy First Aid Kit. When a fuse burnt out at Caltech Science for March 2019, that was easy to address: add replacement fuses to the kit.

The broken servo coupler encountered at SCaLE 17x was a little tougher. It wasn’t enough to keep an extra 3D-printed coupler handy, because a little block of plastic isn’t very useful by itself. It requires a heat set insert to accommodate a set screw holding against an 8mm shaft, and it requires four more screws to fasten against the servo horn. Fiddling with a lot of tiny screws would not be very practical when trying to make field repairs away from my workbench. This is especially true when I have a literal ‘field’ to deal with: on grassy grounds where a lost screw is very difficult to recover.

Sawppy servo coupler FRU

The answer to minimizing chance of lost screw is to prepare a replacement assembly consisting of:

  • 3D-printed coupler
  • Heat-set insert already installed.
  • Set screw already installed inside the heat-set insert.
  • Servo horn that comes with a serial bus servo.
  • 4 small screws already fastening the coupler to the servo horn.

With such an assembly ready to go, the only fastener I risk losing during replacement is the screw holding the servo horn to the servo output spline.

The first downside of this approach is that I only have as many servo horns as serial bus servos. Keeping a replacement unit ready in Sawppy’s field repair kit means I have an extra serial bus servo with no horn to use it. Perhaps I could purchase extra servo horns, or maybe this is just a hint I should also have an extra replacement servo in the bag.

The second downside of this approach is that, in case of steering couplers, a replacement would not be identical. Steering trim would be slightly different with a replacement coupler due to natural variation from unit to unit. When I perform this replacement, I would also have to adjust Sawppy’s steering trim for proper operation. But in an emergency? It’ll probably be close enough.

(Cross-posted to

Sawppy at Caltech Science for March 2019

Today Sawppy joined the fun at Science for March 2019, organized by the Caltech Postdoc Association. Since Sawppy didn’t exist yet during 2018’s event, this was Sawppy’s first visit. When Sawppy arrived at South Campus Gate, a quick check of campus directory oriented us to Beckman Mall where the event will be held.

Caltech Science for March 2019 - Sawppy at Campus Directory

Part of the journey included crossing picturesque Millikan Pond.

Caltech Science for March 2019 - Sawppy to cross Millikan bridge

As with last year’s event, the rover started the day sitting on a table for display. Of course, last year we had only a single rover. This year we have three, two of which were in running condition and could be driven for demonstration today.

Caltech Science for March 2019 - Rovers on SGVHAK table

Sawppy attracted a crowd as it usually does, and were driven around by enthusiastic children. Some of them weren’t as gentle with the control as they should be, and about halfway through the day, operator roughness by one of the kids burned out the fuse. I kept telling myself I should have spare fuses in Sawppy’s first aid kit that I keep in my backpack, but I never did put one in. I had to hack a workaround today but by the end of the night I definitely remembered to put extra fuses in the bag.

Caltech Science for March 2019 - Sawppy with burnt fuse

Group rover outings are always fun. Today’s special activity is a group climb on a grassy slope at the north end of Beckmann Hall. SGVHAK rover gave Sawppy a head start, but with faster and more power motors, combined with better traction tires, it was no contest. SGVHAK easily outclimbed Sawppy, but the important part was that we pleased the crowd with this little demonstration of rover climbing capabilities.

Caltech Science for March 2019 - Sawppy and SGVHAK Rover climbing

(Cross-posted to

Sawppy and SGVHAK Rover Will Be At Caltech Science for March

Shortly after SGVHAK Rover was completed last March, it also made an appearance at California Institute of Technology’s Science for March event organized by the Caltech Postdoc Association. The rover was well received and we’re going to do it again for this year’s event taking place tomorrow. This event is free and you can register here.

Rover Brick Demo

We were but young rover herders at last year’s appearance, and there were some durability issues that we think we’ve addressed. I’ve taken some of those lessons to heart with my own Sawppy rover, which was only a dream at last year’s event but this year will be one of several rovers joining in the festivities.

During our outing at the Downtown Los Angeles (DTLA) Mini Maker Faire, we saw familiar faces from our local friends at Caltech and also nearby Pasadena City College (PCC) and we hope to see them again this year.

The weather forecast is sunny and clear, it should be a good time!

Sawppy Wiring Schematic Tests Drive Digi-Key Scheme-It

When I declared Sawppy the Rover has reached version 1.0 and posted instructions online, I was fully aware of the fact that the instructions would be incomplete. Not out of neglect or malice, but out of the fact all of Sawppy is in my head and there will be places where I decided something was obvious enough not to require documentation – and learn I was wrong in that judgement.

Such is the case now. One member of RSSC accepted my invitation to build a Sawppy after my presentation in January, and submitted the feedback that I need to post a schematic of how I’ve wired up Sawppy. I previously submitted this answer as response to a comment on the project page, but more detail was needed.

The minimum electronics components for a bare-bones Sawppy has [10 * LewanSoul LX-16A] wired in parallel with each other and to [1 * LewanSoul “BusLinker” a.k.a. “Debug Board”] to translate generic USB serial to servo half-duplex serial. That translator board is connected to [1 * Raspberry Pi] via USB.

I thought this was a good opportunity to try Scheme-It from Digit-Key. It is a web-based electronics schematic editor that purports to let people quickly sketch up electronics schematics for sharing. The electrical wiring for a bare-bones Sawppy version 1.0 should be a nice easy exercise for this tool.

The terms and conditions for using Scheme-It is fairly typical for a web-based application. A Digi-Key account is required for login, something I already had from earlier purchases for electronics experiments. In exchange for free use of the software, a user also has to grant Digit-Key a license to the schematic. Not a big deal in this case, as I wanted Sawppy to be shared as widely as possible. And finally, Digi-Key reserves the right to take down this service at any time, deleting all of my data. This is irritating but not unexpected. If this is important to me I better make a copy for my own storage.

Since my sample schematic is fairly simple, it only took about an hour to go from absolute beginner to the schematic I wanted to create. I could (and did) choose to share the project file publicly via a URL, though it appears accessing the project requires logging in to Scheme-It, which required a Digi-Key account as previously mentioned. I could also export to PDF or PNG formats. The PDF export feature was unsatisfactory. Many labels were moved out-of-place making the schematic illegible. In contrast the PNG export looks OK so I’ve posted this schematic PNG to Sawppy’s project page, as well as Sawppy’s assembly instructions hosted on Github.

Sawppy V1 Schematic

(Cross-posted to

Sawppy at SCaLE 17x: The Trouble with Rovers

My primary obligation for Southern California Linux Expo (SCaLE 17x) was to co-present The Trouble with Rovers with Lan Dang on Saturday afternoon. Which meant when Sawppy’s coupler broke Friday evening I had to scramble to fix it for Saturday. A rush repair job is always going to leave some details to be desired but it was sufficient to resume operation.

Sawppy will obviously be one of the visual aids present at our talk, but that doesn’t mean it gets to spend the rest of the day just sitting around. No sir, as soon as Sawppy arrived on location, it immediately started working as a roving billboard for both itself and the talk.

Sawppy Scale 17x Sat 1 - Roving billboard

It was not explicitly coordinated beforehand, but the SGVHAK rover was also equipped with advertising for our talk. Both of our rovers were out and about, pulling roving billboard duty, and occasionally our paths crossed in the hallways of SCaLE.

Sawppy Scale 17x Sat 2 - Two roving billboards

I was happy with the turnout for our rover session. While we did lose a few people who left partway through the talk, it was more than made up for by the enthusiastic people who followed along and came up to ask questions after. I had a lot of fun explaining details on what we did for both rovers, minutiae that we trimmed from the talk proper but was still interesting to our smaller and more technical audience afterwards.

Sawppy Scale 17x Sat 3 - Session

Sawppy continued to roam around Pasadena Convention Center, spreading word of my rover project to people who are excited about the possibility of building their own. Some people thought it would be their motivation to finally buy their own 3D printer, others have all the tools on hand and it’s just a matter of prioritization and finding project time. I was most gratified by a group of students from California State University San Bernardino who thinks it would be a great group project. They are exactly the target audience!

And it’s fun as always to see young children’s faces light up when they see Sawppy, some of whom were eager to take control. My favorite was this 6-year old who loved to drive Sawppy over his own toes over and over.

Sawppy Scale 17x Sat 4 - Self foot runover

(Cross-posted to

Cracked Sawppy Steering Coupler Almost Survives Full Day of SCaLE 17x

Before I took Sawppy to its first day of SCaLE 17x, I checked over all mechanical bits and found a cracked steering coupler. My first instinct was to repair my rover by replacing the coupler, but I decided against it because it was still partially functional. I wanted to see how my rover design behaves with some partially broken parts, find out how tolerant of faults it would be.

The answer is: surprisingly well! When everything is in newly assembled condition, the steering assembly could keep its wheel steering angle within a few degrees of the desired position. There is still some error due to flex in the PETG plastic through all component interfaces leading from the servo’s output shaft, through the coupler, through the 8mm steering shaft, through the steering knuckle, through the wheel bearing, the bearing axle, and finally the wheel itself.

With a cracked steering coupler, the steering assembly could still hold angle within about a 20 degree range, or +/- 10 degrees of the desired position. This isn’t great, but like its Mars inspirations, Sawppy was able to keep running with a damaged wheel. I was able to do the usual crowd-pleasing demonstrations running over backpacks and feet. While steering was a bit wobbly, Sawppy has five other wheels to compensate and maintain most of its steering authority.

I thought I’d just continue running the rover until something finally gave. And it did, just not the way I expected. Instead of a gradual degradation in rover operation, what finally killed the coupler was a child. About 6-8 years in age, the boy grabbed the steering wheel assembly in both hands and twisted hard. I heard a loud POP and that was the end of the coupler. The boy knew he was going to be in trouble and ran off, the associated adult was apologetic, but that doesn’t change the fact I now have a broken rover.

Here’s a picture from yesterday, with a partially failed coupler:

Sawppy cracked PETG coupler closeup

After abuse by careless child, here’s a fully failed coupler:

Sawppy failed PETG coupler closeup

Yesterday the coupler was cracked below the set screw. Now the crack goes all the way to the top and there’s no longer enough force to hold the heat-set insert in place. Once the heat-set insert popped out of place, its set screw no longer has leverage to grip the detent I cut on the steering shaft. A steering shaft that spins nearly freely makes Sawppy very hard to drive. I was able to move a little bit at the Tindie x Hackaday Birds of a Feather Session, but Sawppy could not perform its usual rover capability demonstrations at the meetup.

Sawppy Steering Coupler Volunteers For Fault Tolerance Test

Whenever I’m getting Sawppy ready for a public appearance, I power up my rover and drive it around a bit to make sure all the mechanical bits are functioning. I did the same for preparation for Sawppy’s appearance at SCaLE 17x and I saw the right front wheel – historically the most problematic part of any rover – is wobblier than I expected.

This usually indicates a set screw is backing out, something that was much reduced after I started using Loctite on the set screws. But when I reached towards the coupler with a wrench to turn the set screw, I realized this situation is different. The PETG plastic for the coupler has cracked.

Sawppy cracked PETG coupler closeup

For context, here’s the non-cropped version of the image to show location of this coupler in Sawppy’s front right wheel assembly.

Sawppy cracked PETG coupler

This is a new failure! And a bit of a surprise, too. My experience with PETG to date has been that it is very tough and willing to flex instead of break like my experience with PLA. It’s held up well through multiple public appearances, driven by enthusiastic children who were none too gentle with the rover. It appears we have finally reached the breaking point for PETG.

Or… have we?

The rover is still driving and nominally functioning. System performance has degraded but strictly speaking, the system has not yet failed. The crack allowed more movement in wheel steering than designed, but the movement is still constrained instead of turning freely out of control. I would call the latter case, which happened to Sawppy earlier, an actual failure. This isn’t quite it.

And now I’m curious about what potential stages of system degradation will be, so I’m going to leave the cracked coupler in place for now. I will build a replacement and have it on hand for a field repair, but the cracked coupler has just volunteered itself for a test of Sawppy fault tolerance. How much further can Sawppy go on a cracked coupler?

(Cross-posted to

Sawppy and SGVHAK Rover will be at SCaLE 17x

This year’s Southern California Linux Expo (SCaLE 17x) begins today. Four days of talks across multiple tracks focusing on topics relating to the flagship open source operating system in various ways. From small micro controllers to large cloud infrastructure. Last year’s SCaLE served as deadline and motivation for completing SGVHAK Rover, but it was only for purposes of show and tell. We couldn’t yet do a full presentation as the JPL Open Source Rover project has yet to officially launch until mid year.

But that is no longer a concern, and we even have spinoff projects like my Sawppy rover to add to the mix. Hence Sawppy will be part of our SGVHAK presentation “The Trouble with Rovers“: they’re never really finished, and their numbers keep growing. Rovers are such cool projects to work on there’s always more upgrades and evolution we can perform to make our rovers better. Lan and I practiced this talk at last month’s SGVLUG meetup and hopefully our presentation will be better for it! We’ll be presenting Saturday afternoon 4:30-5:30pm in Ballroom G.

20190214 Rovers at SGVLUG

Sawppy will also be present at the Tindie+Hackaday Bring-a-Hack meetup, under their “Birds of a Feather” event umbrella for groups to get a space and meet. It is a free event (with at least a SCaLE Expo Pass) and Sawppy will be there as representative of one of the projects with a page on This will take place Friday evening 7pm-8pm in Ballroom B.

Beyond those events, Sawppy will be generally hanging out and cruising about the event and the expo floor. There’ll probably be some time spent at the SGVLUG/SGVHAK booth, but no official scheduled events beyond the two above.

(Cross-posted to

SGVHAK Rover, Sawppy, and Phoebe at SGVLUG February 2019 Meeting

At the February 2019 meet for San Gabriel Valley Linux User’s Group (SGVLUG), Lan and I presented the story of rover building in our hardware hackers spinoff group a.k.a. SGVHAK. This is a practice run for our presentation at Southern California Linux Expo (SCaLE) in March. Naturally, the rovers themselves had to be present as visual aids.

20190214 Rovers at SGVLUG

We started the story in January 2018, when Lan gathered the SGVHAK group to serve as beta testers for Jet Propulsion Laboratory’s Open Source Rover project. Then we went through our construction process, which was greatly motivated by our desire to have SGVHAK rover up and running at least year’s SCaLE. Having a rover at SCaLE was not the end, it was only the beginning. I started building my own rover Sawppy, and SGVHAK rover continued to pick up hardware upgrades along the way.

On the software side, we have ambition to increase sophistication by adapting the open source Robot Operation System (ROS) which led to a small digression to Phoebe, my tool for learning ROS. Getting a rover to work effectively under ROS poses some significant challenges that we have yet to address, but if it was easy it wouldn’t be fun!

Since this was a practice talk, the Q&A session at the end was also a forum for feedback on how we could improve the talk for SCaLE. We had some good suggestions on how we might have a better smoother narrative through the story, and we’ll see what we can figure out by March.

Sawppy at Brawerman East STEAM Makers Fair

Sawppy’s publicity appearance today was at Brawerman East STEAM Makers Fair, a supercharged science fair at a private elementary school. Sawppy earned this invitation by the way of January presentation at Robotics Society of Southern California. The intent is to show students that building things is more than their assignments at their on campus Innovation Lab, there are bigger projects they can strive for beyond the classroom. But the format is, indeed, just like a school science fair, where Sawppy got a display table and a poster board.

Brawerman STEAM Makers Fair - Sawppy on table

But Sawppy is not very interesting sitting on a table, it didn’t take long before the rover started roving amongst other exhibits. The school’s 3D printer is visible on the left – a Zortrax M200.

Brawerman STEAM Makers Fair - Sawppy roaming

Sawppy was not the only project from grown-ups present. I admire the ambition of this laser cutter project undertaken by one of the parents. Look at the size of that thing. It is currently a work in progress, and its incomplete wiring were completely removed for this event so little fingers are not tempted to unplug things and possibly plugging them in a wrong place.

Brawerman STEAM Makers Fair - laser cutter

The center of this tables had some old retired electronics equipment that kids will be able to take apart. This was a huge hit at the event, but by the end of the night this side of the room was a huge mess of tiny plastic pieces scattered all over.

Brawerman STEAM Makers Fair - deconstruction zone

I brought my iPad with the idea I could have Sawppy’s Onshape CAD data visible for browsing, but it turned out the iOS Onshape app required a live internet connection and refused to work from cache. As an alternate activity, I rigged it up to show live video footage from Sawppy’s onboard camera. This was surprisingly popular with the elementary school age crowd, who got a kick out of making faces at the camera and seeing their faces on the iPad. I need to remember to do this for future Sawppy outings.

Brawerman STEAM Makers Fair - Sawppy camera ipad

After Sawppy was already committed to the event, I learned that a Star Wars themed art car was also going to be present. So I mentioned my #rxbb8 project which earned me a prime parking spot on the first floor next to the far more extensively modified “Z-Wing.” Prepare to jump to hyperspace!


(Cross-posted to

Sawppy at Space Carnival Long Beach

Sawppy at Space Carnival Long Beach

Space Carnival, held at the Expo Arts Center in Long Beach, California, welcomed Sawppy as one of several exhibits Monday afternoon. It turned out to be part of a week-long LEGO robotics camp for elementary school students. Most of the events are for campers, but the Monday evening Space Carnival was open to the public.

Since the focus is on LEGO, there were plenty of plastic bricks in attendance. The middle of the room had a big pile of bricks on a plastic tarp and kids were crawling all over the pile building their creations. Sawppy mostly spent time outside of the tarp, occasionally venturing on to some of the colorful game boards for LEGO robots to line-follow and other tasks.

Sawppy at Space Carnival Long Beach LEGO tarp

As usual, I handed controls over for kids in attendance to play with. Running over feet is still more popular of an event than I can hope to understand but, if it makes them excited, so be it.

Sawppy at Space Carnival Long Beach running over feet

Sawppy was not the only non-LEGO robot in attendance, there were also a selection of Star Wars licensed merchandise including this R2D2. I forgot if this particular unit was made by Sphero or Hasbro.

Sawppy at Space Carnival Long Beach R2D2

This event was not the first time I crossed paths with Barnabas Robotics, but it was the first time I got to speak with them beyond the standard sales pitch type of discussions. Since their business is STEM education for students K-12, they have a good feel of what type of material is appropriate for various age groups. It’s possible Sawppy can find a role in high school curriculum.

At the end of the night, the LEGO tarp cleared out enough for me to drive Sawppy across the field. Unfortunately I saw Emily’s tweet too late to replicate the movie clip she had suggested. Maybe another day!

(Cross-posted to

Sawppy Has A Busy Schedule This Week

Since the time I declared Sawppy version 1.0 (mechanical maturity), I’ve been taking my rover out to various events. From casual social gatherings to large official events to presentation in front of others who might appreciate my project. Sawppy has been a great icebreaker for me to start talking with people about their interests, and sometimes this leads to even more events added to Sawppy’s event calendar. This coming week will be especially busy.

Space Carnival

On Monday February 11th from 3pm-6:30pm Sawppy will be at Space Carnival, a FIRST Themed Event on Lincoln’s Birthday. Held at Expo Arts Center, a community space in Long Beach, CA. This event is organized by people behind local FIRST robotics teams. This year’s competition is titled “Destination: Deep Space” and has a very explicit space exploration angle to all the challenges. So even though Sawppy is nothing like a FIRST robotics competitor, an invitation was still extended to join the fun.

This event will be unique in that I had the option to be a roaming exhibit and I chose it for novelty. I think a rover who is roving will be much more engaging than a rover sitting on a table. It also means I will not be tied to a booth, so I could check out other exhibitors as I roam around with Sawppy. This eliminates the problem I had with Sawppy at DTLA Mini Maker Faire – I had to stay in one place for most of the event and couldn’t see what other people had brought.

On Wednesday February 13th Sawppy will join a STEAM Maker’s Fair at Brawerman East, a private elementary school. This is a small event catering to students and parents at the school. I believe the atmosphere will be similar to a school science fair, with exhibits of student projects. To augment these core exhibits, Sawppy and a few others were invited. The intent is to show that concepts covered in their on-campus Innovation Lab projects are just as applicable to bigger projects outside of their class.

And finally, on Thursday Februarh 14th Sawppy will be part of another SGVLUG presentation. A follow-up to the previous rover themed SGVLUG presentation, this will still set up background but will talk more about what has happened since our initial rover construction. This also serves as a practice run for a presentation to be given at Southern California Linux Expo (SCaLE) next month.

(Cross-posted to

Sawppy Odometry Candidate: Flow Breakout Board

When I presented Sawppy the Rover at Robotics Society of Southern California, one of the things I brought up as an open problems is how to determine Sawppy’s movement through its environment. Wheel odometry is sufficient for a robot traveling on flat ground like Phoebe, but when Sawppy travels on rough terrain things can get messy in more ways than one.

In the question-and-answer session some people brought up the idea of calculating odometry by visual means, much in the way a modern optical computer mouse determines its movement on a desk. This is something I could whip up with a downward pointing webcam and open source software, but there are also pieces of hardware designed specifically to perform this task. One example is the PWM3901 chip, which I could experiment using breakout boards like this item on Tindie.

However, that visual calculation is only part of the challenge, because translating what that camera sees into a physical dimension requires one more piece of data: the distance from the camera to the surface it is looking at. Depending on application, this distance might be a known quantity. But for robotic applications where the distance may vary, a distance sensor would be required.

As a follow-up to my presentation, RSSC’s online discussion forum brought up the Flow Breakout Board. This is an interesting candidate for helping Sawppy gain awareness of how it is moving through its environment (or failing to do so, as the case may be.) A small lightweight module that puts the aforementioned PWM3901 chip alongside a VL53L0x distance sensor.


The breakout board only handles the electrical connections – an external computer or microcontroller will be necessary to make the whole system sing. That external module will need to communicate with PWM3901 via SPI and, separately, VL53L0x via I2C. Then it will need perform the math to calculate actual X-Y distance traveled. This in itself isn’t a problem.

The problem comes from the fact a PWM3901 was designed to be used on small multirotor aircraft to aid them in holding position. Two design decisions that make sense for its intended purpose turns out to be a problem for Sawppy.

  1. This chip is designed to help hold position, which is why it was not concerned with knowing the height above surface or physical dimension of that translation: the sensor was only concerned with detecting movement so the aircraft can be brought back to position.
  2. Multirotor aircraft all have built-in gyroscopes to stabilize itself, so they already detect rotation about their Z axis. Sawppy has no such sensor and would not be able to calculate its position in global space if it doesn’t know how much it has turned in place.
  3. Multirotor aircraft are flying in the air, so the designed working range of 80mm to infinity is perfectly fine. However, Sawppy has only 160mm between the bottom of the equipment bay and nominal floor distance. If traversing over obstacles more than 80mm tall, or rough terrain bringing surface within 80mm of the sensor, this sensor would become disoriented.

This is a very cool sensor module that has a lot of possibilities, and despite its potential problems it has been added to the list of things to try for Sawppy in the future.

ROS In Three Dimensions: Navigation and Planning Will Be Hard

backyard sawppy 1600At this point my research has led me to ROS modules RTAB-Map which will create a three dimensional representation of a robot’s environment. It seems very promising… but building such a representation is only half the battle. How would a robot make good use of this data? My research has not yet uncovered applicable solutions.

The easy thing to do is to fall back to two dimensions, which will allow the use of standard ROS navigation stack. The RTAB-Map ROS module appears to make the super easy, with the option to output a two dimension occupancy grid just like what navigation wants. It is a baseline for handling indoor environments, navigating from room to room and such.

But where’s the fun in that? I could already do that with a strictly two-dimensional Phoebe. Sawppy is a six wheel rover for handling rougher terrain and it would be far preferable to make Sawppy autonomous with ROS modules that can understand and navigate outdoor environments. But doing so successfully will require solving a lot of related problems that I don’t have answers yet.

We can see a few challenges in the picture of Sawppy in a back yard environment:

  • Grass is a rough surface that would be very noisy to robot sensors due to individual blades of grass. With its six wheel drivetrain, Sawppy can almost treat grassy terrain as flat ground. But not quite! There are hidden dangers – like sprinkler heads – which could hamper movement and should be considered in path planning.
  • In the lower right corner we can see transition from grass to flat red brick. This would show as a transition to robot sensors as well, but deciding whether that transition is important will need to be part of path planning. It even introduces a new consideration in the form of direction: Sawppy has no problem dropping from grass to brick, but it takes effort to climb from brick back on to grass. This asymmetry in cost would need to be accounted for.
  • In the upper left corner we see a row of short bricks. An autonomous Sawppy would need to evaluate those short bricks and decide if they could be climbed, or if they are obstacles to be avoided. Experimentally I have found that they are obstacles, but how would Sawppy know that? Or more interestingly: how would Sawppy perform its own experiment autonomously?

So many interesting problems, so little time!

(Cross-posted to