Robot Arm, basic servo joint parts and concept (or design)

hi guys,

i’m a beginner in robotic. only knw a bit about coding (programming).

anyway, i’m starting my project today, 6 arm robot with a gripper, 7 servo actually as i need 1 small servo to control the gripper to hold the load. the length of the arm would be 70cm. i’m expecting to be longer like 150cm total with payload 1kg.

here is my design in attachment. sorry it look like back to 19th century but yes, i’m a programmer, not a cad and even i don’t have any idea about autocad and 3ds max. perhaps i should giveit a try next time. fortunately i have a nice backup… a lovely workshop which will do my nasty design into reality :smiley:

and here is the servo i got from the market (in the attachment also), with D shaped shaft, r: 4mm.
those servo are 100kgfcm (10Nm) and 180kgfcm (18NM), daisy chain, digital, the seller claimed that the servo can give the feedback about bla bla bla which i just need the current angel position. but the servo don’t come with a specific built controller instead of normal H bridge or kind of servo shield for arduino uno or mega. not sure.
*in short: i don’t know about how to choose the correct position sensor/solution :fearful:
**sure… the seller is cute by saying “ouw… our servo is accurate, digital, 4096 digit, can connect to other servo like daisy chain and u can call each servo by each ID”. honesty, i don’t have experience on this but still it seems this kind of servo is my best bet to go for this project. what do you think? any opinion would be apreciated. i’m a beginner.

anyway, i have basic several questions.

  1. arm joint construction. it seems i have problem. the servo looks wow with that torque but after i did my simple calculation, gosh… i need even bigger torque around 50NM or even more if i use longer arm. should i use pulley and belt solution with let’s say 10:1 ratio? then how can i detect the recent angle of my arm as this is my main concern for robot arm. that’s really painful. any idea about this? 180kgfcm using belt and pulley 10:1 so i can have 1800kgfcm in the shoulder? perhaps there is some generous guys here want to share a bit about belt and pulley implementation as i’m absoluetely zero in this field. in my dummy head, it’s only “attach the servo with horn, then screw it in one side of the arm”. that works if the arm is small but just wondering how to synch the rotation between right side and left side of the arm chassis? using rod? pipe? shaft? i don’t even know the name of the components to move the joints.

  2. can i move the robot arm manually by hand, for teaching? so i can record the position and save it for certain movement set. i see servo.read() can only return the previous position but not the actual angle if i move the arm manually by hand, even when the power is on (power must be on coz i need to keep the arduino alive and my best bet is i move the hand and arduino record it if i press kind of save button :smiley: )

that’s all guys. please share your idea. i’ll use arduino due at 3.3V for the sake of more computing power and not sure, i’ll bet for AC servo with 1 controller for each servo. but i don’t have any idea how to wire/connect all 7 controllers to 1 cute tiny arduino. i wish i can stick with my first plan and go with that.

thanks guys in advance and pls help for opinion, strategy like position sensor, or anything.

Servo 100kg jenny -2.jpg

You should balance the arms if possible, or at least partially balance them, then the torques all become much more reasonable. One way to do this is set the motors/servos back across the joint so they counter balance the arm segment they are driving. Here's an example of the kind of layout: https://strobotics.com/small-6-axis-robot.htm

A lot of arm designs miss this trick and have to be much stiffer, stronger and power hungry as a result.

thanks markt,

thx alot for the link. i have many designs now :D

however, i'm still confusing about torque issue in the shoulder. it's not that easy like when building robot in small size like we can see in many 6 axis robot arm (check in http://www.aliexpress.com). it's just like put servo in each joint, the start adding command like "serwo.write(90);" and go.

do u think i have to use pulley and gear so that tiny servo can move the shoulder with heavy F? what is the formula? 60 step pulley on servo connect to 600 steps gear and i can have 10x bigger torque to move the shoulder? or simply searching for bigger servo and connect it just in one side of the arm (either left side or righ side and expecting the whole shoulder is moving as long as the T is big)?

please kindly advise how to move a component.

many thx :)

