forum user Justin found a way to improve delta robot accuracy by using Arduino Servo::write() instead of Servo::writeMicroseconds(). And here I thought writeMicroseconds would be better.
Thanks Justin! I’ve updated the delta robot github code to include this fix in the ik.ino file. You rock!
Delta Robot Firmware 11b released
May 17th, 2013Improving the Makelangelo output quality
May 14th, 2013I just ordered 100 v-groove bearings. I’d seen Antonio’s huge Drawbot that used the bearings and I realize now he had to put in the bearings to get decent image quality. I’ve made a special request that they arrive before May 31st. I hope they do so I can build my own enormous drawing robot in time for the Vancouver Mini Maker Faire 2013.
Challenges for this week: Can you help?
May 13th, 2013This week I’ve got a lot of challenges coming up and I could sure use a hand.
Maker Faire & VHS
My local Vancouver Hack Space is moving to a new location this month. I’m helping with the egress crew – that is to say, getting all the stuff out of the old place. It’s about 10h/week out of my time that would otherwise be spent on improving the store. A plan is already firmly in place and ever so slightly ahead of schedule. All I can do is ask people to show up and help move stuff. If you’ve got a truck, van, or car, it would be very welcome.
Get a Working Laser Cutter
The VHS laser cutter is offline until they finish moving it. I tried a few other laser cutters around town and was disappointed with the accessibility, speed, and quality of the work. I’m looking for a machine with these specs:
- need: cuts at least 12″x24″
- need: doesn’t use a dongle
- need: comes with chiller & venting
- need: >60W power
- want: shows up as a printer on my network
- want: warranty
The budget is $5k including shipping and install. Got any leads?
Makelangelo Code Changes
The request came several weeks ago to change the calibration point to make very very large drawings easier. My demo machine isn’t running as well as I’d like and it’s made testing very challenging. A part of me is tempted to release it and wait for the error messages to come in.
Two fantastic users have submitted pull requests to add more stuff to the project. One fixes a rare race condition. The other stores pen up/down settings in the arduino EEPROM, which means a firmware upgrade. Both change a bunch of project settings and need to be merged into the current version.
I don’t know a way to make this code more open so other people can apply the patches themselves. Ideas?
Kit upgrades
I’m waiting on parts to arrive from Hong Kong that should greatly improve the range of motion in the delta robots and the stewart platform. It’s take a year of negotiating with 3rd party “finders” because the factory won’t deal direct. If they work as promised then I’ll be over the moon with joy. In any case for the moment I am actively telling people to wait so that they get the upgrade coming soon (I hope). Is this the right way to do business? No. Is it the right thing to do for my customers? Yes. Does it make it harder to do business? Yes, in the short term. I believe treating people right is how to make loyal fans, and my business runs on word of mouth.
…and all the rest
RFPs, artist’s projects, existing long-term customers… it’s at a tipping point: I need more help but I can’t afford it and if I had it already then I could probably afford it. I guess I need to get into subcontracting? Your thoughts are appreciated.
What products do you want to see in the store?
May 10th, 2013I’ve been looking for a part that will improve some of my kits for more than a year now. Some samples are finally in the mail and while I wait I’m going slightly crazy. It makes me wonder how many of you might be in the same boat. Heck, it’s not even a boat. It’s a piece of driftwood and on the side it says “if only i had this one thing I could move forward on this project”. I hear that line a lot and it makes so sad. To me nothing sucks more than having to wait for someone else. That’s why I do everything I can to ship kits as fast as possible and with zero mistakes.
But back to my point! So far I’ve only been stocking parts that are (or have been) used in my robots. I think it would be cool to add that conductive paint I’ve been reading about, or shapelock, or sugru… but I don’t want to invest good money if nobody’s interested. So, please, share with me: What parts, materials, or tools are you looking for? I’d be happy to make a bulk purchase to make it less expensive for everyone. Help me help you and we both win.
In the same way, what kind of robot would you like to see? Lawn mowing robots? Chore doing robots? Machine that throws balls for your dog? You tell me.
Makelangelo Day, May 6 2013
May 6th, 2013Today is a Makelangelo day. I’m working on patching bugs reported by users, updating the wiki, and prettying up the photos on the website. Got anything to contribute? Let me know!
Moving VHS 3.0 to 270 East 1st
May 5th, 2013
In this scene our heros are building a staircase to lower the 400kg laser to the pavement. In the distance the regular delivery has to back his truck out of the alley.
Together we moved the laser cutter, the gumball machine, the fume hood, the MAME arcade machine, the fridges, and a CNC machine from storage and brought them all to the new space in a 24′ Budget truck. Ever used a dolly, a lift gate, or a pallet jack? You would have today! Ever sawed, nailed, hammered, measured, or drawn a plan? That would have been today, too. Oh, and the snacks. I think I ate about 6 doughnuts and I burned all those calories before lunch climbing stairs, dismantling the wall around the laser, lifting a fridge down the stairs… and I wasn’t the hardest worker. Matthew, Kevin, SDY, Mike, Inez, and Richard were there all morning making it happen and being really supportive of everyone there. Ken showed up having just heard of the hackspace and spent the afternoon with us putting the exterior door back on and helping unload at the new space.

