back to robot arms!

i got excited about robots again, which is a happy thing for me.* i watched some young ‘un training up an arm to put legos in a bowl in the space of a few hours and was curious, and holy smokes, manipulation has just bounded ahead in the last 2-3 years.

* apparently it’s been about 10 years, obligatory wow i’m old, the staubli arm post is here: https://orangenarwhals.com/2017/07/staubli-arm/

i decided to invest in my future and get a pair of robot arms (it’s great to not be a self-employed grad student anymore), it’s ca. $300 for two robot arms (T__T so expensive) — one a leader, one a follower. the name of the game (for at least a year or so) has been teleoperation data (?? i guess they just decided to throw money and scale this) which seems dumb but has been remarkably effective (see: bitter lesson).

i even took the STLs and sliced them with tree supports myself *gasp* instead of printing a model from makerworld eheh.

well i’m a bit lazy to document everything, but here are some thoughts:

the main issue with the assembly was the holes were too small for the screwdriver to fit through, so i was drilling out the hole with the screwdriver … also i realized a bit late that there were official docs for the seeedstudio version, not just generic ones,

https://wiki.seeedstudio.com/lerobot_so100m_new/

and also there was a 12.4 v power supply and a 5 v power supply. also assigning ids to motors is ideally done before assembly because it’s a pain after assembly to detach and attach the servo wires. also getting the horns onto the servo does involve some force, and some trickery to getting them off again (wiggle side to side with a screwdriver). also why didn’t they just put numbers and labels on the 3d printed parts ?? it takes some figuring out which pieces go where. SIGH. i would’ve added those features *shakes head*

 

alright. anyway after some fuss i assembled the arms. not sure i got the handle right (the purple is the “leader arm” but eh.

CHINAMIXELS — as a friend put it — chinese dynamixels ! get position feedback out. they’re expensive still ($20 each) but at least i no longer make $20k a year so eh?

so after some fuss with the motor id stuff, followed by the calibration (the follower does seem smart enough to not go past the bounds you calibrate it to, but still map correctly to the leader arm)

finally got teleop working

then after that got the weird training code semi-working (really need to figure out the keyboard controls, killed my whole python environment trying to get it working), i got episode replay

and here’s the alarming video (i really want to put some jerk limits on it)

i wanted to give it the task of “turn on the light” but actually that button is real annoying to press with the robot arm / manipulator.

i feel apologetic to my cat for making it push buttons.

what’s next? actually collecting data and training.

and after that … i’m getting a ur5 tomorrow huehuehue

[ personal note: life has been topsy turvy* so i’ve been pretty quiet. but i also told myself that once i graduated (my phd) i’d be free to be really honest about things. i’ve been following general advice (how to be professional) but starting to feel like i get better results being myself, because well, i’m myself. (this includes my derpy enthusiastic side, but also includes my self-studying physics c self that was fearless about whiteboarding math up)

*i’m unemployed again *laugh cry* now i have stories aplenty. from 16x A100 GPUs idling doing nothing, to *other stuff* . at least i did manage to kill some of my imposter syndrome through just how bizarre my jobs have been. time to look for an in-person job, which should be easy with robots ]

 

 

 

captain’s log: i found a job! + going to a xmas tree farm

well, trying to kickstart my blogging again, i found a job 🙂 at a small startup (<10 people). i’ve joined the ai crowd. it is good to not have to prep for interviews !

anyway so here is us getting an xmas tree dec 6th apparently — wow i have not blogged in AGES. 

here is the tree, complete with plastic baubles, LED lights, origami decorations, and origami tree topper

proof that it is a real tree! so many leaves.

the birth grounds of our tree. all the trees are a flat cost so that people don’t cut down all the baby trees


the tree farm has this machine that wraps the tree and it makes it huggable  !

TODO: insert videos of the baling and auger process.

hurray i blogged!

Captain’s Log, Day 38: The moon is cake(molds)

There are these mooncake molds you can get for $10-$15 online. They have swappable design plates. I finally got around to making a custom mooncake mold faceplate. I’m not super happy about the design (it just is a moon cat), but as a proof-of-concept happy I finally finished it.

Have not tested it yet by actually baking mooncake — this is important to make sure that the depth and draft angle are correct such that the design is sharp on the baked good and also releases cleanly.

In the meantime, this is what the front and back look like.


CAD

The workflow is to roughly SVG -> inkscape save as dxf -> import into onshape -> extrude cut.

  1. Make or get an SVG online (or use PNG and trace bitmap in inkscape)
  2. Open it up in inkscape, then use Ctrl-L to simplify the path (so that when we include a draft later to make the mold release more cleanly, we have fewer faces to select).
  3. Alternatively, if you want text to a path, write the text in inkscape, then select “object to path”. Then you can simplify that.
  4. Save as AutoCAD DXF.
  5. In Onshape, import the DXF: At the bottom, use the “+” to import an STL. This pops up the file as a 2D-CAD tab inside onshape.
  6. Go back to the original part. Create a new sketch, then at the top there is a file icon that says “DXF” and select the dxf we just imported from the dropdown.
  7. Use the transform tool to scale the outline
  8. Extrude-cut
  9. Add some appropriate looking amount of draft (slope to the sides so the cake comes out more easily). This requires likely selecting all the faces by hand. If there’s errors, try decreasing the draft angle.
  10. Add holes for heat-set inserts that we use as the connectors to the mold press.

Some pictures of selected steps as follows.

Dimensions

  • Heat set inserts: 5.123 cm apart
  • Outer diameter: 7.137cm; inner diameter (at bottom of arcs): 6.731cm; Circles: 16x of them, so 22.5deg apart.
  • Height of plate: 1.27 cm (much thicker than original plate — this is to accomodate the heat set inserts)
  • Depth of cut: 0.377cm down (matching original. Deeper = harder to release)

Dane helped me print this in ~30 mins or so using some nice printer set up (fancy fast flow nozzles etc).

After Printing:

The main other trick is to use heat-set inserts and bolts to take the place of the mold retaining features. Matching the original design would require printing the mold upside down (Design facing down) as otherwise it’d be a big block floating over two small pegs. But this means the cake surface would likely be quite messy since the design is a big overhang at that point. The solution is to use bolts instead.

(Make holes a mm or two less than the diameter of the heat set insert.)

Dane showed me this method of using a heat gun to heat up the whole insert — with a bolt acting as a handle for pliers to hold the insert — and this way when you push it in no plastic ends up inside. Less likely to mess up soldering iron tip with plastic gunk, but also harder to control how straight it goes in because you’re handling the insert from the side instead of pushing down (and takes a bit more patience waiting for the heat to transfer). It looks like this:

The test

After testing that the spacing is correct (it’s not great but I think I may have put the inserts in slightly crooked) I used loctite to keep the bolts in a stable position.

 

Side Note on the imported DXF (things I tried and do not recommend): All the points will actually not be connected (it’s a bunch of individual lines). You can connect them if desired, by drag-selecting each pair and clicking “coincident” — but doing so didn’t actually let me run a fillet or draft along the entire (cat) outline at once. In the end I gave up and just selected all the faces by hand.

projects blog (nouyang)