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 Hackaday.io)

Lightweight Google AMP Gaining Weight

Today I received a notification from Google AMP that the images I use in my posts are smaller than their recommended size. This came as quite a surprise to me – all this time I thought I was helping AMP’s mission to keep things lightweight for mobile browsers. It keeps my blog posts from unnecessarily using up readers’ cell phone data plans, but maybe this is just a grumpy old man talking. It is clear that Google wants me to use up more bandwidth.

AMP stands for Accelerated Mobile Pages, an open source initiative that was launched by Google to make web pages that are quick to download and easy to render by cell phones. Cutting the fat also meant cutting web revenue for some publishers, because heavyweight interactive ads were forbidden. Speaking for myself, I am perfectly happy to leave those annoying “Shock the Monkey” ads behind.

As a WordPress.com blog writer I don’t usually worry about AMP, because they automatically creates and serves an AMP-optimized version of my page to appropriate readers. And since I don’t run ads on my page there’s little loss on my side. As a statistics junkie, I do miss out on knowing about my AMP viewership numbers, because people who read AMP cached versions of my posts don’t interact with WordPress.com servers and don’t show on my statistics. But that’s a minor detail. And in theory, having an AMP alternate is supposed to help my Google search rankings so I get more desktop visitors than I would otherwise. This might matter to people whose income depends on their web content. I have the privilege that I’m just writing this blog for fun.

Anyway, back to the warning about my content. While I leave AMP optimization up to WordPress.com, I do control the images I upload. And apparently I’ve been scaling them down too far for Google.

amp image recommend 1200 wide

I’m curious why they chose 1200 pixel width, that seems awfully large for a supposedly small lightweight experience. Most Chromebook screens are only around 1300 pixels wide, a 1200 pixel wide image is almost full screen! Even normal desktop web browsers visiting this site retrieves only a 700 pixel wide version of my images. Because of that fact, I had been uploading images 1024 pixels wide and thought I had plenty of headroom. Now that I know Google’s not happy with 1024, I’ll increase to 1200 pixels wide going forward.

ROS In Three Dimensions: Data Structure and Sensor

rosorg-logo1One of the ways a TurtleBot makes ROS easier and more approachable for beginners is by simplifying a robot’s world into two dimensions. It’s somewhat like the introductory chapters of a physics textbook, where all surfaces are friction-less and all collisions are perfectly inelastic. The world of a TurtleBot is perfectly flat and all obstacles have an infinite height. This simplification allows the robot’s environment to be represented as a 2D array called an occupation grid.

Of course, the real world is more complicated. My TurtleBot clone Phoebe encountered several problems just trying to navigate my home. The real world do not have flat floors and obstacles come in all shapes, sizes, and heights. Fortunately, researchers have been working on problems encountered by robots venturing outside the simplified world, it’s a matter of reading research papers and following their citation links to find the tools.

One area of research improves upon the 2D occupation grid by building data structures that can represent a robot’s environment in 3D. I’ve found several papers that built upon the octree concept, so that seems to be a good place to start.

But for a robot to build a representation of its environment in 3D, it needs 3D sensors. Phoebe’s Neato vacuum LIDAR works in a simplified 2D world but won’t cut it anymore in a 3D world. The most affordable entry point here is the Microsoft Kinect sensor bar from an old Xbox 360, which can function as a RGBD (red + blue + green + depth) input source for ROS.

Phoebe used Gmapping for SLAM, but that takes 2D laser scan data and generates a 2D occupancy grid. Searching for a 3D SLAM algorithm that can digest RGBD camera data, I searched for “RGBD SLAM” that led immediately to this straightforwardly named package. But of course, that’s not the only one around. I’ve also come across RTAB-Map which seems to be better maintained and updated for recent ROS releases. And best of all, RTAB-Map has the ability to generate odometry data purely from the RGBD input stream, which might allow me to bypass the challenges of calculating Sawppy’s chassis odometry from unreliable servo angle readings.

