Tuesday, October 28, 2014

Omniwheel Prototype 2

I made a second prototype for the omniwheel. The point was to test out a few things:
The knurled shaft on these smaller set of motors is pretty long, so I made the gear the full length of that. That helps keep the fit straight. I will be increasing the channel length of the other press fit gears I print from now on, so that getting them straight isn't a matter of skill with the mallet or arbor press.

The 'tires' are made from inside-outed waterproof heat shrink. The inside is tackier, but you can only inside-out small pieces at a time. The adherence isn't great unless you get the plastic just melty enough to conform to the tire without collapsing/deforming. You have to hand carve away the excess. Not a good method. I've ordered some 'silicone heat shrink' on eBay that will arrive in November; hopefully that product is different than this one. This could work great for beads with larger surface area if it came with the tacky side out.

Previously I had tried Rustoleum Flexible Rubber, but the droplets were far too big and the whole thing ended up being a globby mess. FlexiDip sprayed on nicer with a fine droplet mist but it wasn't all that rubbery. Plastidip seemed similar but a little thinner (more solvent per less payload) but this needs more testing.

Here's a picture of my second desk. HobbyKing batteries arrived today and actually seem like a good fit and weight for my cart robot design. I've already redesigned the cart gearing system, so all that remains to be done for the cart live demo is to figure out a the small gear press fit going on sideways problem, and to resize and refine the motor mounts.



Sunday, October 26, 2014

Omni Wheel Prototype

There was a plan this week to give a very small talk about my robot to a very small group of people. Then it grew into a much bigger event--university departmental computer science talk. Suffice to say, now I'm pretty amped up as well as reasonably nervous.

All this required me to think very hard about what I've been doing, what sets it apart, why it is useful, and to whom. And one thing that came out of that was me realizing that some omnidirectional wheels need to be part of my framework because some users in my talk audience will need them. Existing omnidirectional wheel designs on the web didn't fit my design principles and needs very well. So I designed the one below.

With beads assembled

Frame only

The key things about this design are as follows:
  • It only requires one piece of hardware--some wire. I have some 16 or so gauge steel wire, but you can pick anything that feels right to you for your size of wheel, and input those dimensions into the OpenSCAD file.
  • Everything can be changed easily in the OpenSCAD file. Number of beads, shape and size of the bead, gauge of the wire, etc. This will be more true after some cleanup on my part, when I get it ready for release on Thingiverse and elsewhere.
  • Everything besides the steel wire is 3d printed. It is often easier to 3d print beads than to find beads that fit the wire closely.
  • The 3d print does not have to be split in two in order to print. Assembly is simple and doesn't require any 'finicky steps.'
    • This is because the channel for the wire is opened up, specifically at the point where printing more of the channel would break the 45 degree rule of thumb for 3d printing. It has a snap-in kind of feel.
    • Hot glue can be used optionally to help tack down the wire where needed.
    • The wheel hub/gear module will be added on top in the final version without any fuss. To illustrate how this can be a problem with other designs, consider the version where an enclosed channel is created by printing the wheel in halves split along the central X-Y plane of the wheel. In order to not break the 45 degree rule, you have to print the inside faces up. In order to print the wheel hub though, you need at least one outside face up. (My solution in that case would have been a triangular channel).
I'd like to come up with a few more variations on this, and maybe tackle a similarly informed design for Mecanum wheels or two-layered omni wheels.


Here's a first 3d print. The beads will be spray coated with Flexible Rubber, a product sold mostly for sealing up cars and boats. They'll be loaded on a skewer and finished in bulk, which is an important point when you have this many parts to finish. This will also make it more feasible for me to spend the time to apply multiple layers, to get a good thick rubber tire on each.




Looking good--only minor design changes and a little finishing work is needed for this particular mix of the OpenSCAD parameters to be more than a demonstration prototype.

Oh, and I should mention: this wheel cost about 63 cents! That's 60 cents of 3d printed plastic and a few cents worth of steel wire. The wheel is 6cm in diameter.

Thursday, October 23, 2014

Robot Cart Progress -- It Drives!



First assembled prototype. Preliminary tests show that (a) it is capable of driving smoothly and (b) it doesn't draw too much current for the L298 motor driver. Spent yesterday evening hunting down flyback diodes at Sector and I even found two additional L298s, as well as a handful of extra large breadboard-compatible tactile switches (pictured left, in the background).

The Wixel code for the transmitter is done. Next up is integrating the PWM code to the receiver modules, and creating easy to use skeleton code for competition participants to come in and edit.

I still need to get additional batteries, a suitable USB camera with a good wide angle of view and OpenCV compatible drivers, and a few other parts. So far so good though.

