Arcus-3D-P1 - Pick and Place for 3D printers

Open source, mostly 3D printable, lightweight pick and place head for a standard groove mount

Similar projects worth following
Part rotation and bottom looking vision using two 9g digital hobby servos.

Bottom vision is currently implemented by using the top vision and a flying set of mirrors.

At 59 grams including the camera and mirrors, it weighs about the same as an E3D v6 hotend.

Standard groove mount, so you can just replace your hotend.


A pair of 9g digital hobby servos are utilized for part rotation and swinging a set of mirrors in front of the top vision to allow it to also provide the bottom vision.

360 degrees of part rotation is implemented, has an accuracy of about 1.6 degrees, and a best case rotation speed of 0.13sec/90 degrees.

The mirrors should be able to extend or retract in 0.19sec.

Full rotation and clearance for parts up to 21.5x21.5x12mm is implemented. 

The current design including the camera weighs 59 grams which is lighter than an assembled E3D v6, and the goal is to allow this to fit in its place.

This should allow adapting any existing 3D printer with decent accuracy, Z axis speed, and a stable build platform for small scale pick and place.

Other parallel projects are addressing some of the remaining requirements such as an inexpensive vacuum source, 3D printable tape feeder, and 3-way valve.


It should be noted that the cheap, knock-off version servos will not work here for part rotation.  The measured accuracy of the knock-offs was almost 5x worse and they had significant backlash as well. This almost killed the project before it started as that was my original servo for testing.  

However, I was pleasantly surprised when I tried some still relatively inexpensive, but genuine manufacturer servos.  In this case, they were Tower Pro.  They exhibited basically zero backlash (as the potentiometer is tightly coupled to the output shaft), and accuracy within 1 degree for most of the scale.  As I'm using a 2:1 drive, that puts the overall accuracy at about 2 degrees.

There would need to be compensation for linearity if I used these for absolute positioning and temperature/timing issues could cause drift, but the nature of this task is relative if approached correctly.  You pick up a part, rotate, check the positioning, and then rotate it relative to the previous position.  This pattern will inherently correct for drift related errors.  They should perform that task just about as well as the common Nema 8 stepper solution.

Another caveat is that if the requested motion is less than 2 degrees, the servo sometimes doesn't move at all.  So I'm anticipating needing to code a minimum move size which backs off and then rotates to the target to compensate.

Lastly, a flying bottom looking camera doing vision during moves requires special sauce to work in OpenPnP.  It does have a defined path for implementation though.

