Twimaro (Twin Manipulator Robots) is a pair of twin robotic arms: if you move one of them by hand, the other one copies the movement. I built it in 2015 as a project for my master’s in robotics at Universidad Carlos III de Madrid.

Twimaro

The goal was to try bilateral control with very simple, cheap hardware. Bilateral means that either arm can be the one you move, and the coupling works in both directions: if the arm that copies the movement bumps into something or grabs an object, the arm in your hand resists too, so you get some haptic feedback of what is happening on the other side. This is useful when the object you are handling is fragile or dangerous and you can’t, or don’t want to, touch it directly.

The arms

Each arm has 5 degrees of freedom: a yaw joint in the base, three pitch joints and a gripper. All of them are Dynamixel AX-12A servos, the same ones I used in Raider, with around 12 kg·cm of torque, enough for small arms like these.

What makes them interesting here is that a Dynamixel is not a simple hobby servo driven by PWM: it reports its current position, speed, temperature and load. That’s what makes Twimaro possible with no extra sensors, since the servos themselves are the sensors of the arm in your hand.

Load matters because it gives a rough idea of the torque the arm is making. To check it, I measured the current drawn by a servo holding 0.5 kg at distances from 0 to 24 cm:

Current vs torque

The parts are designed in OpenSCAD. Each arm needs four arm plates, a base, a bracket, a joint and the two halves of the gripper:

Printed parts

I printed them in ABS on my Prusa i2 AIR, on the left. On the right, one of the arms during assembly:

Electronics

Both arms share a single controller, an OpenCM9.04, an Arduino-like board made for Dynamixels. The ten servos are daisy-chained on the same half-duplex serial bus at 1 Mbps, so a single data wire goes through all of them, and the LiPo battery is connected to the same bus too.

System topology

The whole system

Copying the movement

The first test was unilateral, with a fixed master and slave. The yellow arm had its servos off, so it was easy to move by hand like a dummy, and in each cycle the controller read its position and sent it to the blue arm as a target.

The final version is bilateral. In each cycle the controller reads the position of every joint of both arms, and sends each arm the position of the other one. There is no fixed master or slave: both arms swap roles every cycle. To let you move the arm in your hand, the loop includes a short pause (less than 1 ms) where the arms are in stand-by; when they wake up, both try to reach the same position again. Some delay is needed for this to work, but it must be small to keep the movement smooth.

Here I’m moving the blue arm to make the yellow one pick up a ball:

Results

It worked well, and it was robust enough to keep using it in other tests. The weak point is the force feedback: the joints have some clearance and the plastic parts are a bit elastic, so the system is noisy and small forces get lost. Of course it can’t compete with a professional haptic device like a Phantom, but it offers something similar at hobby level, for a fraction of the price.

Some ideas I left for the future: making it wireless with a pair of Bluetooth modules like the HC-05 (with a second controller), using better Dynamixels like the MX-28T, and making a simulation model to develop new applications faster and more safely.

As always, everything is open source, you can find the printable parts, OpenSCAD files and code on the GitHub repo.

License

Hardware and software: GPLv2

Categories:

Updated:

Comments