This post deals with some of the practicalities of DIY reverse engineering. I’ll go through the way the mouse was measured and modelled, talk about some of the tricks and pitfalls, and the things I’d do differently next time. As I mentioned in the previous post, the scenario I’m working to is that of someone reasonably skilled at CAD modelling but without access to expensive 3D scanning equipment. That person models the mouse and makes the files available for download by others. To simulate this I’ve only used commonly available tools for measuring. To make the CAD model I’ve used Solidworks, which I admit isn’t the most readily available bit of CAD software, but my argument would be that anyone committed enough to reverse engineer a product in this way will be able to get their hands on a copy, one way or another. My own copy is legit, just in case you were wondering.
Measuring the Mouse
Tools for disassembling and measuring
In no particular order, the tools I used for disassembling and measuring the mouse were as follows:
Ruler: actually not used that much, because it’s not accurate enough. But okay for checking measurements quickly.
Vernier Calipers: the most used item. These are analogue so not quite as easy to use as digital, but they’re cheaper, and just as accurate once you know how to use them.
Torx Screwdrivers: in truth these weren’t needed for the mouse, which has been assembled using pozidrive screws. That was a bit of a surprise, and I’d expect that anyone reverse engineering consumer electronics products would find themselves needing these pretty quickly.
Scalpel: for cutting through and removing adhesive labels
Mini Screwdriver set: for unscrewing small screws, as if you couldn’t guess
Anti-Static bag: once I’d removed the pcb I kept it in here. To be honest I’m not sure how necessary this is – I’ve never destroyed a pcb just by handling it. But it’s a cheap enough precaution if you want the product to work when you rebuild it.
Earthing strap (not shown in the picture): again a cheap precaution, wear it around the wrist and attach to a radiator pipe.
These tools are enough to start taking some accurate measurements, but they’re a long way off being able to provide all the measurements needed to recreate the mouse in CAD. One of the reasons for choosing a mouse, and this one in particular, for the exercise was that the split lines between different parts follow some quite complex curves (by that I mean curves which are splines rather than arcs, and which lie on more than one plane). These curves are impossible to measure using conventional equipment, so instead they were photographed, and the images taken into Solidworks so the curves could be traced. To take the photos I used a Nikon D40X SLR mounted on a tripod, with a 28mm lens (at the time I didn’t really appreciate the affects of distortion. Big mistake, as I’ll talk about later). I also experimented with a flat bed scanner but this was only effective on the flat base of the mouse.
Side view of the mouse
Side view of the mouse, with curve sketched in Solidworks
The 3D profile of the curve (click for larger image)
Even before I began it became apparent that the photos I’d taken weren’t as accurate as I thought. Since there was no way of shooting all the photos (of top, front, side, rear etc) from a fixed distance, I knew I would have to resize them some in Photoshop. But when I started to overlay the images in Photoshop it was clear there was a degree of distortion in some of the images, so that they didn’t line up correctly, even when re-sized. If I was doing the same exercise again I would have re-shot the photos using a 50mm lens (I’m not exactly sure how much this would have improved things, but from what I’ve read it would have helped), but instead I manipulated some of the views using the Warp command. This was a mistake that would have ongoing implications further down the line…
Modelling the Mouse
Rather than take a whole series of measurements and then start modelling, the workflow was more along the lines of ‘start modelling, then measure where required’. I followed what – for me - is a fairly standard modelling process, working purely in surfaces, on one half of the model, to begin with to get the overall shape, then mirroring and knitting to get a basic solid, and then splitting the solid and using solids or surfaces as appropriate on the individual parts. In this case the mouse was made up of three parts as the exploded view of the finished model shows.
Exploded view of the Solidworks model (click for larger image)
As I began modelling one thing I realised I had to do was decide how closely I wanted to replicate the original parts. For example the side view of the mouse shows a very distinct witness line created by the shut-off of the injection mould tool. This is something that most designers would normally try to avoid – I certainly wouldn’t be happy handing off a part like this to a client – and replicating a visually ugly artefact of a process I’m not using is clearly a folly: since additive manufacturing doesn’t use tooling there’s no requirement for draft. On the other hand as the line runs around the back of the mouse it’s obviously been detailed as a strong feature, which defines the smoothly sloping upper surface from the curving underside. Removing the draft altogether would lose this feature in a bland blend. In the end I kept the hard edge all along the bottom to the point where (on the original part) it angles upwards, but instead of replicate this angle I made the line run around the front. This was probably the most noticeable difference between my model and the original, but the new parts contain numerous, smaller details where similar decisions were made.
Witness line on the original mouse body
Modified line on the modelled mouse body
It was at the point where I began detailing the structural elements of the mouse – ribs, snaps, screw towers etc – that the weakness of relying on the photo images really became apparent, and so the necessity of measuring the original parts increased. Even though I had shot the images at the camera’s highest resolution (10 megapixels), when zoomed in the graininess of the image meant any measurements were only accurate to about 0.4mm, whereas I was working to a tolerance between parts of 0.2mm. What’s more the part with the most features, the base of the mouse, is moulded in a translucent plastic, which makes reading the photographic image even harder as it’s not always clear which edges are which. For these reasons I relied mainly on the vernier calipers at this stage, and it was here I really began to appreciate the problems which the distortions of the camera’s lens had introduced. As I measured features and their positions, and began adding them to the CAD model, it became obvious that they just didn’t align with the their positions on the photographic images. The worst discrepancy I identified was 3.1mm, and if I tried to fudge things a bit in one orientation it just made things worse in another. And so there was no option but to accept that I couldn’t rely on the images, and to go purely by my measurements. Not only was this a lot more time consuming, it meant I needed to go back through the whole model and try to find the obvious errors.
Of course, for reasons I discussed above it’s impossible to work purely by measurements on the curved surfaces of a product such as this mouse. So I was forced to rely on tracing contours from photographs, even though I knew the photos weren’t accurate representations of the product I was modelling. At this stage the best thing I could have done, in terms of creating an accurate model, would have been to re-photograph the product and start again. But that would have meant discarding almost a month’s work, which was something I couldn’t face. In this instance I decided to continue and hope I could catch any errors after the first round of prototypes, but it’s something I’ll be very wary of in future.
One of the advantages of working in a CAD package like Solidworks is that it’s very easy to catch errors in assembly. I tend to work inside single multi-body parts, which I think makes these kinds of errors less likely because you can easily see all the parts of your product without switching into and out of Assembly mode. But errors still happen, and so tools to check interference and clearance can save a lot hassle. Here’s one that I caught, where a boss from the button cover locates on a flat surface of the main body.
Solidworks’ interference check interface (click for larger image)
And finally, here’s the finished model. The next stage was to output in .stl format and make some physical parts, which I’ll cover in the next post.
The finished model, rendered in Keyshot
X-Section through the finished model (click for larger image)