Lachlan Hurst (@lachlanhurst) header
Lachlan Hurst (@lachlanhurst) profile picture

Engineer, software developer. Currently making robots for fun.

Melbourne, Australia
Joined December 2008
Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)Photo by Lachlan Hurst (@lachlanhurst)
Started building robots. Everyone needs a hobby right! Two actuators in this are small brushless motors with integrated drivers controlled via CAN. Wheels for now, but the idea is to step up to legs next.
1
3
459
Finally have all the electronics sorted for the Unitree J288 Microduck. Just waiting on some 3d printed parts now so it can actually start to look like a duck.
1
71
The 15 servos are now happily talking. An STM32 handles the 6 Mbps Unitree servo buses and interfaces with the body IMU. Three UARTs each handle a group of 5 servos, while a 4th UART sends all the details to the Radxa CM4, the robot’s brain.
14
7
1
139
8,373
Static stall tests showed the Unitree J288 having similar torque to the Dynamixel XL330-M288-T. J288 weighs twice as much, so some concern my robot may not hold its weight. More positively, the J288 is a lot faster (expected) and also maintains torque over its speed range better.
1
1
178
That chart does not show real data, it’s modelled from the XL330 actuator in BAM and a new J288 model I worked through the identification for.
1
1
98
Model seems ok. Validation dataset that was recorded seemed to match the BAM m6 model reasonably well.
1
26
Eventually all this needs to fit in a microduck head, for now I’m just happy it’s working. Camera, ToF sensor, mic/amp are all the same as the official build. Radxa CM4 differs to the Zero 3W, but the duck brain code runs just fine.
2
1
9
410
There was no price difference between Zero 3W and CM4, and I like the idea of having extra compute.
74
For Father’s Day my daughter made this extremely cute micro-Microduck 🥹. Lacks a few DOF, still has a lot of personality.
1
3
232
Developed an interest in those tiny FPV drones. The analog video stuff is interesting and felt approachable enough to hack a decoder+fpga+display to start doing some cool stuff. Feels very low latency, as it should be, also very retro. Details here github.com/lachlanhurst/fpga…
174
If this dude runs STS3215 servos, my SO-100 might be on borrowed time.
Thrilled to finally share what we've been working on for months at @huggingface 🤝@pollenrobotics Our first robot: Reachy Mini A dream come true: cute and low priced, hackable yet easy to use, powered by open-source and the infinite community. Tiny price, small size, huge possibilities. A robot built to code, learn, share with AI builders of all ages, all around the globe, using the latest vision, speech and text AI model. A first robot for today's and tomorrow's AI builders. Read more and order now at hf.co/blog/reachy-mini First deliveries expected right after the summer.
1
163
Those dropped IMU packets seemed to be due to a bad connection rather than a SW issue I spent hours debugging. New breadboard seems to have fixed it, also fixed the hum emanating from the OLED.
93
Wrote a MuJoCo simulation and control app for the so100/so-arm100 . Supports recording/playback and teleop'ing the sim. Needed something to keep me busy waiting for the parts to print out. Details and code here -> github.com/lachlanhurst/so10… Thanks @LeRobotHF & @therobotstudio 🙌
1
1
374
It’s actually surprising difficult to pick up those virtual cubes. I’m sure it has something to do with lacking depth perception.
84
After some tweaking sim2real transfer of policy is going well. Reward function doesn’t penalise for moving, so it just roams about.
1
1
109
Interestingly the RL policy doesn’t overreact on collisions like the PID/LQR balance controller does. It just runs into something, stops, and then pirouettes off. LQR left, policy right.
1
106
Of course this is what the first sim2real attempt looked like. After a days worth of trying everything I found the params (kp, ki) being used for the real motor speed control resulted in the wheel velocity being overshot.
1
67
Started off with a simple PID controller for balance, then cascaded PIDs, and finally settled on an LQR controller. This works well, but the hope is switching to a policy trained up via reinforcement learning will give more robust “disturbance rejection”.
1
114