This week's goal is to plan and sketch a potential semester project.
One of my hobbies is photography and video. I have a Canon 7D and a Gopro. I am constantly trying to emulate pro filmmakers. They have quite expensive devices that allows them to shoot action and time-lapse footage -those videos that in a few seconds show you a big span of time-, like the one below.
Last year I started making a a portable dolly cam slider, which I finished a few weeks ago. I want to use it to automate video scenes and shooting dynamic time-lapse videos (a time-lapse video where the camera also moves over time). My dolly cam slider has a stepper motor controlled by an Easydriver and Arduino. I did not fully finish the code and at the moment it lacks time-lapse mode. In full manual mode it moves left and right while controlling the speed in real time with a potentiometer. In auto mode you can save two positions A and B, and then you can go from A to B. Speed and acceleration are preset by a couple of potentiometers. It is great but it can only perform one-dimensional movement.
Final project: Portable time-lapse Video Arm
Challenge: Mode Party, dancing robot arm
Will I spend such a lot of time and resources just to store the video arm in a suitcase when I am not using it? What if I could put it in my living room and make it dance to the music? Since it will be portable I could even bring it to parties, it would be hyper cool! Truth be told I have no idea how I am going to face it right now. I need an analog input for the mic and some sort of sound analysis and then transmit the movement to the motors. I like this combination of hi-tech and stupidness. It's going to be challenging.
It must be a portable system because I want it to bring it to places where a car cannot reach like a deep forest. It must be small enought so that I can carry it in my backpack. I would like to make an arm with a reachable space of about 75 to 100 cm, so that in folded position the maximum length is 50 cm, which is a good size to carry along with the tripod. As you can see in the figure below, the farthest reachable distance is l1+l2. But also there is an unreachable space at the base when l2 is shorter than l1. So a good start is to make l1 approximately the same size as l2.
It must be also as light as I can make it. The more light it is, the less powerful motors it will need (less weight). I have some carbon fiber plates in my basement that I was going to use for a multicopter frame (which I actually never started). Carbon fiber is extremely light and stiff, so it is a perfect material for robotics. If the sizes are good for my project I will use them.
|CARBON FIBER ITEM||XY DIMENSIONS||THICKNESS|
|Plate 1||34 x 52 cm||2 mm|
|Plate 2||17 x 39 cm||3 mm|
|Plate 3. Thermal foldable||34 x 15 cm||1.5 mm|
I will have to machine them with a diamond bit because I think that it is not possible to lasercut carbon fiber.
Robots like KUKA do not have transmission, they put the motors in the joints and that's it, problem solved. There are two reasons why I need transmission. The first one is related to weight and torque. If you put the motor in the joints every preceding motor WILL have to raise this weight in addition to the weight of the camera, that means that you will need more and more powerful motor at every joint. The second reason is the frame structural system. All of this weight must be carried by the frame. Given an equal geometry of the frame, you need either a better material ($) or more material (weight, torque). If the force is transmitted through belts and pulleys, all the motors could be in the base and the arm would be very light. Motors could easily be changed, and it would not affect the arm performance. I have two options for the transmission system:
Option 1: Double tension thread
This is a cheap method for pushing and pulling a slider. If you tie the slider to a spool and rewind the spool, you are pulling the slider, hence it moves. It does not work in the opposite direction because you cannot push with a thread (you will just unwind the spool), so you need to pull from the opposite direction. With two solidary spools at each side you can make that sort of belt. It requires quite a lot of tweaking because tension cannot be controlled that easy. Since I would need a lot of these, I think I will go with option 2 instead.
Option 2: Timing Belt
This is a very precise solution. The only drawback is that you can find some cheap ones, like for 1 euro at Farnell, but they will tell you what length, what pitch, what everything. And you can just say OK. No problem whatsoever because I can now make my own timing pulley and belt connector. So I will order some of them because I haven't seen timing belts in the Fablab inventory.
For time-lapse photography you need to move the motor precisely just by a fraction of a degree. I'm not sure I can reach that level of precision with a servo, so I think I will have to use stepper motors. For Mode Party I guess it would be easier with the servos, but can be done with the steppers as well. If I were using the arm just for action movements, I might consider using servos. Anyway since I am using a transmission system it might not be a problem to change it in the future. You start liking modularity, don't you?
I will have to calculate the motors to handle the weight and torque of about 1 kg at the tip, which is the weight of a standard DSLR camera with lens. I will also have to deal with the holding torque, because when I will power off the coil of the motor to save energy, it might not hold the camera in its position. This may limit the length of the arm.
I would like my electronics to be modular, i.e. if someday someone wants to add more motor drivers, or change the microcontroller, or some part fails or burns, it can be replaced easily. The scary part of electronics is the fact that we are dealing with SMD components. SMD soldering looks very difficult to me. They all say it's easy with some practice. I just wonder how many burned boards they mean with "some".
Arduino is cheap and widely available microcontroller, and since the robotic arm is going to be open source hardware and software, it will be easy for the rest of the people to find the microcontroller if they don't want to build one for themselves.
I could try to build my own Arduino board, it would be a nice experiment. But I'm not sure that it will be worth it. I already have quite a lot of electronic components to make in my project. Also, even if I have success and manage to make it... how much will be the cost? Parts, machine time milling the board and labor will probably more than twice duplicate the cost of buying it ready made. I will ask my mentors to see if they agree with me.
Controlling a stepper motor requires a STEP pin and a DIR pin in Arduino. So the five motors need 10 digital pins (standard Arduino has eleven, from pin 2 to 13). So I could use a standard Arduino board, which is great because it's cheaper and also it's available in many form factors.
I will make motor drivers for the steppers. I like the Easydriver because it is open source hardware released under a creative commons license and I had success in the past with acceleration and deceleration movements. I still don't know if I will put all of them in the same board or I will make individual drivers. Modularity is important for me, but maybe I can save some components and time if I put all of them together.
I need an audio sensor for the music, a microphone will probably do. That should give me an analog signal to work with. But I have no clue of what kind of processing I will need so that I can move 5 motors in real time.
I would need to know where is the motor so that I can decide what to do when it has to move. I could count the steps, it would be fine as long as I do not miss steps. Or also I could make some sort of encoder, but this would need more pins I think. A third solution is limiting switches like an emergency stop. This would need also more pins.
I think that dealing with inverse kinematics will be a real challenge. Inverse kinematics is determining the angles of the motors by knowing the coordinates of the tip. These equations grow in exponential difficulty with every degree of freedom. Also, I am afraid that for some positions it could exist more that one, or even infinite solutions to the problem. I hope Arduino and I can handle it... Because if not, I'll have a piece of hardware that can only move by manually controlling each joint.
Other uses of the Robotic Arm
I also chose this project because I have been always fascinated by robotic arms. I think it is a very versatile tool that could even become the Fab Lab Joker Machine, the machine that could replace several others in the future. I remember Neil Gershenfeld talking about the assembler they are researching at MIT, a machine that will do all the processes of a Fab Lab but at atom scale. A robotic arm could be an interesting workaround before the assembler becomes a reality. Here you are a few more utilities a robot arm could be used for:
- Object manipulation
- 2D vinyl cutting
- 2D and 3D Milling
- 3D printing
- 3D scanning
- You name it... possibilities are endless
What I learned
When choosing your final project try to make something with meaning for you, something that has no commercial interest, and hence, if you don't make it, no one will. I think this is one of the most important part of this assignment and the Fab Academy philosophy itself. The most interesting feature of personal fabrication is the fact that you can make things for the market of one person. If your project is a global need with commercial interest, it will be OK, but just consider that they can do it in China, better, faster and cheaper than you.