ARC Pro

Upgrade to ARC Pro

Synthiam ARC Pro is a new tool that will help unleash your creativity with programming robots in just seconds!

#25  

Yes I guess you're right about the typical small servos with built in potentiometers. When you go to steppers they are a different animal and don't have absolute encoders or potentiometers on them(unless you want to pay a lot of money for them). Someday I'll show my method to my madness. My 6' tall robot with 6' arms can pick up 100 lbs, rotate 600 degrees and can go from floor to 10-11' high if wanted. The end effector in this case has 4-6" suction cups and can rotate upwards of about 270 degrees so picking up a sheet of 3/4 ply and flipping it over is not a problem. I assure you that I understand the fundamentals of building a robot and how servos work. My electrical engineering degree also helps. It would be nice if I could simply upload to the Arduino and ARC a value and work from there.

PRO
Synthiam
#26   — Edited

No, servos come in all shapes and sizes. We have a customer with a fleet of forklifts whose hydraulics are controlled by large servos. Large and incredibly powerful servos control the humanoid robots you see online. I ask you to read this response in detail and click on the links to read them as well.

First, let's remind ourselves what a servo is (en.wikipedia.org/wiki/Servomechanism) <- This is important to understand. Let me copy a quote for you from that page....

Quote:

A common type of servo provides position control. Commonly, servos are electric, hydraulic, or pneumatic. They operate on the principle of negative feedback, where the control input is compared to the actual position of the mechanical system as measured by some type of transducer at the output. Any difference between the actual and wanted values (an "error signal") is amplified (and converted) and used to drive the system in the direction necessary to reduce or eliminate the error. This procedure is one widely used application of control theory. 

Okay, so now that you read that, let me break each sentence down as it relates to how you should use your stepper motor.

Quote:

A common type of servo provides position control. Commonly, servos are electric, hydraulic, or pneumatic. They operate on the principle of negative feedback, where the control input is compared to the actual position of the mechanical system as measured by some type of transducer at the output. Any difference between the actual and wanted values (an "error signal") is amplified (and converted) and used to drive the system in the direction necessary to reduce or eliminate the error. This procedure is one widely used application of control theory. 

  1. Your stepper provides position control through the use of STEPS. Each STEP can be in either clock-wise or counter-clockwise direction.

Quote:

A common type of servo provides position control. Commonly, servos are electric, hydraulic, or pneumatic. They operate on the principle of negative feedback, where the control input is compared to the actual position of the mechanical system as measured by some type of transducer at the output. Any difference between the actual and wanted values (an "error signal") is amplified (and converted) and used to drive the system in the direction necessary to reduce or eliminate the error. This procedure is one widely used application of control theory.
2) Your stepper motor is electric

Quote:

A common type of servo provides position control. Commonly, servos are electric, hydraulic, or pneumatic. They operate on the principle of negative feedback, where the control input is compared to the actual position of the mechanical system as measured by some type of transducer at the output. Any difference between the actual and wanted values (an "error signal") is amplified (and converted) and used to drive the system in the direction necessary to reduce or eliminate the error. This procedure is one widely used application of control theory.
3) Your "feedback" is the count of steps given to the stepper to move in either direction relative to the starting position.

Quote:

A common type of servo provides position control. Commonly, servos are electric, hydraulic, or pneumatic. They operate on the principle of negative feedback, where the control input is compared to the actual position of the mechanical system as measured by some type of transducer at the output. Any difference between the actual and wanted values (an "error signal") is amplified (and converted) and used to drive the system in the direction necessary to reduce or eliminate the error. This procedure is one widely used application of control theory.
4) IF you add a limit switch to your stepper motor, that will remove the "error" because it sets the stepper's position as 1 (home). That means (referencing point #3) that your stepper position error is always ZERO because YOU control the exact position by providing STEPS relative to 1 (home) that you want the stepper to move. So if your stepper is geared and configured for a 360-degree rotation, you can move to position 180 and back to position 1, for example. This is because the Arduino and ARC keep track of how many steps it has taken in each direction relative to the home position.

Again, the home position is either the position that the Stepper is in when power is applied -or- if you use a limit switch, you can assign a home position to be 100% accurate.

Quote:

A common type of servo provides position control. Commonly, servos are electric, hydraulic, or pneumatic. They operate on the principle of negative feedback, where the control input is compared to the actual position of the mechanical system as measured by some type of transducer at the output. Any difference between the actual and wanted values (an "error signal") is amplified (and converted) and used to drive the system in the direction necessary to reduce or eliminate the error. This procedure is one widely used application of control theory. 
5) YES, this is how all servo mechanisms work - no matter how "Expensive" you think a robot is - it uses the same approach.

#27  

Have read it all and I can appreciate it. I am always open to constructive criticism it's the way we learn, but when it's excessive then I start to be on the defensive. I believe what they are talking about is the PID loop. Learned all about those in college physics but didn't really apply it till I worked on the automated lathe a few years ago. I used the sabertooth with the kangaroo and the servo with PID loops became very obvious if it was not tuned properly. There would be overshoot and bounce etc rather than a controlled deceleration. The hydraulic servo was on my agenda for this year and I have already done it with air pressure as well as with motors with ball screws and rack gears.  I did some experimenting this morning with the ControlCommand SetasHome and the Calibrate and had V1 at 1500 pushed start and the script noted that it was done. I then looked over at V1 and it was still at 1500. I then typed in 1 and it moved the 1500 steps. My understanding is that once the script is run it is supposed to be at the 1 location which from my experiment is telling me that it is not the case. Could you please try it on your end and verify that it works. Isn't it supposed to reset the Arduino and ARC to 1? Isn't the calibrate script supposed to start moving V1.. towards end limit switch similar to what happens if you choose the calibrate on power up mode because right now it's not moving anything. Thanks

PRO
Synthiam
#28  

Ah, I understand now with that explanation. If SetAsHome or Calibrate control commands are executed, the ARC robot skills will still show the previous position.

I added that fix to the stepper robot skill v20 for ya

#30  

I did some experimenting with the new calibration software. First I downloaded it, shut down the ARC software and brought it back up. I then moved the steppers to verify they were working and they were fine. I tried to calibrate V20 with script and it executed and completed within microseconds without any V20 motor movement. I have a feeling that there needs to be an update on the Arduino to accept the Calibrate command from script, but I'm not the expert on that. How can I check that ARC is using the latest plugin for the Stepper servo skill? I have it to update automatically on bringing the app up.

#32  

Yes I pinged it early on and verified it was Feb 23 of 2023 but that is not what I was questioning, it was the new plugin that you made for ARC for calibrating just wanted to verify it went into effect on my end. I'm pretty sure it did but it did not work.