Search the Community
Showing results for tags '6dof'.
-
Update: I published a fifth version of the robotic arm. See this comment farther down in the thread: https://rebrickable.com/mocs/MOC-253928/glaysche/6-axis-robotic-arm-mk5/#details https://rebrickable.com/mocs/MOC-254189/glaysche/6-axis-remote-control-mk5/#details Original post: It's been a very long time since I have posted about my robotic arm. I have been working on it / obsessing over it for several years now and have published multiple versions on Rebrickable. I have now published my 4th revision which is almost entirely different than anything I have posted here before. For this reason, I decided to put it into a new topic rather than resurrecting my ancient topic. Rebrickable pages (free to download Stud.io files and PyBricks code): https://rebrickable.com/mocs/MOC-244253/glaysche/6-axis-robotic-arm-mk4/#details https://rebrickable.com/mocs/MOC-244757/glaysche/6-axis-remote-control-mk4/#details Basic stats for the robotic arm: 9 motors 2 Spike Prime hubs 1 Spike Essential hub Over 100 gears The robotic arm is controlled by a 6 axis remote control. Basic stats for the remote: 7 motors used as rotation sensors 4 Spike Essential hubs 0 gears -- all motors are directly coupled to the components to eliminate any slop Here is a video showing the robotic arm being controlled by the remote: Gearing The gearing has evolved over the years. At first, I was really interested in mechanical complexity and some clever uses of the differential to mechanically compensate for the coupling that happens when functions are transferred through a turntable. This worked but resulted in a ton of backlash and slop in the gear trains. This new version is focussed entirely on reducing slop and making it work as well as I could given the limitations of building out of injection molded parts. Here are all the gears in the arm: This is focussed on making each gear train as short and low slop as I could. The goal is not actually to have the lowest friction. As you can see, there are several redundant gear trains for different axes. This is needed to be able to generate the required torque, especially in axis 2 -- tilting the whole arm. That axis has 8 12t gears driving two turntables. Driving the turntables with fewer gears can result in destroying axles because the torque is too high. Having multiple gear trains also is a great way to greatly reduce backlash. You can "pre-tension" the different gear trains so the axles act as springs pushing against each other. The bottom two tilt axes are each powered by two motors. The was the only way I could get reasonable speed. I needed a ~40:1 gear ratio on Axis 3 (tilt axis at the top of the humerus) with a single motor but was able to use a 15:1 ratio with two motors, greatly improving performance. I used a 3d printed part to be able to pass three functions through a turntable, driving axes 5, 6, and the gripper. This was designed by @efferman. I would have preferred to use pure Lego parts but this was needed to get the functionality I needed in a compact form with minimal slop. Here is a view of this part in place. It's a little hard to see the part going through the turntable. This picture shows how short I was able to make the gear trains to drive axes 4, 5, 6, and the gripper. Another interesting part of the gear train is the 5th axis. I was able to use the blue 20t beveled clutch gear to transfer a function through the turntable. I haven't seen this configuration on another model. The extra 12t bevel gears help stabilize the blue gear and reduce slop. All these gears needed proper bracing to function well. This and making the basic structure more rigid is where most of my effort has gone over the last couple years. Structure If you look at the above pictures or download the Stud.io file from Rebrickable, you will see a very solid structure, especially in the base and shoulder modules. Pieces are form-locked together as much as possible and I never miss an opportunity to fill a pin hole with a pin. 2072 of the 3633 parts are pins. I made the robotic arm modular -- only a few pins attach each of the above 6 modules together. This really helps constructing and improving it. You can quickly isolate the piece you want to work on without taking apart more than you have to. Control I use PyBricks to control it. It is the only software that can run on the Spike hubs and be able to communicate between the hubs. It generally works quite well. I didn't spend a lot of time of the software because it was my least favorite part of the project. It's a bit ironic because I am actually a software developer. It's just the software I write for my job is way more interesting than the software running on my Legos. As part of controlling the robot, I needed to calibrate it. I use a few sensors and the encoders in the motors to do this. This uses color sensors for the 3 rotation axes, and a touch sensor for axis 2 -- the bottom tilt axis. The other axes drive the motor until it stalls to find the end point. This uses one other interesting trick. It uses the tilt sensors in the hubs to point axes 2 and 3 straight up during the initial calibration. This is a quick way to get things into a known state and ended up working quite well. Parts I wish I had Much of the evolution of this robotic arm came because Lego released new parts. The 3x19 and 3x13 frames, for example, revolutionized most of the design when they came out. Similarly, flip flop beams and the 3x5 flip flop L have dramatically improved the structure. I have a list of parts that would have really helped me if they were available: 5L flip flop beam -- there are many places where the structure or axle support would have been much better 3x7 frame -- I think this would be a great boon in several structures 4L pin -- I could improve the strength of many structures with this. Sometimes I am able to use 2 2L pins with a 4L bar but this doesn't work in many places 7x9 frame -- this will probably never happen but this would help make some things more compact 6L and 7L axles with stops would be super helpful in a few places. I currently use the axle with no stop in these cases and the axle can fall out during assembly / disassembly which is unfortunate A few recolors into my favorite lime green, especially of flip flop beams Anyway, I hope you found this interesting. I am happy to answer questions. If you want the Stud.io files, PyBricks code, or STL file for the custom part, be sure to download them from Rebrickable.
-
There is a new thread detailing my latest version of the robotic arm: Update: Here is version 2 of the arm: Studio model available for free on Rebrickable: https://rebrickable.com/mocs/MOC-109607/glaysche/6-axis-robotic-arm-mk-2/#details Original post starting here: This is my first MOC and first time posting on Eurobricks. A few months ago, I got back into Technic by buying the Liebherr set (42100). I decided to design my own 6 degree of freedom robot. In doing research and experiments for this project, I was inspired by this post I found here on Eurobricks: I ended up making a lot of different choices in my model. Here is the big picture: I wanted to optimize for three things: It should work Maximum range of motion -- the wrist axes should be able to turn indefinitely and other axes should have as much range as is possible Built as compact as possible Here's the video with poor production values (and using a simple BuWizz profile to control it): https://www.flickr.com/photos/188456966@N07/49900167801/in/datetaken/ This was quite challenging to optimize it in this way. First of all, in order for the wrist joints to spin, they needed to be axle driven -- pneumatics won't work. In the example of the grabber at the end, I put an axle through the turntable to control the LA for the grabber. When the grabber turntable is spun, however, the grabber will open or close in an undesired way. To counter this, I used a differential and the correct gearing to compensate. Here's a picture of that: This is difficult to see in there. There is a new 2 piece differential (65413 / 65414) inside the turntable. The gears turn the differential at half the speed as the turntable which makes it so the grabber doesn't move when the turntable moves. The control for the turntable and grabber are axles on both sides that go through the next set of turntables seen here: The axle turns the perpendicular axle that goes through the turntable and is driven by another axle in the next stage. The stage has the same problem as the previous one where flexing the wrist will cause the grabber to turn and open or close. This is compensated with an additional two differentials and another set of gears. This one is particularly compact. Here's a picture of that stage: The lage gear there is a 28 tooth double bevel which is needed to get the correct gear ratio to the 28 tooth differentials. Pulling the side off of that, we see: There are three L motors (22169) here to control the grabber and first two degrees of freedom. I particularly like the gearing in the front of this section for the compensating differentials: As noted by Hanso in his series of posts, the end of this arm is actually quite heavy. I would have preferred to send all three functions though the next turntable but I could not find a solution that sturdy or compact enough. This weight caused trouble for the next turntable. To make this work, I used two turntables, one in compression and one in tension. There is a beam that goes through the center of the turntables that takes some of the load here. The next stage is a another stage that I would like to be able to turn forever so I don't want the wires to get twisted. In order to accomplish this, I also put the battery box on a turntable that turns with the rest of the arm. The wires go through this stage and don't get twisted. The humerus (in LBG) is very small (5x5) and it was a bit challenging to get the gears in there. The motors (XL 22172) for those next two axes very neatly attach there. The base has the last two degrees of freedom. The spin axis here uses a mechanism very similar to the Rough Terrain Crain (42082). The final axis uses worm gears to drive the turntables. There's a lot of force on this axis and I experimented with a variety of different gearing. The thing that worked best is displayed above. The center piece is driven and it gets geared down symmetrically to the axles that have the worm gears. Axle support was a bit tricky here: (Still waiting for the remaining black 7x11 frames to clean up the look here.) The 2nd battery box fits pretty nicely here: In conclusion, I think this works pretty well. I haven't explored the software at all yet -- just used BuWizz as a proof of concept. Many of the motors would work much better configured as servos. I wish Lego would release an SDK for Control+ so I could write an app similar to the Liebherr controls. My day job is actually a software developer so it would be pretty fun to build a full featured app to control this.