Inspired by Roger and others, I'm making a SAWPPY-Alike rover, adding my own tweaks and mods.
Here's some screenshots of some of the CAD I've been working on over the past month or two, while stuck inside because global viral pandemic.
Let's walk through a couple things in this image so you can get an idea of some of my plots and plans for when I can get back to working on Tenacity.
First we have these "sensor stalks". The one with the flat top is what's currently mounted on the rover. I'm playing with different angles on the top to incline a camera or LIDAR and give it a better view of the obstacles in front of it vs. seeing things at knee height and missing things underfoot. The one off to the left in the back is inclined 15 degrees. The one in the front is tilted 10 degrees.
As much as I've tried to keep the cable plant under control with twisting and flex-wrapping the cable bundles, velcro-ing and routing them along the corners, it's becoming obvious that I'm going to need to add an additional "equipment deck" above the top of the body box. The original impetus behind this was to have a place to mount a Jetson TX1, but the more I worked out what the compute and vision-processing system would look like, the more I realized I just plain needed more space.
So here's a quick sketch of what that might look, modeled in a mix of OnShape and OpenSCAD.
The bracket is slotted for a length of 1515 to be inserted to support the weight of the additional hardware mounted up top.
Finally, we come to this bracket here, which has been showing up in most of the images here and should be recognizable by most Sawppy Builders as the bottom part of the differential holder. When I was building my Sawppy last summer, I became rather captivated and inspired by this particular piece. I really liked how it fit into the upper part of the differential and how it clamped onto the crossbar. So I "repaired" the holes in Onshape to make it a universal mounting bracket.
I'll upload these to my GitHub fork of Roger's Sawppy repo in case anybody finds them useful.
Tenacity is back on the road!(carpet), fresh from what turned out to be an almost 3 month(-ish) refit.
A good bit of consulting work came barrelling out of nowhere right after the start of the New Year, so I've spent most of the past couple months taking care of the funding that makes this rover roll. "No bucks, no Buck Rogers" as a man once said.
One thing that kept breaking last fall was the keypad that was part of the chording keypad teleop control. Replacing that meant getting serious about a proper control system, which led to a complete rewiring and internal reconfig, but overall a much more complete rover and much closer to an actual completed first rev platform.
Current config is:
Most of the NylonX parts have snapped at this point. The suspension for the rocker/bogie assembly have been replaced with metal. The surviving parts are all the shorter or thicker bits like the motor couplers and drive shafts. The last of the steering shafts broke last weekend when Tenacity got rear-ended by a runaway DonkeyCar. This has provided me with an excuse to open a spool of polycarbonate (PC) and print off some replacement parts. We'll see how these fare compared to the nylon. I will do a longer post about the whole 3D-printed structural adventure and all the different materials I've tried at some point in the future.
-Get working on vision and navigation now that I have a driveable rover.
-Add power management support via an INA219 so I can get some sort of software visibility into the overall power consumption of the whole system and from there individual components.
-Sonar and maybe some bump sensors "for better hallway vision".
Anyway, that's an off-the-top-of-my head update on what's going on with Tenacity. Post below if you have comments or questions.
While I'm doing a lot of deep under-the-hood type stuff, I've noticed my little roving friend has been getting kind of antsy recently. Having tasted what it's like to rove and being stuck up on its crate over the holiday break, I've detected a distinct whiff of Grumpy Rover syndrome wafting about my hackspace of late. So, I've tried to appease my little friend with a means to express itself by adding a little USB speaker and it chose to quote one of my favorite movie bits back at me :)
Hang tight there buddy, you'll be back on your wheels in no time and roving better than ever.
(The more detailed update here is that I've been busy pretty much redoing the entire guts of the rover over the past month or so. In an attempt to get it ROS-ready and move on to a PI or Jetson from the Arduino(s) that were driving it this summer/fall, it turns out a complete rewiring was needed. Things are almost done and there's much more space to install needed boards, sensors and widgets than before).
I've "fixed" the steering axle that broke last week by cutting a new metal one out of the 8mm stock I have left over from Tenacity's steel differential shaft using the drill-press-and-hacksaw method to cut the grooves. Even when everything is properly marked and jigged, there's still a good bit of approximation and hand-waving going about. I also took the opportunity to look at the rocker shafts and fix some of the slop in how they fit against the body box. Suddenly, with those re-grooved and the gaps gone, the rover suddenly drives a lot straighter. There is still some drift, but it's over the course of several yards and not just a foot or so.
I also found an issue in the Arbotix Controller code that could see the Dynamixels being allowed to relax vs. being actively driven to maintain their position at all times. This could also cause some unintentional castering as well. There's one final bit of deflection to be taken care of at the rear, where the back wheel pods are splayed out a bit at the back. I don't think the other Sawppy-'bots out there that I've seen are doing this. In other words, the system as a whole is working well enough to highlight individual parts that need tuning and general work.
I'm going to be bootstrapping ROS onto the 'bot in the next few weeks, the question is onto what board. The temptation is to install a Jetson or other high-end board onto it, but the real "Curiosity" is really just a data-gathering platform with the processing being done back on Earth, plus space is kind of at a premium in the body-box there, so a Pi is a more likely choice.
So, after a successful evening roll around the Homebrew Robotics Club meeting, I was starting to drive the rover(Which, in the spirit of other rover names, I've decided to name "Tenacity"), towards the door, when it skidded to a halt.
Yup, I broke another steering shaft.
What you see here is NylonX at 100% infill snapped clean off during a turn, but not one it hadn't done earlier that night or day. These parts can clearly support Tenacity's weight at rest, and even in motion, but they deflect and eventually break with use. So far, all the 3D-printed shafts, other than the shorter ones for the wheel/motor pods, have failed.
If we look at the Sawppy Parts List, and in particular, the 8mm shaft stock docs, we see that the drive shafts are spec'ed to 50mm long and the others are 60-84mm long. So, 50mm by 8mm is some sort of strain limit for 3D-printed nylon parts, even if they're stiffened with carbon fiber. The other thing worth pointing out here is that each of the failed parts is getting shear forces either vertically or horizontally. The steering shafts sit vertically, attaching the steering motor pod to the steering servo. The rocker-bogie shafts mount horizontally. So this isn't purely a matter of not being able to bear the weight of one whole side of the robot. Nylon does best when used to make parts with significant bulk, for lack of a better term.
So, where to go from here ?
I have a spool of PC(Polycarbonate) and, of course, the STLs for all the related parts, so I'm thinking about giving that a go. I also have some 8mm steel rod and access to a drill-press again, so I could go the Poor man's lathe route. Right now, just to get the 'bot back on it feet again, I think this is the best, quickest, route to take.
Unless, of course, Matterhackers wants to sponsor Tenacity a set of shafts with their new metal filament and sintering service. What do you think guys ? (Baby) Rover needs a new set of shafts(shoes) !
We're rolling! I demo'ed the 'bot at the Homebrew Robotics Club meeting last night.
In the spirit of the names of the other actual rovers rolling around on Mars, I've decided to name this one "Tenacity" or more fully "S.P.R. Tenacity" with "S.P.R." standing for "Spare Parts Rover".
It feels great to get to this point!
I pushed up a bunch of changes to my fork of the Sawppy Repo, that, among other things, include a good number of the models I had to rework because of issues with the heat-insert holes on things like the Steering Knuckle assembly, wheel hubs, etc. being too big. This is not at all a slam on Roger or the work he's done, it's just the current reality of building things with parts made by a printer that doesn't cost as much or more than a new late-model car.
If you are going to be building something like a Sawppy be prepared to budget for failures, even if the print completes successfully. Things may just not fit right and post-processing may or may not help and you might have to resort to other methods to resolve the situation. For the Steering Knuckles that provide corner-steering for the rover, I did not re-print them but instead went with #6-32 inserts instead of the 3mm that are used elsewhere in the model. I would allot a whole extra spool for these sort of problems because printing them out at full-size in your final material is really the only way to figure it out. Resist the temptation to print out things in super-cheap PLA for fit-and-finish because it's going to flow and expand and contract differently than PETG.
Anyway, that's more of a ramble than I'd planned on about all this.
I got all the motor pods connected and running tonight. There's a bit of precession going on with a couple of them and I'm not exactly sure what's going on with that. It could be a wheel or axle that is not mounted entirely flush against a hub or mount or something. I'm going to take them off this weekend and investigate. The important bit though is that I can command each motor pod individually and that all the time I've put into wiring and mapping out the pins and terminals and everything has paid off. I flipped the switch this afternoon and all the wheels started rolling in the same direction at the same speed, first time off, which is HUGE.
I'm using 3 LM298N dual motor controllers, hooked up to an Arduino MEGA 2560 via screw-terminal shield.
That will ultimately be connected to a Pi or maybe even a Jetson that is running ROS.
For now though, I'm pretty psyched that I've gotten this far. Teleop control is just around the corner, hopefully sometime in the next week or so, after I get the precession issues sorted.
This is a test of one of the motors after I'd printed out the housing, shafts, etc. and screwed everything down. Mostly I was just going through the full sub-assembly here, checking out how it all moved once assembled. The bracket/housing here is printed in a red PLA because I wanted to save the nicer, slightly more spendy PETG for the actual model vs. using it on a test-stand that would probably get tossed or might break or need another round of CAD & printing if things didn't fit exactly right.
I generally keep a couple spools of bargain-basement PLA on hand for just this sort of thing. I get the super-cheap $9.99 whatever-Amazon-throws-at-me or what Matterhackers has on clearance and then print all my test-fit parts with that, saving the more expensive stuff for the final print when I'm sure all the fit-and-finish has been worked out.
Google Drive is being annoying about inlining videos that I've uploaded there. The inFrame method I've used before to include a link to a video I've uploaded to drive doesn't seem to work anymore. So you'll just have to check it out here:
(If somebody has figured out the current way to inline display videos from Google Drive or something this isn't YouTube/Vimeo, please comment below.
I'm posting this actually quite a ways into the project. I started working on it around March-ish 2019, about the time that the final collapse of TheShop.build(nee' TechShop) happened and I lost access to a metal shop within a reasonable drive of SF.
So, here we are. My as-yet-unnamed SAWPPY-alike has now been moved to Circuit Launch in Oakland, CA. where I am one of their Roboticists in Residence, focusing on rovers and off-road, ruggedized robots.
Anyway, here are a few random pics of my build process. My rover was printed on a Raise3D N2+. The wheels are PETG-CF from Matterhackers. The drive axles and steering shafts are NylonX(About which I'll write more later) . The rest of it is printed in PETG from a variety of suppliers.
All great projects start out on the kitchen table:
The all-important mechanical "backpack test", when it was still occupying whatever random corner in our apartment I could put it in that night.
I spent (and am just now finishing) a LOT of time on the wiring. I've built enough robots of significant size to know that organizing and "dressing" your cable runs will save a lot of debug time later.