When you imagine a modern day film set, a room that's full of giant cameras rigs and multiple folks on the camera crew is probably what comes to mind. For most vloggers, youtubers, or videographers, it won't be realistic to have that kind of setup. The goal of this project is to provide solo content creators the convenience of having their own camera operator.
Took a long break from the project, but I'm back now! With some fresh ideas for the project!
I've been thinking a lot about how I would like the end user to interface with the arm. Originally the idea was for the user would use a joystick to position the arm, hit a button to save as a way point and then repeat until the path was laid out. Which I think is okay, it's been done before that way, but imagining trying to position a 6 axis robot arm exactly how I wanted with 2 sticks seemed really unintuitive and potentially frustrating. What I'd really like to do, is have the user physically move the arm to the position that they want, and then click a button on the arm its self. (and have a menu on a LCD giving the user instructions kind of like a Prusa 3d printer) This way, the arm can be completely self contained, no need the be run by a computer, though I'd still like to keep that possibility open.
To make that method of control possible, I need to add some sensors and the ability to disable the motors/servos. Thankfully, the servo and stepper controllers have a disable feature built in! For adding a sensor to the axis controlld by stepper motors, I'm going to go with a relatively cheap rotary encoder meant for a dial. (PEC11R-4025F-N0024) In order to get it to read properly, I had to add a simple filter circuit (suggested in it's datasheet)
For the servos, instead of adding an external sensor, I'm going to try some that breakout their internal potentiometer. (Datan S1213)(ordered from Adafruit) They are fairly easy to use, I just need to run the analog feedback to the analog inputs on the microcontroller.
Made a ton of progress the past 7 days! The second revision of the arm got built. The only problem that required a reprint was the shoulder gear. Originally, I didn't have any support in the middle of the gear which allowed it to bend pretty easily which then caused the arm to skip teeth when under any load. I fixed that by adding spokes for support in the shoulder gear. I went ahead and did the same for the elbow gear just for good measure.
The new design had immediate improvements for the lifting capacity. When using the smaller 23HS22, it was able to lift a full kilogram 18 inches from the pivot, which is twice as much as before. For good measure I upgraded the shoulder motor to a 23HS45 which was able to lift 2.5 kilograms at 18 inches from the pivot.
The full build has a load capacity of 1 kg, which is more than enough for a gopro, may even be able to do a larger camera!
(I ran out of bolts so there is an allen wrench being used on the shoulder pivot, which is fiinnnnneeee)
The next step was creating the rotating base. For this I printed "v-wheels" to use with some 608 bearings. I arranged them around an internal spur gear that is then rotated by another nema 23 stepper motor.
With the base built, I was able to put the full arm together:
From there I took the original pan/tilt module for the gopro, added another servo, added a mounting bracket, and put it on the end of the arm to finish out the build of prototype 0.
List of mechanical changes that I'll do for the next full rev:
find ways to improve arm stability
remove all 3d printed threads (they work great for one time use but get destroyed too easily)
create a stiffer elbow linkage bracket that isn't wood
add rotation sensors to all stepper motors
buy 8 mm bolts that are the correct length for all of the pivots
reprint base pinion gear
try switching to a carbon-fiber/poly carbonate filament (PLA was held up really well but I'd like a stronger plastic for the final version)
try switching to continuous rotation servos for the camera gimbal
There's a ton to do mechanically, but prototype 0 is far enough along that I can really focus on the electronics and programming for the next week.
Once I have some initial code, I plan to do a full release of stls, code, and parts list for version 0. So look forward to that!
follow mostly daily updates on instagram @david__swed
Got the pan/tilt module to move! The Joystick is connected to my desktop that is sending the values to a raspberrypi with UDP messages. The Pi has a servo hat from Adafruit. Add a comment if you'd like to see the code!
I spent a day trying to figure out how to smooth the servos (they sound super jittery which is definitely obnoxious. I added in some code so they would accelerate and decelerate to their new target and that definitely smoothed out the motion, which was pretty jerky when starting from rest. I also added a 100uF capacitor to the servo board, but that didn't seem to help. After watching a video recorded from the gopro, I realized it actually wasn't a big deal, I couldn't notice any shaking.
With that portion done, I really wanted to expand out the project after watching this video:
The plan now is to stick a 3 axis servo gimbal out on a robot arm! I build up a prototype of the shoulder axis to test what kind of power I would need.
I started out with a 23HS22-2804S nema 23 stepper motor with a 12:1 gear reduction. This setup was barely able to lift a 500 gram water bottle placed 18" from the pivot. I figure that's about half of the power I need since I want to move the gopro around at up to 36" and it will way around 400 grams.
Just started the redesign: moved the shoulder motor off of the arm so it doesn't have to lift it's own weight, increased the gear reduction to 16:1 and I ordered a new motor with almost 3x the torque of the 23HS22. Should be able to lift a lot more!