Go print your girlfriend’s skull right now!

As it turns out, the reason they give you the CD after you take an MRI or CT scan is not to show other doctors, but to print your own (or your girlfriend’s) body parts.

After reading a few great blog posts about selecting areas of interest from these scans and making a printable version of them, I managed to create a printable STL file of my girlfriends’ skull. These posts were good, but either I couldn’t read the DICOM data into the software they used or the latest version of the software was different. In the end I used 3dSlicer and Autodesk Meshmixer to create the model.

You can get 3dSlicer here. Start it up and load the DICOM data from the CD.

LOAD DICOM DATA > Import > Choose directory with all the scan files > Choose to copy files to local directory rather than just link them > Select patient > Load

Now that all the data is loaded, go to All Modules > View Controllers

Here you can choose the Axial Sagittal and Coronal (X, Y and Z, maybe not in that order) slices.

Once you’ve done that, the slices have to be centered in the three viewing windows. To do that you first have to click on all three eyes to set the visibility to on, for each view. Then, each view has a small crosshair shaped icon (upper left of each black view window) which you have to click to center the slices in their respective windows. You have to do this for each view.

3

Once all slices are loaded a label map can be created. A label, apparently is an area which you can select in all the slices (or something similar). We’ll use this to separate the area that we need to print.

Choose the Editor module from the Modules menu. The Master Volume is the direction or view that will be converted to a 3d model. Some work better than others, in my case the axial view had a better resolution (smaller distance between individual slices). The merge volume is the volume that will be referenced later on when creating the model. Make note of this name. Next, click on the icon with a gradient pictured. This is the Threshold effect. Basically you set some limits with the range slider and you look at the three windows to see which areas are glowing. These areas will make up our 3d model. After setting the threshold limits, take a look at what number the label has. The idea is that you can use different colors to highlight different areas at the same time and each will be a different label and have a different number. Make note of this number. Now click Apply.

4

Next, the model is created after the label map. Go to the Model Maker module. Here set the Parameter set to Create new command line module. Input Volume will be the name I previously mentioned to note and in Models choose Create new Model hierarchy. Choose a Model Name. Now, under Model Maker Parameters in the Labels field, fill in the number of the label previously noted. The filter type I used was Laplacian. You can also play around with the smoothing and other sliders. Now click Apply.

6

In order to save the model click on the save button in the upper left corner and choose only the model you just created with the Model Name, name and from the dropdown menu choose filetype: stl and the path where you wish the file to be saved.

8

Now open the model in Meshmixer. I first used the Inspector from Analysis to repair any mesh problems, with the Smooth fill option.

10

From Edit > Separate Shells is used to separate unconnected parts of the model. The object browser opens and you can delete the other shell parts and keep the one that’s needed.

11

To smooth the ridges left between the CT slices, I used the BubbleSmooth brush from the Sculpt menu and smoothed all areas that were rough.

I also cut the skull in half to print it more easily with the plane cut tool from the Edit menu.

12

Here is what the model looked like before exporting:

skull_final

Now export the model as an Stl file and get printing!

I used supports for the lower half printed upside down and no supports for the upper half. 0.2mm layer height and 30% infill. After printing, the parts were acetone welded together and filed down imperfections. The seam is still visible for now.

 

Go print your girlfriend’s skull right now!

3d Printed – Arduino powered Lazy Man’s Tea Steeper

While working on the HL2 Turret project I made myself some tea. Heat up water, add tea bag, forget tea bag in said water, drink horribly bitter tea. After repeating this process several times I got a bit fed up and decided it was time to fire up the printer and solve this very /r/Britishproblem. Luckily I had some terrible 9g servos and an Arduino Pro Mini to use.

dunking_small

Not having a lot of time on my hands, I decided to limit the design process to only two hours. if it could be done, great, if not, drop the project. Granted, I gave myself one hour before that to think about how this tea steeper should look and work. The good news is, I managed in only 1.5 hours but some mistakes were made.

