-
Magnetically Attached Flag Pole
04/09/2019 at 21:56 • 0 commentsOne 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.
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.
Clearly, 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.
Matching sets were held to yard stick flag pole with more tape.
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.
(Cross-posted to NewScrewdriver.com)
-
New Camera Mast for Kinect V1
04/08/2019 at 19:12 • 0 commentsWhen 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.
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.
Kinect sits slightly offset camera mast center for two reasons.
- 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.
- 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.
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 NewScrewdriver.com)
-
Yuri’s Night LA 2019
04/08/2019 at 00:35 • 1 commentI'm happy to see interest in Sawppy continue to grow and my little rover now has something of a publicity appearance schedule. Summaries of the past few appearances have been cross-posted on my personal blog as well as this project page, but going forward I think I should keep this project page focused on technical evolution and skip the non-technical stuff.
As the first implementation of this new policy, here's the summary for Sawppy's attendance at Yuri's Night Los Angeles 2019. Anyone who's interested can follow the link to read more, others can skip this log entry without having to do a lot of scrolling.
-
Instructions Posted For Running SGVHAK Rover Software on Sawppy
03/31/2019 at 19:48 • 0 commentsI 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 NewScrewdriver.com)
-
Latest Documentation Updates
03/25/2019 at 23:17 • 0 commentsIt'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.
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 rover 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. From the top of this project page, click on "Discussion", and add your comment.
- If you rather not comment in public, you can send me a private message. Click on my name to reach my Hackaday.io 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 NewScrewdriver.com)
-
Sawppy Field Repair: Servo Coupler
03/23/2019 at 20:25 • 0 commentsEvery 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.
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 an 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 NewScrewdriver.com)
-
Sawppy at Caltech Science for March 2019
03/17/2019 at 05:19 • 0 commentsToday 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.
Part of the journey included crossing picturesque Millikan Pond.
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.
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.
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.
(Cross-posted to NewScrewdriver.com)
-
Sawppy 1.0 Wiring Schematic
03/14/2019 at 20:01 • 0 commentsWhen 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 this Hackaday.io 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 the files section of this project page, as well as Sawppy’s assembly instructions hosted on Github.
(Cross-posted to NewScrewdriver.com)
-
Sawppy at SCaLE 17x: The Trouble with Rovers
03/12/2019 at 04:59 • 0 commentsMy 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.
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.
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 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.
(Cross-posted to NewScrewdriver.com)
-
Cracked Sawppy Steering Coupler Almost Survives Full Day of SCaLE 17x
03/10/2019 at 20:09 • 0 commentsBefore 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:
After abuse by careless child, here’s a fully failed coupler:
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.
(Cross-posted to NewScrewdriver.com)