(Cross-posted to Hackaday.io)

Sawppy on ROS: Open Problems

A great side effect of giving a presentation is that it requires me to gather my thoughts in order to present them to others. Since members of RSSC are familar with ROS, I collected my scattered thoughts on ROS over the past few weeks and condensed the essence into a single slide that I’ve added to my presentation.

backyard sawppy 1600

From building and running my Phoebe robot, I learned about the basics of ROS using a two-wheeled robot on flat terrain. Sticking to 2D simplifies a lot of robotics problems and I thought it would help me expand to a six-wheeled rover to rough terrain. Well, I was right on the former but the latter is still a big step to climb.

The bare basic responsibilities of a ROS TurtleBot chassis (and derivatives like Phoebe) is twofold: subscribe to topic /cmd_vel and execute movement commands published to that topic, and from the resulting movement, calculate and publish odometry data to topic /odom.

Executing commands sent to /cmd_vel is relatively straightforward when Sawppy is on level ground. It would not terribly different from existing code. The challenge comes from uneven terrain with unpredictable traction. Some of Sawppy’s wheels might slip and resulting motion might be very different from what was commanded. My experience with Phoebe showed that while it is possible to correct for minor drift, major sudden unexpected shifts in position or orientation (such as when Phoebe runs into an unseen obstacle) throws everything out of whack.

Given the potential for wheel slip on uneven terrain, calculating Sawppy odometry is a challenge. And that’s before we consider another problem: the inexpensive serial bus servos I use do not have fine pitched rotation encoders, just a sensor for servo angle that only covers ~240 of 360 degrees. While I would be happy if it just didn’t return any data when out of range, it actually returns random data. I haven’t yet figured out a good way to filter the signal out of the noise, which would be required to calculate odometry.

And these are just challenges within the chassis I built, there’s more out there!

(Cross-posted to Hackaday.io)

Sawppy Presented at January 2019 RSSC Meeting

Today I introduced my rover project Sawppy to members of Robotics Society of Southern California. Before the presentations started, Sawppy sat on a table so interested people can come by for a closer look. My visual aid PowerPoint slide deck is available here.

sawppy at rssc

My presentation is an extended version of what I gave at Downtown LA Mini Maker Faire. Some of the addition came at the beginning: this time I’m not following a JPL Open Source Rover presentation, so I had to give people the background story on ROV-E, JPL OSR, and SGVHAK rover to properly explain Sawppy’s inspiration. Some of the addition came at the end: there were some technical details that I was able to discuss with a technical audience. (I’ll expand on them in future blog posts.)

I was very happy at the positive reception I received for Sawppy. The first talk of the morning covered autonomous robots, so I was afraid the audience would look down at Sawppy’s lack of autonomy. Thankfully that did not turn out to be a big deal. Many were impressed by the mechanical design and construction. Quite a few were also appreciative when I stressed my emphasis on keeping Sawppy affordable and accessible. In the Q&A session we covered a few issues that had easy solutions… if one had a metalworking machine shop. I insisted that Sawppy could be built without a machine shop, and that’s why I made some of the design decisions I did.

A few people were not aware of Onshape and my presentation stirred their interest to look into it. There was also a surprising level of interest in my mention of Monoprice Maker Select v2 as an affordable entry level 3D printer, enough hands were raised that I signed up to give a future talk about my experience.

(Cross-posted to Hackaday.io)

Dell Alienware Area-51m vs. Luggable PC

On the Hackaday.io project page of my Luggable PC, I wrote the following as part of my reason for undertaking the project:

The laptop market has seen a great deal of innovation in form factors. From super thin-and-light convertible tablets to heavyweight expensive “Gamer Laptops.” The latter pushes the limits of laptop form factor towards the desktop segment.

In contrast, the PC desktop market has not seen a similar level of innovation.