The red servo horn is designed with ‘tabs’ because I thought it would be a good idea to file the axle of the servo to get better torque transmission through the joint. Bad idea. There is no torque to speak of in this design. It’s a damn tea bag. I drilled out the holes and it’s just an interference fit with screws now. This way the initial position of the horn is also adjustable. Another thing is that I made a hole in the purple case for the servo cables to go through. Never thought about the connectors and they didn’t fit. I filed the hole bigger and eventually cut off the connectors because they wouldn’t fit in the case anyway. D’oh!

fusion_overv

While the parts were printing I decided to get started on the software side. After 3.5 hours of trying and failing to correctly calculate the inverse kinematics I was already tired and decided to just used predefined angles for the home position, lifted position for tying the bag to the servo horn and the dunked position. There also is an intermediate position for repeatedly lifting and lowering the bag to get it to fill up and stay vertical.

Once the print was done I acetone welded all the parts together and thankfully it came out great.

Basically, when powered on, it waits for you to hang the tea bag on it, then dunks it three times then waits for three minutes and lifts the bag up to let it drip. Perfect tea every time!

All in all, I used only 8 hours for this project. Which isn’t too bad. Future improvements include an LED or RGB LED to indicate status or time remaining to brew, and inverse kinematics for the servo positioning.

If anyone is interested, I’ll publish the CAD files also (Fusion 360 and STLs), and maybe the sketch (although it’s not really well made).

Edit: Get the .Step file here.

Your Majesty, I am ready to be knighted!

e0wuums

3d Printed – Arduino powered Lazy Man’s Tea Steeper

First Youtube Video Published! Also, 3d printed lcd pcb enclosure!

Okay, so I published my first Youtube video. I was really nervous while filming and I may have made one or two mistakes in editing and filming. So please, comment on the video to help me improve!

I needed to see what I’m filming while I’m doing it and a 7″ LCD left over from another project came in handy. The problem is that the enclosure was long gone and I also wanted to mount it on a small tripod.

This is what the final product looks like. I’m using a Li-po to power it, maybe not such a good idea but it was available.

DSC_2404

Besides the usual measure once print twice issues, in editing I heard a hum or buzz when I powered on the LCD, maybe someone knows what that’s about so please comment.

Check out the video here.

  • Parts printed in ABS
  • Layer height 0.3mm
  • Raft settings: 0.2mm air gap; Surface layers: 1; Extra margin: 4mm
  • Slicer: CuraEngine
  • Host: RepetierHost
First Youtube Video Published! Also, 3d printed lcd pcb enclosure!

Making a heat bed support for the Prusa i2

After searching for a proper plate onto which I could fix the heat bed of the reprap I decided I would make it out of square tubing.

Here’s what I tried:

Aluminium profile at each set of linear bearings.

IMG_20150928_204602

That was a bad (read stupid) idea because, not only did it limit my Y axis travel but it also allowed relative displacement between the two aluminium profiles because they weren’t connected between them. This caused issues when leveling the heat bed. The torsional stiffness of the bed while adjusting would lift one corner of the front profile and lower the opposite corner on the back profile. BAD.

One thing to note here is that where I am based, thicker plywood is not really available, which would have been ideal. I did try to use hobby plywood but that was a worse idea than the aluminium profiles. When the heated bed was turned on, the plywood quickly developed a beautiful arch. In hindsight, I shouldn’t have even considered using thing plywood.

An aluminium plate would also have been great but it would have also been expensive and difficult to cut nicely.

Therefore I decided to go with 12mm square tubing silver soldered together and then painted black to prevent corrosion.

After soldering the tubing, I drilled all the necessary holes with one side having a hole big enough for the head of the screw to go through and the other side just a pass through hole. Like so:

screw

I also added aluminium tape over this structure to radiate the heat back to the heat bed. This decreases heating time significantly.

Making a heat bed support for the Prusa i2

Making a 3d printed functional Half-Life 2 Turret Part 1

Edit: Youtube Series on the way! Check out my Channel.

After finally having gotten around to building a 3d printer of my own, and being inspired by youtube videos I thought about making a “real” HL2 turret/Sentry Gun. And by real I mean the turret body should rotate side to side about 90 degrees, the machine gun part should move up and down and be able to point the gun and body towards a face. The gun will only probably be an led or something safe like a pellet gun. Edit: Oh my God, not a pellet gun! I thought they’re something else. Definitely not a pellet gun.