Richard is wearing safety gloves. Weeks after it has last been fired and it is still hot from residual laser radiation. Richard is a wild man.
Oh man, I should have taken a picture. The space is SO BIG. There’s a huge overhang at the entrance for parking your bike out of the weather and then a roller door big enough for a troll and a short hall that opens onto a cavernous space. Ballroom dancing easy in here. In one corner there’s the top half of a concrete staircase. I could totally picture Smeagol up there, rubbing his One Ring.
Tomorrow if the good lord’s a willin’ and the crick don’t rise we’re going to use what’s left of the truck rental to pick up the benches we got from Nokia and start putting them together at the VHS. That way we’ll be able to start bringing in stuff as soon as Luke finishes the section of wall they’re building. That’s going to take place during the week and on the weekend of the 11th and the 18th we’re going to bring over everything else, biggest things first. Everything from here on out can fit into a van or truck so we should have any big surprises.
Stay tuned for more later!
Vancouver Hack Space is Moving
May 2nd, 2013Vancouver Hack Space is moving from 45 West Hastings to 270 East 1st Ave. This will mean ground floor, wheelchair friendly access and 2000sqft of extra space to work in. I’m coordinating the load-out from the old space which means a lot of my Marginally Clever work is going to suffer over the next month. Also, the girlfriend will be sad because I’ll be busy every weekend hauling boxes.
More importantly to you, dear reader, is that the laser cutter I use to make parts will be out of commission. So I’m looking to Sell my CNC machine and get a laser cutter instead.
New Camera Bought with Bitcoins
April 29th, 2013I finally have my new Canon Rebel T3 that I bought with Bitcoins. I’m going to use for new product photography. I’m just waiting for the batteries to charge now. So excited!
Building a Better Product Catalog
April 24th, 2013Theory
As much as I love ZenCart, it has limitations. One of the things I’ve never seen in an online shop system is an understanding of package deals. For example, I have kits that are made of parts. Every part is available (or should be available) in the store. The price of kits should change whenever I change a part price, and the quantities of parts should change whenever I sell a kit. ZenCart doesn’t understand either of these things so I’m left to do a lot of manual work. Call me lazy but I don’t like doing work if I can make the machine do it. As my good friend Steven says, “if you have to do it more than twice… automate it.” Happy 30th, Steven!
Details
So, where was I. Oh right! So I’m building a new database that has all my inventory in it. The mysql table looks a bit like this:
| Field | Type | Null | Key | Default |
| id | int(10) unsigned | NO | PRINULL | |
| SKU | varchar(32) | NO | PRINULL | |
| next_id | int(10) | NO | 0 | |
| prev_id | int(10) | NO | 0 | |
| name | varchar(64) | NO | NULL | |
| qty | float | NO | 0 | |
| supplier | text | YES | NULL | |
| weight | float | NO | 0 | |
| description | text | YES | NULL | |
| MSRP | float | NO | 0 | |
| bulk_purchase_qty | float | NO | 0 | |
| bulk_purchase_cost | float | NO | 0 | |
| bulk_import_fee | float | NO | 0 | |
| unit_cost | float | NO | 0 | |
| video | varchar(128) | NO | ||
| data_sheet | varchar(128) | NO | ||
| unit_purchase_cost | float | NO | 0 | |
| video_quality | enum(‘missing’,'poor’,'ok’,'exemplary’) | NO | missing | |
| image_quality | enum(‘missing’,'poor’,'ok’,'exemplary’) | NO | missing | |
| description_quality | enum(‘missing’,'poor’,'ok’,'exemplary’) | NO | missing | |
| data_sheet_quality | enum(‘missing’,'poor’,'ok’,'exemplary’) | NO | missing | |
| margin | float | NO | 0 | |
I also have a table that describes inventory as one-parent-to-many-children. So a single inventory item can actually be made of many other inventory items.
Opportunities
- every version of every item has a unique SKU code.
- If I change a part in an inventory item completely it will assign a new SKU and adjust the prev_id and next_id. It could automatically update descriptions to say “this product has been replaced with [hot new version]” or “This is a replacement for [old and busted version]“.
- When an inventory item is updated my catalog will automatically adjust the price.
- When I make a sale of a kit that has parts it will automatically adjust the product quantity of each part. It can then list parts and kits as out of stock if necessary.
- Because I will have accurate inventory control I can predict when parts will run out and order replacements just in time. Less money sitting on the shelves waiting for someone to buy.
- The system can track who got what version of what order, and it will be a lot easier to produce a Bill Of Materials (BOM) and cross-check it before each kit is sent. It also means if someone has a problem with an older model I can track info on that version. “Oh yeah, that was a big problem in the ’38 Mark IIs – they fall right out of the sky” or “Well, I see here that minion 24 signed the papers saying this kit was OK to ship on last Tuesday. I’ll be sure to have him… corrected.”
Costs
Time. I’ve written a lot of PHP in recent years so it’s no sweat to pull together the core systems. I’ve already got a LAMP server running so that’s basically free. So far I’ve imported my old excel sheets full of inventory into the new database.
This afternoon I’m going to play with Arduino joysticks (as promised) and tomorrow I’m going to copy in all the parent > child relationships and then build logic to control what happens when and how. All the while my 3D printer is making delta robot parts and hog drives for happy customers.
Friday I have a disgusting pool to clean, Saturday I don’t know yet, and Sunday is a 5k run in my neighborhood. Some time next week the camera I bought with Bitcoins will arrive and I can start to take new product photos, at last.
The work never stops here, and I wouldn’t want it to – I’m having too much fun!