It was true when I wrote it, and to the best of my knowledge it has continued to be the case. CES (Consumer Electronics Show) 2019 is underway and there are some pretty crazy gamer laptops getting launched, and I have heard nothing similar to my Luggable PC from a major computer maker.

laptops-aw-alienware-area-51m-nt-pdp-mod-heroSo what’s new in 2019? A representative of current leading edge gamer laptop is the newly launched Dell Alienware Area-51m. It is a beast of a machine pushing ten pounds, almost half the weight of my luggable. Though granted that weight includes a battery for some duration of operation away from a plug, something my luggable lacks. It’s not clear if that weight includes the AC power adapter, or possibly adapters plural since I see two power sockets in pictures. As the machine has not yet officially launched, there isn’t yet an online manual for me to go read what that’s about.

It offers impressive upgrade options for a laptop. Unlike most laptops, it uses a desktop CPU complete with a desktop motherboard processor socket. The memory and M.2 SSD are not huge surprises – they’re fairly par for the course even in mid tier laptops. What is a surprise is the separate detachable video card that can be upgraded, at least in theory. Unlike my luggable which takes standard desktop video cards, this machine takes a format I do not recognize. Ars Technica said it is the “Dell Graphics Form Factor” which I had never heard of, and found no documentation for. I share Ars skepticism in the upgrade claims. Almost ten years ago I bought a 17-inch Dell laptop with a separate video card, and I never saw an upgrade option for it.

There are many different upgrade options for the 17″ screen, but they are all 1080p displays. I found this curious – I would have expected a 4K option in this day and age. Or at least something like the 2560×1440 resolution of the monitor I used in Mark II.

And finally – that price tag! It’s an impressive piece of engineering, and obviously a low volume niche, but the starting price over $2,500 still came as a shock. While the current market prices may make more sense to buy instead of building a mid-tier computer, I could definitely build a high end luggable with specifications similar to the Alienware Area-51m for less.

I am clearly not the target demographic for this product, but it was still fun to look at.

Sawppy Will Be Presented At RSSC

Roger Sawppy

I brought Sawppy to the Downtown Los Angeles Mini Maker Faire this past December, where I had the opportunity to give a short presentation about my project. (Above.) Also at the event were the Robotics Society of Southern California (RSSC) and a few members asked if I would be interested in presenting Sawppy at an upcoming RSSC meeting.

Since I’m always happy to share Sawppy with anyone interested in my little rover, I said yes and I’m on their calendar for the RSSC meeting on Saturday, January 12th. From 11AM to noon, I plan to talk for about 35-40 minutes and leave the remaining time for Q&A and drive Sawppy over obstacles to demonstrate the rocker-bogie suspension.

This group has collective expertise in Robot Operating System, which I’ve been learning on-and-off at a self guided pace. If conversations go in a direction where it makes sense, I’ll be asking my audience for their input on how to best put Sawppy on ROS. I also plan to bring Phoebe, my ROS TurtleBot clone that I built to learn ROS, just for fun.

And I’m sure I’ll see other cool robotics projects there!

(Cross-posted to Hackaday.io)

USB-C Transition Confusion

Today’s little research adventure came courtesy of a comment on one of my earlier posts: my Dell 7577 laptop has a USB-C port. Some laptops – like the latest Apple MacBook – charge through their USB-C ports. Does that mean I can charge my Dell through its USB-C port?

Well… no. No I can’t. But it was an interesting experiment.

dell 7577 usb c charging no go

As is my usual habit, my first thought was to find if there’s any mention in the online version of my manual.  Clicking on the “Power” section had the usual information about a standard Dell AC adapter but no mention of USB-C charging. Clicking on the “Ports and Connectors” section returns a list that listed several functions for the USB-C port, but that list did not include power.

However, it was still an impressively long list! I had not realized the full extent of what a USB-C connector could do. I was first introduced to this connector with my Nexus 5X cell phone, and I was happy enough just to have a charge connector that had eliminated frustration with orientation.

usb orientation