I wanted to comment on your discussion about manual movement of the arm for teaching.
With standard hobby servos, this is risky. Manually forcing a hobby servo can strip the gears. Also, if the servo is attached, then it cannot be moved manually.

I see that you are not using typical hobby servos. Have you been able to interface to them at all?

b9e4c9bf5fbff2c4816c57433b66dde1046b96eb.jpg

80a76d53084f76288154eb13b087b219f51a71bd.jpg

Your images do not show much detail for identifying these. Can you post more pics? I am interested in seeing the control board and the test on all stickers. (one is obscured by the zip tie)

do u mean this? this is still a servo from RC & toy category although it has 180 kgfcm torque and come with cheap, around $34-38. u can bargain in aliexpress from $62 and i got $34 just because i keep typing using google translate from english to chinese :D this is the picture of wiring coz i got banned or rejected when uploading this file wiring from controller to arduino

that's how to wire to arduino board.

sure if this servo is used on that robot arm toy, even just one servo, put it on the left or right side of the shoulder, it won't be a problem at all. but i'm sure there is a better way to connect one servo to move the whole arm/shoulder part,and i don't have any idea about that, probably:

  • about belt and pulley to make the torque bigger and strong enough to lift the shoulder
  • big gear put it on the left side where servo is attached and connect it using kind of rod or anything to the right side chassis of the shoulder

not sure... but yes...i have problem for that big required torque on shoulder.

ah... about moving manually using hand, perhaps this short video will give u better understanding about what i mean, teaching the arm to move in certain motion using hand and just save it the position/angle of all servo in every stop.

this is the expensive example teaching arm using hand in tokyo

and this is the cheap example which fit into my pocket and wallet :D teaching robot arm in cheap and affordable cost

@vinceherman: do u mean this one? a small servo lifting heavy load and this one also for daisy chain 26 servo, arduino, and controller: controlling 26 servo using daisy chain

simbawave: do u think i have to use pulley and gear so that tiny servo can move the shoulder with heavy F? what is the formula? 60 step pulley on servo connect to 600 steps gear and i can have 10x bigger torque to move the shoulder? or simply searching for bigger servo and connect it just in one side of the arm (either left side or righ side and expecting the whole shoulder is moving as long as the T is big)?

please kindly advise how to move a component.

many thx :)

Yes, reduction gearing increases torque at the expense of speed. You also increase losses due to friction so that needs to be factored in as it reduces effective torque somewhat.

Most servo units have a fixed speed of about 50rpm, so are seldom very high in torque. For moving a large arm you'd want at most 10 rpm (otherwise its dangerous), and that factor of five in torque would be useful.

As I said the more you can reduce the max torque requirement by clever design, the easier the mechanical drive side of things will be.

aha… thx alot for giving me the direction. just like the pic i attach for extreme example? then i should go with DC motor or stepper motor and put hall magnetic angel sensor in every joint instead of using servo directly in every joint.

i was thinking to attach servo directly in every joint and just move to certain angel easily like in many code examples found here, servo.write(90) and done :–lol. that would go like hell for smashing anything on the way :- lol

that’s why i was really confused on figuring how big servo i hv to attach. so far i got 100, 180kgsfcm at 10rpm 12V and 380kgsfcm at 5rpm 12V. my plan was to use that kind of servo for base, shoulder, and elbow.

now i hv a nice better plan to use that gear construction to increase torque using high rpm DC motor (5k rpm?) or stepper motor and add hall magnetic sensor to check the real angle of the joint. put a ball bearing will be nice in joint.

is it better concept or still i have to stick with servo?

A servo is a "high rpm DC motor" with reduction gearing and a controller built in. If you want to build your own servo you provide the control loop and the position feedback yourself, which is more complex.

Electric motors have pretty much the same performance, torque depends on rotor volume, max speed depends on build quality (bearings, brushes) and size (larger motors are rather slower typically). They are all built from copper and silicon steel, whose properties are fixed.

So for moving an arm gearing is always needed, whether built into a servomechanism, gearmotor or provided yourself.

You have some tradeoffs to think about, complexity, price, accuracy, performance, etc.