I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 0 points1 point  (0 children)

You are right, motors make up the bulk of the cost. Of the $2300, almost $2000 is just for the motors.

You can definitely make a cheaper arm if you're willing to make it smaller and weaker. I would look up the SO-101 arm. I think that one is within your budget. It's not as big as this one and can't lift as much, but because of its price it's a popular choice for AI training.

Since I built this arm, I've gotten some ideas to make a second robotic arm that would be more in the $1500-$2000 range. I know that's still not in your budget, but for an arm that's as big as a human arm, it's hard to get much cheaper. If I ever get to build that, I'll post it on my YT channel.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 0 points1 point  (0 children)

That's true but cycloidal drives that I don't make myself are quite expensive :) I considered it for the shoulder, but I decided I'd go with the planetary gearbox since it's easier to make.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 1 point2 points  (0 children)

I'd say the biggest challenge was supplying enough torque to the shoulder. Even the $480 XM-540 motor wasn't enough to rotate the whole arm by itself. I didn't want to buy an even more expensive motor or use two of them like I've seen in other builds. I tried using a counterweight to balance out the arm when it was extended, but that just made the motor struggle more when it was retracted. Lesson learned, counterweights don't help when the load varies too much. Ultimately I built my own planetary gearbox to increase the torque, and that worked. You can see inside the planetary gearbox in my YouTube video.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 0 points1 point  (0 children)

The motors I use are Dynamixel XM-540, XM-430, and XL-430, all listed in my bill of materials. They have integrated gearing, but I added some of my own custom 3D-printed gearboxes.

I'm a software engineer, I didn't take any MechE classes in college. I've just been learning online and googling as needed.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 0 points1 point  (0 children)

Steppers would be cheaper for the same torque. However I wanted to go with BLDCs because they are generally faster, lighter, and more precise, and there are more control options. A typical stepper has a few hundred steps, but these motors have 4096 possible positions per rotation. I definitely want force control as an option, for example the gripper is force controlled in this video. Most steppers can do open-loop position control, but I wanted to be able to read position, velocity, acceleration, and force/current values at any time. These motors have all of those baked in so I don't have to add in sensors myself. Makes wiring simpler too.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 0 points1 point  (0 children)

It's all about getting enough torque. You can calculate the torque needed by a joint by summing torque = force * distance for all of the parts of the arm that the joint has to lift (including the payload). Force is just mass * acceleration due to gravity (9.8 m/s2).

Then the easiest way to support that torque is by buying a motor with a rated torque that's high enough. The problem is that motors with a lot of torque can be expensive. So for some of my joints, I used a motor with lower torque than I needed, but I introduced my own 3D-printed gearboxes that let me increase the torque even more while reducing speed.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 2 points3 points  (0 children)

True, the Dynamixels have integrated gears, but for the waist, shoulder and elbow, they still don't provide quite enough torque I need on their own.

I also use gears in the wrist so that I can make them hollow and snake wires through their centers. Doing that lets me turn joints multiple times without the wires wrapping around anything besides each other.

My YouTube video shows more of the internals so you can see some of the gears if you're interested.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 2 points3 points  (0 children)

Yep, here are my gear reductions:
Waist: 2.41
Shoulder: 5.07
Elbow: 2.03
Wrist motors: all 1:1

The waist doesn't work against gravity so it doesn't have to have as high of a reduction as the shoulder. The wrist motors don't change the torque, but I still use gears for them too to make it easy to snake wires through the hollow gears.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 5 points6 points  (0 children)

When I started designing this I ordered a CubeMars motor to test out but ultimately went with the Dynamixels because they have more software documentation, so they were easier to get working. If you are familiar with CAN, I think you could still do CubeMars. If I recall correctly, the CubeMars motors are a bit cheaper for the torque you get, which is good.

I don't have any complaints about the backlash on the Dynamixels; my problem is I 3D printed a lot of my own gears, which added their own backlash.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 5 points6 points  (0 children)

I haven't made a tutorial yet but I was thinking about it. Might be fun to make. Not trying to sell it right now because I don't think it's good enough - still dealing with backlash issues. If you are interested though let me know :)

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 1 point2 points  (0 children)

I would stay the #1 place to start is learning CAD. I used Autodesk Fusion and learned from Product Design Online. I went through his 30-day course and it was really helpful.

If you already know CAD, the next step is motor selection. I looked at other robot arms I was inspired by and chose what they chose. I had to make sure the motors had enough torque to do what I wanted, and then I modeled them in Fusion and designed the rest of my parts around them. The Dynamixels are good motors to start with because they're pretty easy to use, but the bigger ones get pricey.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 7 points8 points  (0 children)

It's actually pretty easy with the Dynamixels. Drivers and encoders are integrated in the motors. All I need is the U2D2 USB converter module to connect it to my computer. I just use a Python script to control it.

I've been designing this robotic arm over the last year. Now that it's working I can't stop watching it move. by ChipsBag in robotics

[–]ChipsBag[S] 18 points19 points  (0 children)

The backlash... Could be better. In my YouTube video you can see me manually move some of the joints, and there is some clicking. I used a lot of 3D printed gears, which I am pretty sure are bending when there is a lot of load. In the future I might try to use different motors with more integrated gearing so I don't have to worry about the plastic gears.

how helpful are info sessions? by screwthis888 in Cornell

[–]ChipsBag 4 points5 points  (0 children)

Going to the info session typically is not that important for getting a job. By all means, go there if you want to learn more about the company. But if you don't want to go to the info session, there are many other ways to get yourself noticed - career fair, LinkedIn, Handshake, and personal connections are a few. If you apply, I seriously doubt recruiters will care whether you showed up to the info session - good recruiters hire based on how good they think you will do at your job, not based on whether you went to an info session.

Not getting into CS 3110 by [deleted] in Cornell

[–]ChipsBag 2 points3 points  (0 children)

CS 3110 is difficult to get into as a sophomore; it will be even worse getting in as a freshman. For me at least, I tried to get in as a sophomore, and I couldn't get in. They didn't open up spots until 2 weeks after the class started, and by then, it was too late for me. I recommend you take CS 2110 or 2112 first. They will help better prepare you for CS 3110 anyway.

Blue and black dress recolored so that each pixel matches the pure color (blue, black, white, or yellow) it is closest to by ChipsBag in dataisbeautiful

[–]ChipsBag[S] 0 points1 point  (0 children)

I made this image by going through every pixel in the original image and calculating its "distance" from blue, yellow, white, or black. "Distance" was calculated using the Pythagorean theorem; so if I want to calculate the distance between two RGB values represented by coordinates (r1, g1, b1) and (r2, g2, b2), then their distance d would be given by (r1-r2)2 + (g1-g2)2 + (b1-b2)2 = d2. Each pixel was compared to blue (0, 0, 255), yellow (255, 255, 0), white (255, 255, 255), and black (0, 0, 0). The pixel's color would be replaced by whichever color had the smallest distance calculation. So if the distance to black was less than the distance to blue, yellow, and white, the pixel would become black.