3D print


Continuity

Standing on four legs!

enter image description here

After three months of testing Continuity's front legs only, I'm excited to share that the walking rover has taken a giant leap forward. I've just rolled out an update, bringing the two rear legs into action. This development is a game-changer because now I can dive into real 4-legs-balancing tests, exploring pitch and roll axes movements, along with trying out various walking gaits and manoeuvres. As of now, Continuity is equipped with 8x 25 Kg Servo Motors, each thirsting for 5-7 volts and drawing 1-2 Amps. The entire body is currently made out of 3D-printed PLA, but I've got big plans for the next version: several structural parts of the body will be converted into a sleek carbon fiber structure. The mobility system, aka the legs, is also in for an upgrade, transitioning to a robust aluminium CNC machining.


Rapid Unscheduled Disassembly

enter image description here

We are not talking about rockets, but apparently, I had to face a Rapid Unscheduled Disassembly of the Mast Tower's head. It doesn’t take a degree in aerospace engineering to know that, ideally, rockets aren’t supposed to blow up. Similarly, a robot is not supposed to break apart during a test. However, this is exactly what happened. During the test, a coding error made one leg go rogue, turning the robot into a bit of a daredevil and resulting in a not-so-graceful tumble from the table. Luckily, the legs and other moving parts survived the crash, but poor Continuity's neck got the worst of it. The elevation mechanism to control the pitch angle of the Imager (the head of the Remote Sensing Mast), is a simple 3D-printed extension of an aluminium servo motor horn. This helps reduce the mechanical complexity, but also makes it much more fragile when the robot has to survive a fall.

Lesson learned: While we love keeping things light and simple, we've got to find that sweet spot between lightweight design and toughness. I am patching up Continuity, adding some extra code safety features, and making sure the robot is ready to handle whatever comes its way. Here's to smoother tests in the future!


Weight Optimization and Two feets roll balancing

enter image description here Watch: Two feets roll balancing

In a recent overhaul, Continuity's design underwent a meticulous weight reduction, shedding non-essential components for enhanced efficiency. Then, I started testing balancing on the roll axis, a crucial step towards achieving stability. However, friction-induced squeaking in the plastic joints posed an initial challenge, partially limiting the movements of the legs and causing very annoying noises. I managed to fix the problem using WD-40 lubricant. Balancing is achieved using a simple accelerometer, with future plans to integrate force pressure sensors on Continuity's feet for enhanced feedback. The code I'm using for balancing is not very well refined and occasional failures are acknowledged. But generally speaking, it works well!


Continuity and Mimas's mast tower comparison

After a week of testing, the mast tower v.1 was ready! I tested two versions of the head (with a slight variation in weight - the final version is the white one) and verified the precision of the 3D-printed gearbox: despite a backlash of < 0.5 cm, it performs smoothly and is visually precise. This is something that must be improved in v.2, possibly reducing the backlash to < 0.2 cm or lower. I also compared the mast tower of Continuity with Mimas' one: the difference is really impressive, but despite being shorter, Continuity's mast tower is much more capable! It will be equipped with a higher resolution camera (compared to Mimas' camera), laser distance sensors and other instruments!

enter image description here


Mast Tower base: 3D printed multiplier gearbox

The mast tower is a crucial element of Continuity: it is a tower-shaped component that elevates key camera systems and sensors, giving the rover a human-scale perspective on its environment. Because I decided to use only servo motors, where possible, I had to find a way to increase the rotation range of the motor. The servos I'm using are 25 Kg full-metal motors with a rotation range of 180°, meaning that they cannot be used directly for the azimuth rotation (along the z-axis). I decided to 3D print a 1:2 (2x) multiplier gearbox. You can see it in the LHS photo below. The design is probably not the best because the gears are very thick and not space-saving. I still decided to give them a chance, so I designed a holder for a bearing and an enclosure to keep everything tight and reduce vibrations. Now, when I rotate the servo by 180°, I get a 360° rotation. There is still an evident issue: 3D-printed gears are not 100% accurate, and backlash is not something I can ignore.

enter image description here


Keep it light and simple!

It might sound obvious, but keeping the design lightweight and simple, without unnecessary mass additions and frills can significantly reduce the production time and limit failures. Four months after the design of the first concept, I realised several parts were unnecessary, making the overall structure bulky and heavy. The figure below shows how the servo motor holder for one of the legs has been simplified, reducing the mass as much as possible, but still keeping it strong. 33g

enter image description here

On the LHS of the photo, the black piece shows a vertical part with five holes designed to hold a metal flange. The old design was 33g heavy, the new design shows an improvement of 51.5%, weighting just 16g.


Single Leg Prototype - Test 2 (Smooth control, ground contact reaction)

enter image description here Watch: Single Leg Prototype - Test 2 (Smooth control, ground contact reaction)

As discussed in the previous post, smoothness is something I want to work on: it helps reduce vibrations that a clunky mechanical movement would otherwise cause. In addition, it is more visually appealing. I used the pigpio library, and I controlled the motors smoothly using a function that I called servo_smooth(motor, angle, speed). The distance between the current servo angle and the target angle is subdivided into small steps that act as a time delay: by changing this value, it is possible to control the movement speed. Additionally, using the function servo_sync(motor1, angle1, speed1, motor2, angle2, speed2) in multithreading, two threads run the servos (one each), allowing me to set a certain angle and the speed I want the motor to run, moving synchronously and smoothly. Finally, I implemented a simple ground contact check by snap-fitting a limit switch in the lower plastic linkage. The program I was running in the video lifts the leg as much as possible, reacting when a force is applied to the foot. This is just an "ON/OFF" configuration, which is quite not the best solution for sensing the ground correctly.


Single Leg Prototype - Test 1 (Synchronous movement)

enter image description here Watch: Single Leg Prototype - Test 1 (Synchronous movement)

I 3D printed and tested the first leg prototype: the structure is relatively strong, despite the thin thickness of the plastic joints. I used PVC tubes for the links high torque full-metal servo motors to power the leg. The control is achieved using basing sequential coding in forward kinematics. I used the library pigpio to move the motors, without caring about the movement smoothness. Instead, I tried to define some points the leg had to reach to achieve a step cycle. From the pigpio library, using pi.set_servo_pulsewidth(pin, angle), it is possible to control the servos easily. N.B.: The motors react immediately to the GPIO trigger, meaning that multiple commands can be sequenced, obtaining a parallel/simultaneous movement of the servos. However, this does not allow us to change their speed. This can be achieved by adding a delay between each leg position, even if the result is a bit clunky and definitely not smooth.