Pepakura 3d view

I will be using a Raspberry Pi for the brains of the operation. The basic idea is to have the Pi connected to either a webcam or a Pi camera mounted in the body of the turret and with a little image recognition identify the height and angle of body rotation at which a face is found and then via the serial port command and arduino to move the servos, change LED colors and so on. Of course, it will be able to play the turret sound from the game.

But how does one get started on such a project anyway? Well I did some googling and I couldn’t find any 3d models which I could use as a basis for my 3d printable, functional model, and the pictures I could find online with the turret were all isometric views which I couldn’t exactly use as a reference.

After a bit more searching, I stumbled over a paper craft model. There are a lot of these models available. After downloading it (I can’t find the link but I’m hosting it on google drive), I saw it had a  *.pdo extension. What is that? Well, apparently it is a pepakura model and it can be opened with Pepakura Viewer which you can find here. I opened it, and guess what? It’s perfect for the scope of this project. On the left side of the screen you get a 3d view of the paper model and on the right you have the unfolded printable version of it. The 3d view will be perfect for taking snapshots of the model to insert onto sketching planes when creating the robotic version. Not only that, but you can click on the various parts and they’ll be isolated to increase visibility on that part.

Pepakura Viewer 3

So now I’ve got a good starting point. But what about scale? Well it sure won’t be 1:1 because that would be a bit too much to print, but what I did was to create a block shape the size of the raspberry pi, the brains of the operation and then scale the image of the turret until it fit into the body. Then, one by one I started sketching out the parts and assembling them. I started the project in Solidworks 2010 but I wanted to try out Autodesk Fusion 360 because it’s free so I transitioned to it by outputting the Solidworks assembly to a .STEP file and importing it into Fusion. It worked great.

assembly

One important issue with the functionality of the turret is that the panel on which the back leg is mounted interferes with the body when in search mode so it would be impossible for the turret to rotate when assembled. The front legs are a bit easier because they mount on a plate which is positioned directly under the body and would make a great axis of rotation. So for the back leg I decided it would be easiest to just extend the plate downwards until it can be solvent welded with acetone to the front legs plate.

pepa_outsideoutside

 

 

 

 

 

 

 

 

After some deliberation I decided to use two bearings on 8mm threaded rod to enable the body to rotate and then used a mini or micro servo as an actuator. I’m a bit worried about using a small servo for the rotation of the turret because the movement should be smooth and I’m not sure how much torque will be required once the entire thing is assembled. Although right now, the bearings seem to be really easy to rotate. I’ve also printed some servo “horns” and I used a 2mm steel wire to connect the two (not pictured). It should be enough for only 90 degrees of rotation. Another possibility I considered was using a small stepper motor and belt drive, but I’ll leave that as plan B in case I get issues with the servo.

The bearing holder will be solvent welded to one of the base halves and the other half has two recesses in order to support the turrets weight once both halves are mounted.

Also, to get the back leg plate to fit onto my print bed I cut it in half and It will be solvent welded during assembly.

I there is interest in this subject I will make the CAD available for free. I think a Youtube series would also be nice.

Making a 3d printed functional Half-Life 2 Turret Part 1

Stepper motor controller shield

If you need to control some stepper motors for a 3d printer or a CNC machine, you need a stepper motor driver. Usually, these come with parallel port connectivity and if you don’t have a parallel port on your PC or you want to drive your CNC machine from a Raspberry Pi, then you have the choice of either using a USB to parallel adapter, or you can use a microcontroller.

A friend purchased a chinese stepper driver based on the TB6560 and needed a way to run the steppers from an arduino, so I made a shield for this purpose.

 

 

The design is made in Eagle using the pinout information of the stepper driver from this website.

You can download the schematic and board here.

Stepper motor controller shield

Arduino powered quadruped update

Long time no see…

I should have written this a long time ago, but things have gotten in the way…

The arduino quad has come a long way since my last post, it’s built and it has gone through a couple of circuit revisions and software variants. I had a lot of problems on the way and I still haven’t fixed most of them.