But it’s not just convenience, USB-C tries to solve an impressive set of problems all with a single connector. The fact it can transfer data was a given due to USB legacy, and I knew it could transfer more power than older USB connectors from the aforementioned Apple MacBook. But it wasn’t until I found the Wikipedia page on Thunderbolt 3 that I realized how wide the ambition spread.

Not just low-speed data like classic USB, but there’s also the option for high speed video data in the form of DisplayPort support. And that’s not all – it can tap into a computer’s internal high speed PCI bus. This part of the spec is how some laptops could utilize external GPU enclosures. Such a wide range of capability explains why Apple decided their latest laptops need only USB-C plugs: one plug can handle all the typical laptop port duties.

But as my blog comment pointed out, there’s also the risk for customer confusion. A USB-C port might do all of these things someday, but clearly not all USB-C ports could do everything today. One marvel of our current system is that, for the most part, if a plug fits into a port then it is the right plug for the right port. Now we’re moving away from that. Sure, it’s nice the protocol negotiation allows the computer to throw up a dialog box telling me I can’t charge through my USB-C port, but would it have been better to avoid this confusion to begin with?

Maybe one day we’ll get to the point where every USB-C port can do everything, bringing us back to the “if it fits, it works” world we once had. In the meantime, there’s going to be a lot of confusion. Let’s see how the industry adopts USB-C over the next few years…

SMD LED Under Macro Lens

Several recent posts focused on small things like a damaged ESP32 module. Trying to document these projects presented a challenge because it’s been difficult to take good clear pictures of fine detail. I did the best I could with what I had on hand, but the right tool for the job is a camera lens designed for macro photography. When one such lens for my Canon EF-M camera was on sale during the holiday shopping season, I could not resist.

Here’s the LED on the Introduction to SMD kit, with the entire image scaled down to 1024 pixels wide.

SMD intro kit scaled 1024

If I crop out the center of the original picture instead, this is what I see:

SMD intro kit LED 1024

A lot of detail are visible, certainly far better than what I could get before, but I think the focus could be a little sharper. I hope the lens is limited by operator skill rather than optical characteristics, because I could learn and improve my skill.

Here is a picture of the LED array from my recent freeform SMD experiment, again scaled down to 1024 pixels wide. The solder joints – which I could barely manage with the naked eye – look really uneven at this magnification. But wait – there’s more!

Freeform SMD 7 scaled 1024

Here’s the cropped-out center of that image. Tiny beads of solder look like monstrous blobs of invading space aliens, not at all attractive. But the wire inside the left side LED is clearly visible, and multiple diffractions of the right side LED can be seen. This picture represents a combination of two novice skills: freeform SMD soldering and macro photography. I’m pretty happy with the detail and clarity of these pictures, but not at the quality of these solder joints. That’s OK, it just means I have lots of room for improvement.

Freeform SMD 7 cropped 1024.jpg

KISS Tindies: On Stage

Now it’s time to wrap up the KISS Tindies wireform practice project with a few images for prosperity. Here’s the band together on stage:

kiss tindie band on stage

An earlier version of this picture had Catman’s drum set in its bare copper wire form. It worked fine, but I recalled most drum sets I saw on stage performances had a band logo or something on their bass drum surface facing the audience. I hastily soldered another self blinking LED to my drum set, arranged so it can draw power from a coin cell battery sitting in the drum. Calling this a “battery holder” would be generous, it’s a far simpler hack than that.

kiss tindie drum set blinky led

I then printed a Tindie logo, scaled to fit on my little drum. Nothing fancy, just a standard laser printer on normal office printer. I then traced out the drum diameter and cut out a little circle with a knife. Old-fashioned white glue worked well enough to attach it to the copper wire, and that was enough to make the drum set far more interesting than just bare wire.

A black cardboard box lid served as a stage, with a 4xAA battery tray serving as an elevated platform for the drummer. I watched a few YouTube videos to see roughly where Demon, Spaceman, and Starchild stand relative to each other and Catman as drummer. It may not be a representative sample, but hopefully it eliminated the risk of: “They never stand that way.”