A couple of these things may require modifications to OpenPnP to work, but I think the result will be worth it.

  • Make it work first..

    Daren Schwenke11 minutes ago 0 comments

    There are a number of ways forward with regards to what is going to live under the Raspberry Pi, but all of them have a current, active roadblock except for one.

    I'm going to use both a Beaglebone Green and the Raspberry Pi for now. Comparing the hardware costs, I might actually leave it that way.

    Basically I want the smoother acceleration and ease-of-use that Machinekit gives me, but I also wanted to be able to run everything on the pi. Software-based step generation works but not at the data rate that I'm going to need to take advantage of how insanely low the mass is which my steppers need to throw around.

    If I run a high step rate, I can use micro stepping on the drivers at the max, and since the loading on my steppers is so low, it'll actually be somewhat accurate.  Accurate microstepping means I could run a slightly larger spool diameter and go faster. I'm not going to do that though as having the extra accuracy will allow me to push the edge of the build envelope out a little bit instead.

    Keeping that task on the Beaglebone lets me use the PRU and therefore generate very accurate steps at whatever rate I want, way, way faster than I can actually push the driver chips.

    So the end result is I'm going to have two computers in there but that's fine, as the cost is about the same as adding all the little bits i would need to add without having it. The Beaglebone can deliver them all and then some.

    Decision made, I wired up the Pi and Beaglebone, steppers,  basically everything I'm ready to mount yesterday. 

  • TPU vibration isolators.

    Daren Schwenke2 days ago 0 comments

    Spent some time refining the model for the 3D printed vibration isolators today.  It's a lot easier to print now.

    I cut one of the failures in half so you can see what it looks like on the inside.

    They fit in the oversize mounting holes on my stepper mount.

    Sliced in Cura set to 1 wall, 2 top/bottom layers, no infill, and over extruded by 20%

    I fit all the parts for the base today, then disassembled it again.  The second coat of lacquer is drying now.

    Assembly tomorrow. 

    EDIT: A day later, and the paint is still too soft to work with it.

  • Silicone, sucks.

    Daren Schwenke3 days ago 0 comments

    Given the choice of placing your can of silicone lubricant you use to clean and lubricate the balls and pushrods on your printer next to it, in the same general area as your hairspray, don't.... ever.... do.... that.

    I grabbed the silicone instead of my hairspray and started to spray my bed... for a split second, once.... for one part... and have been paying for it ever since.

    I've now lost 4 prints due to adhesion issues, which basically never... ever.... happens for me.

    The silicone has seemed to sink into my granite bed rather readily, and so my stupid mistake has been very difficult to eradicate.


    Another round of razor scraping and acetone, and... 

    Printing...  again.

  • Wood-working, Take 2.

    Daren Schwenke3 days ago 0 comments

    Since I finally have my rod positioning settled again, I could move on to building the base.

    Routed out a circle on one end of my 2'x2' piece of oak laminated particle board.  I'm going to wrap the outer edge in a strip of polycarbonate I have leftover here from building the M2 and paint the inside black, assuming I can remember what paint chemistry does not break down polycarbonate.. Feel free to comment!

    It's going to be pretty, and simple to do to boot.

    The new lower mounts eliminate the crossmember, so I modeled a few 3D printed templates to avoid having to measure stuff.

    Figured out where I should put my drive rods.  Basically I moved them out as far as I could staying parallel to my top pulleys, and still keeping the mechanics hidden. Yes, I'll cut the edge off.

    Routed out the slots for the 'cables', roughly accounting for the angle at which they will intersect the upper pulleys.

    Added the blocks which will support the plywood base, and allow me to fasten down the polycarbonate strip. Yay, I got to use my oak blocks after all...

    Waiting for the glue to dry overnight, then I can assemble it.

  • Fail.

    Daren Schwenke4 days ago 0 comments

    I assembled it.

    It doesn't even come close to the stability I had with the original equal length octahedral frame.

    I'm calling this a fail, going back to the original design, and moving on.  I'm still moving the steppers out and under the board though.

  • Fold yourself 3 times.

    Daren Schwenke5 days ago 0 comments

    I liked the new angle.  I think it will work.

    As I was laying it down after trying the parts, I had a little brainstorm and realized how to make it fold basically flat.

    I've implemented it.  :)  

    I now have to print 12 different parts though.

  • Cat toy.

    Daren Schwenke5 days ago 0 comments

    I finished my changes to get back a bit more rigidity and was reprinting the parts last night.

    However, one of my prints must have caught the print head early on, let loose, and I ended up with a ball of extruded filament instead of a part.  Thankfully the springy TPU filament I use on the connecting rods did it's job and lifted the head away from the other parts when this happened, so just the one got ruined.


    EDIT: Reprint of the most time consuming print almost done.

    Six more smaller parts to print yet till I can try my new angle compromise.

  • Telescopic pushrod.

    Daren Schwenke5 days ago 0 comments

    While I was waiting for the next set of prints to finish, I took a look at the pushrod.

    The garden stake I had previously used was getting rusty.  I went looking for a replacement and locally sourced a few carbon fiber rods and some AL tubing on clearance.

    Only found an extension spring of the right inner diameter, but it quickly became a compression spring with some excessive force.

    This telescopic combination let me move the weight of the spring from the top of the pushrod to the middle, where it's mass will now be closer to the center point of rotation for the tripod kinematics.  In other words, it won't move as much, and so it's inertia will be less of an influence on the head.

  • Even better idea..

    Daren Schwenke6 days ago 0 comments

    I was trying out the new configuration and figuring out how much working area I would lose to my uprights.

    Then I realized how to get nearly all of it back.  I'm going to modify the C1, probably so much it won't be the C1 anymore.

    I'm changing the angles for the uprights, and moving the bottom mounts to be part of the stepper and spool mounts.

    Let the math begin..

    EDIT:  Math done.  I realized I can't totally negate one of the angles as I will lose structural integrity, but I picked a good value in between.  It will still be better than it is now.

    Printing the first three parts.

    EDIT 2:  Assembled.  I lost a whole lot more structural integrity than I had bargained for.  Thinking about it..

  • This sucks, I got a better idea.

    Daren Schwenke6 days ago 0 comments

    After two days of avoiding gluing the other 6 stilts I would need on the board, I had a better idea.

    I'm going to move the steppers to the bottom of the board instead, and pass the drive 'cables' up through holes.

    The feeders, frame, and PCB mounts can just get mounted to the top of the board then, and everything else like the majority of the support electronics and wiring can all be on the bottom.  Much cleaner look too.

    Better plan.  Doing it.

View all 60 project logs

Enjoy this project?



jediminer543 wrote 03/10/2018 at 10:28 point

This is pretty awesome.

Do you have any idea when you will be releasing the files? My local hackspace has been wanting a pick and place facility for a while now, and has a couple of unused 3D printer frames lying around.


  Are you sure? yes | no

Daren Schwenke wrote 04/26/2018 at 23:20 point

Files are up.  Not cleaned up, but they are up.

  Are you sure? yes | no

Marc Peltier wrote 02/19/2018 at 11:10 point

Hi Daren!
I had guessed the organization of gear train, and the need for a 90° gearbox, between the servo output and the actuator gear.

I recently experimented with gears in POM, very cheap on aliexpress. com. There are all kinds of models, straight, in crown, or at 45°, with different numbers of teeth. The bore is generally 1.95mm, when they are designed to be pressed together on a 2mm shaft, or 2.1mm, when they are designed to rotate freely on the shaft.