Anyway, I decided to build it from FR4 which is PCB reinforced fiberglass. I love to build using this material because it’s very strong but still a bit flexible. The disadvantage of course, is the fact that you have to etch the copper off the board before you cut it and a lot of fiberglass dust is created when working with FR4 and that’s not really good for your health.

On to the build

Having a 3d model of the quad made in Solidworks, I made the drawings and printed them out to scale, then cut out the paper parts, marked them on the FR4 and used a coping saw and a dremel with a thin cutoff disc and abrasive cylinders to make and finish my parts. This took about half a day. I went through about 5 coping saw blades because the dremel made a lot of fine dust which made a mess but the saw made courser particles and they were easier to clean up, plus, there’s a smaller chance to screw up with the saw going slowly.

I assembled the servos on to the parts using the screws that came with them and the circular horns. No issues here.

Electronics

I designed the shield for the Arduino in Eagle and made a few mistakes, for example not taking into account the length of the servo wires. I just put all of the headers in a line and some of the wires were stretching a bit when the legs were fully extended.

Another mistake was the method used to supply 5v to the servos. I hadn’t expected them to need more than 1.5A. Biiig mistake. I only put a 7805 voltage regulator on the shield with a big heatsink and, obviously, it didn’t last more than a few seconds. After reading some posts online about supplying power to a lot of servos I found that due to their design, you can’t put more 7805s in parallel because one of them will take most of the load, so basically I had to choose between a UBEC, which is basically a switching regulator, and no regulator at all. The problem with the UBEC was that I didn’t have one and 6 amp UBECs are over my budget, but this would be the most efficient way to get the power down from the LiPo’s ~8V to the 5V I needed. So I decided to take a risk and go without a regulator hoping that 12 servos would cause a big enough voltage drop to not cause problems. Baaad idea! Apparently servos don’t run without smoke in them, and as soon as one of them let the magic smoke out, I decided that I needed another solution to my voltage problem.

After a couple of weeks of pondering whether or not to buy a UBEC, it dawned on me that it would be possible to use a voltage regulator for each of the four legs thus each regulator would have to supply only three servos. The second version of the shield included a header for a Sparkfun Bluesmirf Silver bluetooth module which would allow me to send commands to the quad from a phone or a PC. Naturally, I didn’t account for the thickness of the heatsinks that would be mounted on the 7805s and I had to unsolder two of them, mount them on a single heatsink and run wires to the board… oh well. At least now I have a good power supply (even though some decoupling capacitors would have been a good idea now that I think about it).

Moving on to the main problem of this quad.

The jitter

The jitter is strong in this one… Due to the fact that I’m not using PWM pins on the Arduino because there aren’t enough, after a lot of googling, it turns out that arduino can’t supply a constant signal to the servos and this results in twitching of the servos. Basically, every 20ms you send a high signal to the servo.  The time you hold the signal high determines what angle the servo goes to. The problem is that the arduino isn’t able to produce signals of consistent width. It’s either this or the cheap servos. Or both. If it’s the servos, I’m scrapping the project. Because of this, I haven’t really concentrated on the gait program, the only thing I did was the inverse kinematics.

 

After thinking things over, my conclusion is that dedicated servo hardware is needed. So i found the PCA9685 (datasheet) which is a I2C bus PWM LED driver with 16 channels and 12 bit resolution. This means that I only need two arduino pins to control all of the servos and I can add a few more for sensors or something. By the way, if this fixes the parkinsonian behaviour of my bastard four legged child then I will consider replacing the arduino with a Raspberry Pi which opens up a whole new world of possibilities.

I got the idea to use the PCA9685 seeing that adafruit made a servo driver with it. Because shipping would cost more for me than the board, I ordered the chip from Mouser and plan to use it in the third version of the quad shield using the schematic from the adafruit board. I found it only in a SMD package so this means the quad will get its first double sided PCB. I started designing the shield on circuits.io but before being able to complete it something went wrong and now I can’t edit it nor view it. Half a day down the drain I think.

The third version of the shield will have the PCA9685, two additional servo headers, the bluetooth module header, and if I have room, a voltage divider for measuring battery voltage.

Arduino powered quadruped update