Edit: Minor Setbacks
I bought these batteries from Adafruit and these batteries from Sparkfun. The Sparkfun batteries provide enough current to get the cart moving, but if it hits any obstacle and stalls, this triggers the overcurrent protection. Toggling the power on and off resets this protection. The Adafruit batteries can't even run the motors unloaded (wheels not in contact with the ground). They twitch, then die out (presumably, overcurrent protection). This is a shame, because I purchased them on the assumption that they would provide a maximum continuous 2C discharge rate, which they aren't, as far as I can tell. The datasheet seems to say that (bad formatting on it makes it hard to read).

In any case, Sparkfun's comment system and tendency to better document products on the page makes me feel a lot better about purchasing from them when they have the stock I want. Unfortunately neither battery will quite do for my needs, so I need to go back and rethink this.

Also, I wasn't able for whatever reason to get the wixel-pwm library by dpark83 working for me. It isn't particularly well commented which makes it difficult to use. I did find this simpler code, which works well enough for me to use instead.

Since the price for these robots is already quite high, I'm going to try and re-use some parts around Sector. Namely, a bin of old cheap lithium ion batteries without any protection circuits, and a bunch of scrapped prototypes for a battery board that has no documentation, but a ton of features (presumably). Or, in the interest of time, skip the reverse-engineering on the battery boards, and just triple check to make my circuits don't look too explode-y, and go protection-less. So far I haven't made any really serious mistakes with my wiring prototypes...

Sunday, October 5, 2014

Robot platform in progress

Entire post got deleted while I tried to fix the alignment between the photos shown below. The Blogger WYSIWYG (what you see is what you get) editor is terrible for images, column layouts, etc. In short: I've been working on a lot of things recently, but haven't posted because posting takes time and effort and you need to get good photos of stuff and find a good stopping off point on those projects that never end.

The biggest thing I'm working on now is a robot platform that will be open source. The brain will be the Wixel and the cost will probably be in the $50-$60 to build it yourself. The gear/wheel/mounts prototype are shown below. To give you a sense of scale, the wheels are 9cm diameter and in the assembly shown below, the distance from the wheel to the motor terminals is about 7cm. The first goal for these will be to build seven of them myself and use them to run some fun programming competition aimed at adults/experienced programmers at Sector 67. Past that, I'll probably use these with an Arduino (in addition to, not instead of the Wixel) if I teach a robotics class this summer again.



Wednesday, August 27, 2014

First CNC Project

Walnut box, milled on the CNC (apologizes about the photo quality...point and shoot, nighttime, poorly lit apartment). This is a prototype. The glass circle with paper will probably sit on top of the box, not inside. I'll make another inlay for the circular groove in the top and bottom inside surface of the box. The design will have plenty of variations, and will be the basis for all my holiday gifts this year. I will also probably sell similar boxes on Etsy. There will be lots of variations in the details and embellishments.































The nicest thing about these smaller boxes is that they can be milled out of smaller 'scrap wood.' I have a near limitless supply of this stuff at the hackerspace, all for free. The pieces are usually the leftovers of a larger project, so they are already prepped (in other words, they were run through the planar/joiner). In the spirit of 'waste not, want not' I will probably make extensive use of this materials resource.

Tuesday, August 26, 2014

More FreeCAD

I've been doing more FreeCAD. It works pretty well for me, since I'm making simpler parts. To compare some tools I've used in the past:

  • As a beginner, Autodesk was pretty overwhelming, and I felt like I needed hours of tutorials/poking around the interface in order to find the commands/buttons for the simplest features to make simple parts. Large, resource consuming software, only free for me as long as I am a student.
  • Sketchup was really easy to pick up but annoying to use for engineering/fabrication stuff because it is not parametric/constraint-based modeling software. I was using it for 3D printed parts and a lot of files would not slice properly for reasons that were very difficult to diagnose or fix. Quickly ran into features I needed that were not in the free version.
  • FreeCAD is missing a lot of features I'd like, but so far it has always been possible for me to find a different feature to use in order to achieve the part I want. Free and open-source.

I want to mill some very small boxes out of some scrap pieces of wood, so I designed the box below, which can be easily customized. For a simple piece like this though, it makes more sense to just prepare a set of 2D lines in Inkscape or similar software, which is what I ended up doing afterwards. At the CNC machine, I then use another piece of software to set up all the details of how the machine will cut each vector path depicted in my 2D file.






























Hopefully these boxes work out. If so, I'll make a bunch with different designs and embellishments (engraving, marquetry, decoupage, rock inlay, etc). They will make good gifts. I also think they may sell well on Etsy. It would be very practical to use my hackerspace membership to cover my hackerspace membership fees.

Monday, August 25, 2014

FreeCAD tutorial

I discovered the Windows "Snipping Tool" recently. So here's a mini-tutorial to preface the FreeCAD intro tutorial.

  • If you have Dropbox enabled to automatically upload screenshots, disable that, as it appears to interfere (did for me on Windows 7)
  • Open Snipping Tool and press ESC, so that the text says "Select a snip type from the menu [...]"
  • Set up the shot you want, then hit Control + Print Screen
  • Select the snip type you want and get the shot. The window you had open before will be frozen so you can move the mouse around now without losing hover text and drop down menus.