With batteries installed in everyone, it’s time for lights, camera, action! It was just a simple short video shot on my cell phone camera, one continuous pull back motion as smooth as I can execute with my bare hands helped by the phone’s built in stabilization. I had one of the aforementioned YouTube videos running for background sound.

I wanted to start the video focused on the drum logo, but doing so requires the phone right where I wanted Demon to stand. After a few unsatisfactory tests, I decided to just add Demon mid-scene after the phone has moved out of the way. It solves my position problem and adds a nice bit of dynamism to the shot.

KISS Tindie: Battery Power

When I started the KISS Tindie heads project, the primary goal was and remains an exercise in forming shapes with copper wire. Making these copper wire bodies purely for cosmetic decoration with no functional circuit. With that goal met, I’ve changed my mind about nonfunctioning circuitry. I should at least give it a shot.

It was trivial to solder self-blinking LEDs into their designated slots on each PCB. The next challenge was to provide power to those LEDs. The original battery holder slot is no longer available – I’ve already used those contact pads to connect my copper wire bodies to these PCB heads. On the upside, it meant the wire bodies were ready to serve as ground plane.

The other major solder point was intended for a pin that lets us pin the Tindie Blinky on our clothing. I had soldered the positive leg of a LED to that pad and a long straight wire as a tripod to help the KISS Tindie stand up. I thought perhaps I could lay down some copper foil tape and my figures can draw power from that tape.

Once I had the wire soldered, though, I didn’t like how it made my KISS Tindies look like they have a mind control cable sticking out the back of their heads. (See left side of picture at the bottom of this post.) Which meant another change of plans: give them each a coin cell battery holder made out of bent copper wire.

wire bent coin cell battery tray for tindie

That loop of wire hugs the positive side of a coin cell battery, pushing the negative side against a KISS Tindie’s copper wireframe body. This completes the circuit and the coin cell battery is the visible heart of each KISS Tindie.

kiss tindie with battery heart

And now, in order to stand, a short loop is soldered to the feet. This completes a self-sufficient KISS Tindie figure that stands on its own, as seen in the right side of the picture below. I find this much better than a wire sticking out the back of Tindie’s head, seen on the left.

kiss tindie stand before and after

KISS Tindie: Drum Set

The four KISS Tindie PCB heads now have copper wire bodies, but only three of them have their instruments. They can’t go on tour like this – the drummer needs a drum set!

Kidding aside, a copper wire frame drum set would be a good first step into creating three-dimensional shapes using copper wire. I had thought about creating the band members’ bodies in three dimensions, but such complex shapes were above my current skill level — making it in two dimensions was challenging enough.

But perhaps the simpler cylindrical geometry of a drum set would be within my reach. Or at least, a simple caricature of a drum set, since everything I know came from 15 minutes of reading Wikipedia. The biggest drum that dominates visually is called the bass drum, so I started crafting cylinders to get a feel of size. I settled on this size which was shaped using a 3D-printed 30mm diameter cylinder.

tindie drummer bass drum

Once I picked a size for the bass drum size, I started trying every round thing on my workbench to see how well their diameter might work for the other drums. The outside diameter of a 608 bearing seemed a little too large, but the diameter of a sub-C nicad battery cell is just about right.

tindie drummer other drum components

Some wire bending and soldering later, we have a vague approximation of a drum kit as built by someone with no knowledge of drums. But it gets the point across – our KISS Tindie drummer the Catman now has a drum set.

tindie drummer with drum set

KISS Tindies: Peter/Catman Completes The Band

Fourth and final member of KISS Tindie heads project represents the Catman. Unlike Starchild, Spaceman, or Demon, Catman is the drummer and has no guitar. This makes the figure itself easier as there’s no axe to form. The only item of any complexity were his lapels, which required sharp bends that I couldn’t quite make in copper wire. But it’s all a simplified approximation anyway so…. hopefully good enough.

