Moved this response to the proper forum.
@tfmccarthy wrote here:
https://forum.dronebotworkshop.com/2018/robot-arm-controller-building-the-dfrobot-5-dof-robot-arm/#post-49720
I'm starting to sketch out a project to add kinematics and automation to this project.
https://dronebotworkshop.com/dfrobot-5-dof-robot-arm/
I want to make sure I'm not repeating prior work. I did a forum search on "Robot Arm" and didn't find anything relevant to such an extension. The idea is to use the https://docs.arduino.cc/libraries/fabrik2d/ to replace the potentiometers that control the servos and the automate positioning the arm. I want to substitute an ESP32 for the Arduino and SG90 servos for the more expensive servos. I'm also trying (floundering) to fabricate the chassis with balsa wood.
I would suggest that using cheaper servos will degrade the performance of the project.
Is it meant to be a practical working robot arm or just a demo?
Is the balsa wood to make it lighter for the cheapo motors?
So it is not exactly the dfrobot project.
Sorry about the forum mismatch. Thanks for correcting it.
... using cheaper servos will degrade the performance of the project.
Yes, but it's only for the enhancement demo. It's budgetary on my end. The servos etc. should be replaceable. The code should also work with the original project. I just don't have $150 to allocate to a kit for a one-shot project.
Is it meant to be a practical working robot arm or just a demo?
This is a demo. My end goal is not an industrial arm but a humanoid robot arm similar to the Poppy torso bot but on a smaller scale. (To that end I'm looking for a way to measure torque for a servo.)
Is the balsa wood to make it lighter for the cheapo motors?
Yes, but it's also budgetary, I don't have 3D printer and would like to be able to fabricate custom parts. However, I do need a way to measure servo torque and strength. FWIW, the DFRobot seems overpowered to me.
So it is not exactly the dfrobot project.
Yes. If I do it right, it should demo how to use the kinematics code (and the Ramp library) to control the servos and with that write some automation. My recollection is that automation was one of the ideas you planned to do at some point.
Since this project was back in 2018, I wasn't sure if there was something more done with it. Hence my post. Now I see there's some complaint that it's too old. I'm sorry. I didn't realize there was an expiration date on these.
No use by date as you are not actually going to buy that product.
I have seen little wood based arms on the internet so probably worth a search.
I have seen little wood based arms on the internet so probably worth a search.
I'm probably on a wild goose chase and need to rethink it. sigh.
SG90 servos are small, lightweight, and cost-effective but have limited torque (1.8 kg-cm at 6V) and can suffer from precision and durability issues under heavy or prolonged loads. If the arm will lift or move objects with significant weight, consider MG90S servos (metal gear versions of SG90s) or servos with higher torque ratings (e.g., MG996R). If this is primarily a proof-of-concept or an educational project, SG90s are fine. However, for a more practical application, they might struggle, especially with multi-joint movement. If you aim for a practical robot arm capable of handling tasks beyond light demonstration, go for a stronger chassis and Higher torque servos. Here is also a very good robotic arm project with OpenCV. You can take a look at this. https://www.pcbway.com/project/shareproject/Robot_Arm_to_implement_CV_projects_05201795.html
The link is an interesting bot. I like the look of the gripper. However, my goal is, as you say, more proof of concept and software demo. My idea runs more towards the Poppy torso robot, at a smaller scale. So I'm thinking mainly about a humanoid arm. I want to get the kinematics in place, and that should work with the DFRobot arm as well. The fact that I'm using wood rather than aluminum shouldn't affect the kinematic code, either.
Thanks for the link.
Your end goal/s seems rather vague to me? There is a big difference between the poppy robot arms (two arms, non functional hands) and the dfrobot arm. It seems to me no useful suggestions are possible if the suggestions are based on guesses about the arm design.
I have seen popsicle sticks glued to little servo motors to build a robot arm.
A Poppy like example. You can leave out the legs and replace them with a single rotating base.
https://www.aliexpress.com/item/1531636741.html
I assume you have read Bill's tutorials including using servos with the esp32
https://dronebotworkshop.com/servo-motors-with-arduino/
I use the PCA9685 as explained in his tutorial.
https://dronebotworkshop.com/esp32-servo/
This is a James Bruton robot that looks a bit like the Poppy Torso robot, might give some ideas?
He uses a smoothing code for the servo motors something to consider?
Your end goal/s seems rather vague to me?
When I read my initial reply to this I realized it came off as too defensive and that's not what I want to do. So this is a second attempt that I hope is clearer and less defensive.
What I'm initially trying to do is replicate the DFRobot arm with different material and servos. Then I want to control the arm using kinematic software. The software should be useable with the original DFRobot and servos, allowing the robot to be automated and remove the all the POTs. IIRC, Bill wanted to add a DOF turntable, which the kinematic software would allow, so it's extendable.
Given that, I want to reuse the arm for a humanoid robot, similar to the Poppy robot arm. Again, replicating the arm but using different material (and size) and the cheaper servos. With one arm I can then replicate the other and instead of buying the Poppy Torso, I can make a smaller version. (The goal would be a Poppy Torso at about half scale.)
Etc. There are lots of bots out there that this could be done with. I don't want to buy and assemble them as I don't get much satisfaction from that. I don't have a 3D printer (and probably never will) but I can learn to send out for them if I need to. I think I can learn how to shape balsa wood and maybe even aluminum.
I hope this gives a better idea of what I'm up to.
I assume you have read Bill's tutorials including using servos with the esp32
Yeah.
I use the PCA9685 as explained in his tutorial.
I just got one and I'm having some issues so you may be able to help me out there. I'm putting my problem report post together now.
This is a James Bruton robot that looks a bit like the Poppy Torso robot, might give some ideas?
He uses a smoothing code for the servo motors something to consider.
Yes, I've watched those. He's got some great stuff but his scale is too big for me. Still, he's remarkable. And I always learn something.
The code is good, but I think the kinematic code might be better. That's something I want to find out.
I hope this is right up your alley.
Aside: organizing this question has been a major PITA for me for some reason.
The Problem
This has me baffled and frustrated. I'm trying to replicate the PCA9685 example from Bill's ESP32 Servo video
https://dronebotworkshop.com/esp32-servo/
The behavior I'm seeing is unstable:
The Circuit
My implementation of the circuit
I used 3 resistors in series to get a 2.55k ohm resistance; a 2k, a 330, and a 220. U used the 5v from the power supply to power the servos and the 3v from the ESP to power the curicuit.
Note there is no common ground between the 5v and 3v.
The Software
I previously updated the IDE and the esp32 (v 3.0.7) but needed to install the Adafruit driver library. That upgrade also upgraded the BUSIO library.
IDE Version
Version: 2.3.3 Date: 2024-09-25T09:41:18.242Z CLI Version: 1.0.4 Copyright © 2024 Arduino SA
When I build I get
FQBN: esp32:esp32:esp32 Using board 'esp32' from platform in folder: ...\Arduino15\packages\esp32\hardware\esp32\3.0.7 Using core 'esp32' from platform in folder: ...\Arduino15\packages\esp32\hardware\esp32\3.0.7 ... Using library Wire at version 3.0.7 ... Using library Adafruit PWM Servo Driver Library at version 3.0.2 ... Using library Adafruit BusIO at version 1.16.2 ... Using library SPI at version 3.0.7 ... ... Sketch uses 302657 bytes (23%) of program storage space. Maximum is 1310720 bytes. Global variables use 20704 bytes (6%) of dynamic memory, leaving 306976 bytes for local variables. Maximum is 327680 bytes.
Adafruit Sample
As a control I built the Adafruit servo example that comes with the PCA9685 library. This uses the same circuit but changes the servo connection,
Note both servos twitch at the end.
Other Observations
The ESP is connected on COM3. Uploading the sketch is sporadic. Teh upload throws an exception. The most stable method I can get is to disconnect the GPIO pins and the 3v power. Occasionally I need to disconnect the USB as well.
Pressing the reset button stops the sketch and requires a hard restart (full disconnect) to get it running again.
At this point I've gone crossed eyed on this and may be drain bamaged. While it may embarrass me, I'm hoping it's a simple circuit fault. But I'll be jiggered if I can see it. And software issues are exasperating.
To be honest I am not sure if I ever used the PCA9685 although I did buy one. In helping someone else with an esp32 NOW example I used two servos but the PCA9685 wasn't required. I can try and find time today to reproduce Bill's example and if that works try and figure out what you have done differently that may be causing the problem.
You can use the 9g servos to make a small robot arm, see the Mini Robotic Arm example. It uses a 3d printed arm so I am not sure how you can reproduce something as good using balsa wood. I know from experience you need sturdy joints in the arm no sloppy movements.
To be honest I am not sure if I ever used the PCA9685 although I did buy one. In helping someone else with an esp32 NOW example I used two servos but the PCA9685 wasn't required. I can try and find time today to reproduce Bill's example and if that works try and figure out what you have done differently that may be causing the problem.
Sorry, my mistake. I thought you said you had used the PCA9695. Maybe someone else will spot a defect. And there are still other (less desirable) options I can follow up on.
The mini arm looks promising.
In terms of strength, lamination is going to be my best friend.
I may well have tried out the PCA9695 a couple of years ago I can't remember. Doesn't really matter for as I wrote I will try it out controlling multiple servos with an ESP32 today or soon. Might even try a simple robot arm if I can come up with a suitable design, for like you I don't have a 3d printer.
Although if you know someone with a 3D printer they might give you a price for printing the Mini Robotic Arm.
You can use the 9g servos to make a small robot arm, see the Mini Robotic Arm example. It uses a 3d printed arm so I am not sure how you can reproduce something as good using balsa wood.
I just watched this video. Yeah, that's pretty close to my idea. The mini has 4DOF but has a rotating base rather than a rotating gripper.
Well, it wasn't an original idea anyway. Maybe I can salvage a few ideas from the joints and overall design.
I wonder what the overall cost is.
Nice find.