Since I discovered this, I've been taking the time to document things I learn to do in various software. The main reason is that often I come back later and can't remember some particular trick or button or whatever, and having a screenshot describing it is really nice.

So, here's a FreeCad tutorial along these lines. This version uses FreeCAD 0.14 (except for the first few screenshots, before I realized I should update my old version). You'll want to click on the images to view them at a more reasonable size. We'll be making a very simple square part with some holes. This tutorial goes through everything in detail and step by step, for those of you who find that kind of thing useful.

Step 0: Get FreeCAD
Get FreeCAD here.

Step 1: Start it up
Start up FreeCAD. Click on the top left button (circled below) to create a new project.





















Friday, August 22, 2014

Borrowed Hair

After spending a lot of time on hair experiments, I finally broke down and just grabbed the Mass Effect meshes. I couldn't find anything better for polygonal hair to get started with. I figure I can use these as 'base' models and edit and elaborate on them.

I also heard that the newest versions of Makehuman are supposed to have some new hair models but I can't find them...I got the latest nightly build and it only included the same old, same old... 

I played around with some rudimentary UV unwrapping as well, adding a single eyebrow to the render below. I need to get my Wacom tablet out and start painting again.


For the hair mesh above and meshes in this style, there are a few ways I might use them:
  • Blocky style, as above
  • Carefully wrapped textures with transparent edges, for a wispy look emulating particles
  • Actual particle hair along the mesh lines, possibly with Hairnet
  • As a starting point for sculpting different hair
I'm almost ready to start making a bigger project instead of just endless test renders. I've been introduced to modeling, sculpting, physics simulations, particle systems, UV unwrapping, materials, rigging, shapekeys, keyframing, and more. I've figured out a good resources for inanimate objects, for heads, for bodies, for hair, and for clothes. I can endlessly raise my standards, OR I can get Project 0 in gear and actually start telling a story.

Sunday, August 17, 2014

General frustration

Hair is still proving difficult...playing around with different things but I haven't figured out what kind of hair creation pipeline is going to work best for me yet.

I'm glad sewing weights finally got added to Blender trunk, but of course getting the cloth collision simulation just right is still tricky.

Freestyle still feels a little under-developed for my tastes. It works great for boundaries between objects and stuff, but the crease-based outlining (checking to see if the crease is sharper than some user specified angle) doesn't work so well for organic objects like human faces.

I spent some time thinking about what kind of thing would work well. Say you shoot a ray out from the camera and it intersects with two outer faces of the mesh (you could just deal with faces with normals pointing outwards, to ignore the inside faces of walled meshes), then measure the distance between those two intersection points. If the distance is great enough (compare to user specified value) then that would indicate that the region of mesh in front is sufficiently 'in front' to need to be somehow outlined compared to the region in back...but I haven't thought through that any further, so I'm not sure how you'd figure out where those lines belong exactly. Maybe I can hack something together using Z distance data to camera and the node editor, not sure exactly.

Anyway, to recap, what I'm looking for now:
  • Find a reasonable way to make hair that looks good and doesn't take forever
  • Better understanding of how to choose good physics simulation parameters in general, for cloth, hair, etc.
  • More NPR line drawing styles...

Just for fun, I played around with this face mesh I've been using, and Freestyle. The use of a high crease detect angle for Freestyle (170-175) gives a nice sketchy effect. I'd like it more if it wasn't the only effect I can get for faces. If I turn down the crease angle I'm left with just the eyes and the central line of the mouth, basically.



Shapekeys are still proving to be quite easy; the above took 5 minutes for each (half-shut eyes, slightly parted smile). These results are helping me keep my sanity while I try to get the rest working.

Edge split modifier on the Freestyle generating mesh can help get a bit:


Friday, August 15, 2014

Particle Hair Physics Progress

Alright, some progress on the frustrating particle hair physics.

I checked out this model which uses particle hair which is attached to an invisible scalp. I eventually figured out the invisibility bit (object tab, "Wire" and "Transparency") which was more convenient than my previous method (moving the mesh that created the force field to another render layer). The scalp is copied off the original head then slightly scaled up.






















Having the scalp a bit larger than the actual head helps fix the issue of hair getting stuck on/inside the mesh due to it starting out too close to it.

A quick test to prove the physics is working:






















Next steps for hair:

  • Give the character a haircut, also using different particle system groups for different areas of the hair on the scalp
  • Figure out a way to keep the top of the scalp from looking so bald (see the first image; that seems to happen a lot)
  • Get rid of hair that is still clipping the head, perhaps by adjusting force field settings
  • Play with settings to get different looks (something a bit messier and a little less 'every hair in place')