KISS Tindie Peter Catman start

Soldering it together was a little tricky, but after I started using tape on Spaceman, my proficiency is now good enough for me to handle it as a problem I know how to solve.

KISS Tindie Peter Catman progress

With the chest details in place, the rest of the drummer were pretty simple.

KISS Tindie Peter Catman complete

In fact, too simple. I’m not happy with leaving the drummer standing up holding a pair of drumsticks… but more on that later. For now, I have taken the four KISS Tindie heads and, using existing reference artwork, given them simplified copper wire bodies. Here they are overlaid on top of my reference sheet.

KISS Tindie band with reference

And here they are without the reference art:

KISS Tindie band no reference

This was a fun project to trace out existing artwork using copper wire. But I’m not done yet. For starters, Catman the drummer needs a drum set.

KISS Tindies: Gene/Demon

I know nothing about the band KISS or their music, but I have a PCB of Tindie puppy heads styled after stage makeup for the band. I wanted something to practice forming shapes with copper wire, and these looked fun. After tackling Starchild and Spaceman, next up is Demon. (All names I pulled out of Wikipedia.)

The previous two were done piecemeal: I formed one piece of wire, soldered it, then formed the next piece, then soldered that. With Demon I tried to form all the wires first before I start soldering, but tracking my pieces became difficult only about halfway through. I had to move wires around to keep them out of the way of the curve I’m actively tracing, and pieces intended for soldering (shown in this picture) were getting lost among extraneous pieces that were cut off. (Not in this picture, but certainly all over my work area!)

KISS Tindie Gene Demon pieces

Another experiment was to add some dimensional layering to the project. I retreated from building a full three dimensional body to a two-dimensional project, but I could still layer objects at varying heights to add a tiny bit of third dimension action. Seen here is the left hand (front-left paw?) behind/under the guitar.

KISS Tindie Gene Demon layers

As it turned out, soldering multiple pieces at once wasn’t noticeably faster than doing it one piece at a time. And there was a negative downside: since I’m not referencing the overall shape as I go, small errors in each individual piece added up as I didn’t have a chance to correct errors as I went. Demon ended up a little larger than the reference art, with a more distorted shape relative to the rest. But at least his axe looks good.

KISS Tindie Gene Demon axe

For the rest of Demon, I went back to soldering each piece as I bent them.

KISS Tindie Gene Demon complete

KISS Tindies: Ace/Spaceman

Continuing the project to give KISS Tindies copper wire bodies, I moved on to the next PCB puppy head. Wikipedia tells me this one is the Spaceman. Just like I did with Starchild, I started with the guitar and built outwards from there. Bending wire is still slow going. I’m sure skilled artists and sculptors could have done it in a fraction of the time, but I won’t get better unless I practice!

I’m also trying out different techniques as I go. I struggled to hold Starchild parts together as I soldered, so for Spaceman I tried out a technique I saw in the Hackaday Supercon SMD soldering challenge: use tape to hold things in place. The picture showed high temperature Kapton tape, I just used plain desktop Scotch tape. This meant another learning opportunity: I’ve learned copper wire conducts soldering heat very well. It doesn’t take much to degrade the adhesive on Scotch tape, leaving residue on my copper wires. Thankfully the plastic substrate could stand quite a bit before it would melt as well, so the shape holds up through soldering.

KISS Tindie Ace Spaceman tape

Another novelty of Spaceman was the open loop forming his right hand. (Front-right paw?) I’m a little worried it would hook on things in the future, but I have to admit that it seems to work well visually.

KISS Tindie Ace Spaceman complete

KISS Tindies: Paul/Starchild

With art reference in hand, printed to match scale with my KISS Tindie PCB heads, it’s time to start bending wire for my KISS Tindies project! I started with the face in the upper-left corner of the PCB, which Wikipedia told me represented “The Starchild” by Paul Stanley. The first wire I bent was for his right arm, but as I looked at my reference drawing I realized the critical part of this whole project would come down to whether I can make the guitar work in copper wire.