I was able to resize the bore with my lathe, according to my needs. For the small series we use, it is better to base the design on existing gears, to be modified at the lathe. Moulds are very expensive!

You can probably also make the splines for coupling with the servo output by heat, deforming an existing POM part with a brass servo output coupler, used as a heated punch. A hijacked hot-end will be perfect for that...

  Are you sure? yes | no

Daren Schwenke wrote 02/19/2018 at 15:11 point

That is pretty much exactly the path I took and the parts I used.  The fitment depth is critical though to prevent backlash and binding which took some iteration.

  Are you sure? yes | no

Marc Peltier wrote 02/20/2018 at 09:38 point

Just an idea this morning:
Dismantle the servo. Mount the potentiometer directly on the Pick&Place rotary tube, and try to directly link the last pinion of the servo gear train to this tube, with no 90° deflection, making it a part of the servo system. By the way, you will probably be able to improve the transmission ratio, and in the whole the precision in rotation. The very short stroke of the Z-Probe should make it possible to find a pinion thick enough to take up this movement without loss of link.

Of course, this will completely call into question the beautiful symmetrical architecture that you currently have, but I'm sure you will be able to quickly find a new layout logic, just as satisfying !

  Are you sure? yes | no

Daren Schwenke wrote 02/20/2018 at 10:06 point

Yep.  If I can't get the accuracy I need with just the digital servo, reading the output shaft angle directly is one way to move forward.  The servo potentiometer is still only 180 degrees though and a rotary encoder of sufficient resolution to actually improve the situation would greatly increase the cost.  

Rolling your own encoder you would need at least 400 cuts in a disk to improve here.  3D printing that at even 1 nozzle width per cut is still too large to fit nicely in the current design.

I toyed with the idea of drilling some holes in the third to last gear inside the servo and adding an optical gate there (with the servo re-wired for continous rotation).  The PID loop would move to Machinekit which is well suited to do a good job at it out of the box. That would work and I even have a suitable gate in my parts bin.  I would rather not though.

There are even existing multi-turn servos which are not continuous rotation designed for RC sailboats too, but again... many times the cost.

In the end, I'll probably just live with whatever accuracy I can get here.

  Are you sure? yes | no

Marc Peltier wrote 02/20/2018 at 13:11 point

Many RC servo potentiometers have a 270° stroke. These 9g servos are very economical, and trying to make your P&P head with just two digital servo controls makes sense. It's attractive because it's simple. And you could make a speed daemon with that, installed on a delta robot !

If you give up this approach, then why not just use this type of stepper motor Ø15mm, with directly usable output pinion and integrated planetary reduction: 

2 PCS high torque 5 V dc 2 phase 4 fil Dia 15mm moteur pas à pas avec micro planétaire réducteur avec engrenage conique(China),searchweb201602_2_10152_10151_10065_10344_10068_10342_10343_10340_10341_10084_10083_10618_10630_10305_10304_10307_10306_10302_5722316_5711211_10313_10059_10184_10534_100031_10629_10103_10626_10625_10624_10623_10622_10621_10620_10142,searchweb201603_25,ppcSwitch_5&algo_expid=17e14cc8-4653-4261-ab15-56833755b9ca-4&algo_pvid=17e14cc8-4653-4261-ab15-56833755b9ca&transAbTest=ae803_5&priceBeautifyAB=0

You will get more than 2000 steps per revolution, about 2 turns/sec, with a backlash of about 5°, which can be cancelled by a spring. It is probably easier than using a position encoder and MachineKit...

  Are you sure? yes | no

Marc Peltier wrote 02/19/2018 at 06:35 point

Very well done !

I'm very happy to see this, because it's totally in line with what I imagine as equipment for my own Zatsit delta robot, very soon on KickStarter:

Zatsit does not need the standard mount. Do you intend to publish the STL files, or better, the design files, so that it is easier to make the necessary adaptations?

You can get very cheap front surface mirrors here :

Congratulations again!

  Are you sure? yes | no

Daren Schwenke wrote 02/19/2018 at 08:01 point

Thank you.

The source is a mess right now and I'd be embarrassed to release it.  I rushed it and most of my scaling and dimensional dependency best practices for OpenSCAD files went out the window. It's also started as an offshoot and is dependent on the code for the C1 so it would need to be split.  Eventually.

There are a couple bits like the right angle drive gears for rotation which require accuracy/fine detail beyond what any 3D printer can handle though.  I made the gears for the prototype by hand from existing injection moulded nylon gears, but it took a lot of patience and a couple tries to get them right.  If it works well, I'm going to look at getting them injection moulded with the servo splines built in.  Even then I think the only way to make the molds will be EDM.  Tiny stuff.

Thanks for the link.  I should be able to get a perfect set of mirrors here next time.  Still learning.  I got about 3 more tries here before I have to go spring for another $1 mirror.  Long term I'd definitely just source them cut to size, but this is something that people with a lot of patience can DIY to cut costs if I figure out how to do it and document it.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates