by PaulL » Sun Sep 04, 2011 6:21 am
by PaulL
Sun Sep 04, 2011 6:21 am
I like your enthusiasm!
Thanks!
I try! Some things I get fired up about, robotics is one of them! It's my entire life's learning and interests all rolled into one hobby!
If you can create some kind of motion profile editor it will be a great way to test all these theories.
Regarding motion profile editor - yes, I will likely have some form of graphical editor at some point.
Regarding theories - I have already done testing on my theories!
I have run a few servos at once (though, updating all PWM outs on the Roboard) with accel / decel, but the servos weren't in my bot, it was just horns moving - not much to see. You should know, your post has refocused my efforts a bit. I realized, I post a lot about theories, and haven't gone so far as to get my testing to a "full up" demonstrable level (walking around w/ accel / decel using my .Net Roboard code, etc). I also was not making as much progress on my control engine as I would have liked. That said, I've been working towards exactly that. I've put the side-projects aside, and have been focusing purely on the control engine and getting to a state where I can do a video to demonstrate motion. It's coming, I assure you!
Re open servo editor - Yup, that's what I have in mind, an editor very much like that one. It gets tricky with fixed accel / decel, as all you can alter is whether to use accel or decel, and duration and end point, but I've not written off the ability to do interpolation for curve smoothing (would be something like a large dataset to smooth a sharp transition).
At some point, I may do a full RN-1 to Open Servo conversion, but that's a possibly down the road kind of thing.
I agree with you about position and duration. but there are are several ways of defining position/duration. the servo should essentially go through a fluid path interpolating between a set of "waypoints"+timestamps.
Scenario1: the servo moves between the waypoints and can do what he wants as long as he gets to the waypoint on time.
Scenario2: same as scenario1 but in addition he traverses each waypoint at a given speed!
My plan is to stick to the intent of Scenario 1, but in my approach, a given speed can be specified in calling for "linear interpolation" of motion which introduces no accel / decel, and speed becomes a function of distance / time.
btw: moving several servos in sync is what CNC machines do at great precision. (The CNC world has an ancient control language for this called G-code.). I'm about to engage in modifying a low cost mill called MF70 to make it into a CNC. and it is quite frustrating to discover that no one on the net has used RC servos with modified firmware to control the XYZ axises. everyone seems to use these *@#$ steppers that require amplifier boards, controller boards and parallel ports on the PC .. whereas using servos seems like a good idea but if no one is doing it then i'm probably wrong.
Yah, I can relate - I have a 3 axis mill (Seig X2) in the other room that uses TurboCNC to drive the G-201's and 640 oz/in steppers! I can do some manual g-code, but am by no means a g-code wizard.
Regarding servos and CNC, you can do this, but the resolution is what will bite you.
If you use a servo with an optical encoder or similar, you could do an OpenServo-like mod to produce RPM's (instead of just <1 RPM angular motion) with high resolution - that would be possible! Can't speak for the life of the servo, it depends...
Regarding open loop (no positional feedback) versus closed loop (positional feedback) - my CNC machine is open-loop, but I don't use it for production. If I did, I'd put some encoders on it. For one-off's, I don't find it to be all that critical.
Regarding backlash - In my setup, I purchased a conversion kit w/ ballscrews that have "oversized" balls in the nuts to reduce backlash. Other solutions incorporate two ballnuts w/ a spring between them, there are yet others. Helical couplers are also a means to reduce backlash, and there are many other coupler options for motor to shaft. The couplers I have from stepper to screw have virtually no backlash (forget what type they are, they have a sliding plate - but for what I do, it's good enough).
What I invested wasn't cheap, but I wanted to have a motor / driver / controller setup I could transfer to a knee mill some day (like a Bridgeport).
Backlash sucks, but it's part of a CNC machine. You also have deflection - deflection in the head, deflection in the tool, and to make matters worse, these change with material, feed rate, tool type, tool sharpness, tool speed, many factors. Depending on how your Z is built, deflection can be more of an issue at varying heights. In my machine, I'm at a point where deflection is more of an issue than backlash, and this thing is mostly cast iron!
Oil must exist in a film between bearing balls and surfaces, oil is not a fixed variable.
What I've found is simply this: you can compensate for backlash, deflection, and most of the inadequacies of the mechanics of a machine, but they will always exist at some level. The trick is to set up your CNC program with suitable backlash compensation, and modify the CNC job as needed to get the results you want. At some point, the accuracy is impossible to chase down - there is truly no such thing as "perfect", but there is a heck of a lot of "good enough"!
Problem is, "good enough" CAN involve a fair amount of trial, error, and money.
Take Care,
Paul
I like your enthusiasm!
Thanks!
I try! Some things I get fired up about, robotics is one of them! It's my entire life's learning and interests all rolled into one hobby!
If you can create some kind of motion profile editor it will be a great way to test all these theories.
Regarding motion profile editor - yes, I will likely have some form of graphical editor at some point.
Regarding theories - I have already done testing on my theories!
I have run a few servos at once (though, updating all PWM outs on the Roboard) with accel / decel, but the servos weren't in my bot, it was just horns moving - not much to see. You should know, your post has refocused my efforts a bit. I realized, I post a lot about theories, and haven't gone so far as to get my testing to a "full up" demonstrable level (walking around w/ accel / decel using my .Net Roboard code, etc). I also was not making as much progress on my control engine as I would have liked. That said, I've been working towards exactly that. I've put the side-projects aside, and have been focusing purely on the control engine and getting to a state where I can do a video to demonstrate motion. It's coming, I assure you!
Re open servo editor - Yup, that's what I have in mind, an editor very much like that one. It gets tricky with fixed accel / decel, as all you can alter is whether to use accel or decel, and duration and end point, but I've not written off the ability to do interpolation for curve smoothing (would be something like a large dataset to smooth a sharp transition).
At some point, I may do a full RN-1 to Open Servo conversion, but that's a possibly down the road kind of thing.
I agree with you about position and duration. but there are are several ways of defining position/duration. the servo should essentially go through a fluid path interpolating between a set of "waypoints"+timestamps.
Scenario1: the servo moves between the waypoints and can do what he wants as long as he gets to the waypoint on time.
Scenario2: same as scenario1 but in addition he traverses each waypoint at a given speed!
My plan is to stick to the intent of Scenario 1, but in my approach, a given speed can be specified in calling for "linear interpolation" of motion which introduces no accel / decel, and speed becomes a function of distance / time.
btw: moving several servos in sync is what CNC machines do at great precision. (The CNC world has an ancient control language for this called G-code.). I'm about to engage in modifying a low cost mill called MF70 to make it into a CNC. and it is quite frustrating to discover that no one on the net has used RC servos with modified firmware to control the XYZ axises. everyone seems to use these *@#$ steppers that require amplifier boards, controller boards and parallel ports on the PC .. whereas using servos seems like a good idea but if no one is doing it then i'm probably wrong.
Yah, I can relate - I have a 3 axis mill (Seig X2) in the other room that uses TurboCNC to drive the G-201's and 640 oz/in steppers! I can do some manual g-code, but am by no means a g-code wizard.
Regarding servos and CNC, you can do this, but the resolution is what will bite you.
If you use a servo with an optical encoder or similar, you could do an OpenServo-like mod to produce RPM's (instead of just <1 RPM angular motion) with high resolution - that would be possible! Can't speak for the life of the servo, it depends...
Regarding open loop (no positional feedback) versus closed loop (positional feedback) - my CNC machine is open-loop, but I don't use it for production. If I did, I'd put some encoders on it. For one-off's, I don't find it to be all that critical.
Regarding backlash - In my setup, I purchased a conversion kit w/ ballscrews that have "oversized" balls in the nuts to reduce backlash. Other solutions incorporate two ballnuts w/ a spring between them, there are yet others. Helical couplers are also a means to reduce backlash, and there are many other coupler options for motor to shaft. The couplers I have from stepper to screw have virtually no backlash (forget what type they are, they have a sliding plate - but for what I do, it's good enough).
What I invested wasn't cheap, but I wanted to have a motor / driver / controller setup I could transfer to a knee mill some day (like a Bridgeport).
Backlash sucks, but it's part of a CNC machine. You also have deflection - deflection in the head, deflection in the tool, and to make matters worse, these change with material, feed rate, tool type, tool sharpness, tool speed, many factors. Depending on how your Z is built, deflection can be more of an issue at varying heights. In my machine, I'm at a point where deflection is more of an issue than backlash, and this thing is mostly cast iron!
Oil must exist in a film between bearing balls and surfaces, oil is not a fixed variable.
What I've found is simply this: you can compensate for backlash, deflection, and most of the inadequacies of the mechanics of a machine, but they will always exist at some level. The trick is to set up your CNC program with suitable backlash compensation, and modify the CNC job as needed to get the results you want. At some point, the accuracy is impossible to chase down - there is truly no such thing as "perfect", but there is a heck of a lot of "good enough"!
Problem is, "good enough" CAN involve a fair amount of trial, error, and money.
Take Care,
Paul