So I started on the guitar next. Bending wire to mimic features on my reference art. There were a lot of details on this guitar and, after thinking over how much time I wanted to spend on this project, I decided to skip out on those fine details. My copper wire curves will represent just the major character lines.

KISS Tindie Paul start

So the next question for project go/no-go is whether a simplified version of the art would look good enough to proceed. The guitar curves were painstakingly retracing in copper wire, and I decided the results were good enough to continue.

KISS Tindie Paul guitar

Here’s my simplified version of Paul’s Starchild rendered in copper wire. I think the important parts have been sufficiently represented, and I can always come back later to solder in more details if I wanted. This is encouraging enough of a result for me to proceed with the rest of the band.

KISS Tindie Paul complete

KISS Tindies: A Wire Form Practice Project

After I built a very simple copper wire body for a Tindie blinky, I wanted to advance my copper wire forming technique with practice making something a little more complex. Looking on my workbench of stuff, the most obvious candidate for a follow-up project are the KISS Tindies given out at Hackaday Superconference 2018. They were the demonstration objects in a workshop on pad printing – people were invited to apply red to these circuit boards and take them home. Not everyone took theirs home, so extras were distributed to other interested Supercon attendees like myself.

KISS Tindies

So I could create some copper wire bodies for the band. It wouldn’t make sense to give the same dog bodies to these heads – these call for some stylized human-like poses. I thought I would have to dig deep into my meager artistic skills to draw a guitar-playing puppy, but it turns out art already existed for these heads. (It’s possible these PCB heads were actually made from the art – I don’t have the history here.)

KISS Tindies reference art

Unlike the puppy, though, there wasn’t an obvious way for me to separate these shapes into a “front” and “back” for the two voltage planes. I thought I might try to make fully three-dimensional bodies but a few tests indicate I don’t yet have enough skills as a copper wire sculptor to pull it off.

Scaling my ambitions back down to match my current skill level means the next project will take a slight step backwards in functionality: they will be flat figures, and the body won’t be a functioning circuit. The focus of this exercise is to practice wire forming on a flat plane.

Onshape is Free For Makers, But They’re Less Eager To Say So Now

onshape_logo_mediumWhen I first discovered Onshape over two years ago, it was a novelty to see a capable CAD system run completely within my web browser. The technologies that made Onshape possible were still evolving at the time: on the client-side, web browsers had immature WebGL implementation that sometimes didn’t work, or worked unacceptably slowly. And on the server side, Onshape is an active participant in evolving AWS to work for them.

Now WebGL is a mature part of every popular web browser, including those at the heart of inexpensive Chromebooks. I’m old enough that the phrase “CAD Workstation” conjured up computer systems that cost as much as a car. With Onshape, a Chromebook can be a CAD workstation! Not a great one to be sure, but more than enough for curious learners to get started. (This page has more details on Onshape performance.)

This is why, when I started Sawppy the Rover, I switched from Fusion 360 to Onshape. Because I wanted Sawppy to be accessible to everyone, not just those who have a computer capable of Fusion 360. And I have continued to do so, not realizing another aspect of Onshape evolution had occurred.

This came up on my radar because of my super simple wire straightener project. I’ve shared simple tools before, but this one caught more attention than most thanks to a referral from Twitter (and another). I was surprised to see feedback in the theme of “I don’t have an Onshape account” and was surprised people felt it was a barrier.

When I first started using Onshape, their sign-on screen would direct people to a page where people could sign up for an account. On this screen, a free plan for makers and hobbyists was prominently displayed.

That has been removed, hence the confusion.

The free plan still exists, but it’s no longer on their “CAD Pricing” table and not mentioned in their “How to Compare Onshape Plans” guide. From the FAQ I inferred that it’s not even possible to sign up for a free plan directly, one would have to start a trial for the Professional plan, decline to pay, and be downgraded to the free plan. (I can’t test this hypothesis myself since I already have an established account on the free plan.)

I personally find this disappointing, but I’m not surprised. Onshape is a business and businesses have to be profitable or they’ll disappear. I’m a little afraid this might mean they’re working to phase out the free plan, but even in that case I hope they offer a subscription tier that’s priced reasonably for hobbyists on tight budgets.

LEGO 41611: BrickHeadz Marty McFly and Doc Brown

Today will be a little holiday break from the usual fare… it’s time to play with LEGO bricks!

I count Back to the Future as one of my favorite movie series, a fact known to most of my friends. So it’s no surprise that I had been gifted a Back to the Future themed LEGO set. Kit #41611 from their “BrickHeadz” line of caricature figurines represented our stars Doc Brown and Marty McFly. This is my first BrickHeadz set and I was very curious to see how they would come together.

Our heroes are depicted as they were at the beginning of the first movie, when Doc demonstrated time machine operation for the first time in the parking lot of Puente Hills Twin Pines Mall. Marty is in his puffy 1985 jacket holding a VHS camcorder, and Doc is wearing his white lab coat with radiation symbol on the back and holding the car’s remote control.

These kits minimize appearance of LEGO studs, using a lot of smooth pieces to create the desired appearance. This is especially apparent in the face and hair. Marty had many smoothly curved pieces, whereas Doc had a much more random jumble of pieces to represent his wild Einstein-like hair.

When I poured all the pieces out on the table, I wondered about a few pieces that were brightly colored in a way that did not match the color theme of the character. As I followed instructions, I learned these pieces would not be visible when properly assembled. Hence these oddly colored pieces were designed to be a visual indication if assembly should go wrong. Here’s a partially complete Marty, the bright pink and bright green pieces sit inside the body and head, invisible when properly assembled.

LEGO 41611 1 partial Marty

Once Marty was complete, it was time for Doc. Again, the bright pink, yellow, and green pieces would not be visible when properly assembled.

LEGO 41611 2 Marty done time for Doc

And here is Doc and Marty, ready for their adventures through time. It’s very generous of LEGO to give a few extra small pieces that are easy to lose. Assembling both of them consumed approximately 30-45 minutes, and I enjoyed every minute of it.

LEGO 41611 3 Doc and Marty

 

A Copper Wire Body For Tindie

With the wire spool ready to go, it’s time to tackle a simple starter learning project. For the subject I turned to the simple Tindie blinky badge. The badge itself is a soldering exercise, and now it will also serve as a freeform circuit exercise: I will give the Tindie puppy a copper wire body!

Tindie copper body 4 with tail

There will be two loops of wire, one will be electrically connected to battery positive, other loop will be connected to battery negative. There are two existing positions for LEDs on the badge, and I will be adding a third LED to give Tindie puppy a flashy tail. Each LED will bridge the two loops of wire for power.

The Tindie logo was printed up, scaled so printed head matches circuit board size. Then I start tracing out curves as nominees for positive and negative loops.

Tindie copper body 1 planning

Once I had a plan, three segments of wire formed the positive loop, which has Tindie’s two left legs and most of the body.

Tindie copper body 2 front

The negative loop has Tindie’s two right legs and some duplication of body curvature. I had to make sure it reached back far enough for the tail LED to get power. The two loops also formed a battery holder between them. It was important for the battery to be in the body if I wanted Tindie to sit on paws, because if I used the default battery holder in the head our puppy would topple over from being too top-heavy. And the natural place to put a battery in the body is in the chest, as heart of the machine.

Tindie copper body 3 front and back

Some soldering work later, Tindie is standing on paws of a shiny copper wire body, complete with blinky tail. Since the two loops of wire are only held together by leads of the three blinking LEDs, it is rather fragile. For future projects I need to find additional ways to brace positive and negative loops without short circuiting them. Either more electronic components or non-conductive structure.