|
Lynxmotion SSC control feedback from Australia [87 posts] |
17 year
|
Is it possible to get servo position feedback, so that one could know if the move has been completed and what position is the servo at.
There are two possible feedback types: The "Query Movement Status" and "Query Pulse Width".
In the most basic programming scheme it for the first one transmitting 'Q <cr>' will return "." if the previous move is complete, or "+" if it is still in progress. There will be a delay of 50 microseconds to 5 milliseconds before the response is sent.
The second scheme is to transmit 'QP <arg> <cr>'. This will return a single byte (in binary format) indicating the pulse width of the selected servo with a resolution of 10 microseconds. For example, if the pulse width is 1500 microseconds, the returned byte would be 150 (binary).
Multiple servos may be queried in the same command. The return value will be one byte per servo. There will be a delay of at least 50 micro to 5 milliseconds before the response is sent. Typically the response will be started within 100 microseconds.
So, is it possible for you guys to modify the Lynxmotion_SSC module so that it incorporates the feedback. I would truly appreciate it.
Note: I want use it on my Hexapod for controlling it's walking.
Regards,
Nemanya
|
|
|
from Australia [87 posts] |
17 year
|
Is there any way to receive feedback from the lynxmotion SCC-32 through RoboRealm? I can do it through Matlab easily, but it would be extremely beneficial to get it through RoboRealm as it would allow for the implementation of fuzzy logic control.
|
|
|
Anonymous |
17 year
|
Nemanya,
Seems that we missed your earlier post for some reason. Sorry about that!
We'll get the feedback mechanism out in about a day or so and will post here when its ready to go. We will use the QP message to better indicate where the servo is during its movement.
STeven.
|
|
|
Anonymous |
17 year
|
Nemanya,
The Lynxmotion SSC-32 now has built in feedback capability. You will also see the scroll bars move in accordance to that feedback. Note that the feedback is only active if a variable is selected and is NOT used when under manual scroll bar control.
Let us know if this suits your needs.
Please download ver 1.7.22.6
STeven.
|
|
|
from Australia [87 posts] |
17 year
|
I've downloaded the new version. Haven't had too much luck. When I run it, how can I get the feedback value, so that the program can use it to decide where the servo is on its course. The main reason is to know where it is stopped during the motion.
program.robo
|
|
|
Anonymous |
17 year
|
Nemanya,
I think either you or us may have some confusion as to how the feedback from the SSC works. The feedback we *think* is from the servo board and not the actual servo. If you force the servo not to move (not a recommended action) the servo board will still think that the servo is moving through the motion and will not indicate that the servo has stopped for any reason. We don't think you can use it as a bump sensor??
To tell how far along the current movement is you would check the variable x_position (which you should set BEFORE the lynxmotion SSC module which is not the case in the above included script) to see what that variable value is. You could do this is the same VBScript module (as processing loops around anyhow) before resetting it with the desired value. It will seems a little strange but once you understand that the pipeline is in essence the innards of a infinite loop things may start to make more sense.
So you program might do something like:
if GetVariable("x_position") = 2000 then
write "We're done!!"
else
SetVariable "x_position", 2000
end if
which would write in the message box in the VBScript GUI "We're done!!" once the servo reaches the 2000 position.
STeven.
|
|
|
Le from United States [5 posts] |
16 year
|
I've been trying to get feedback from the SSC-32 as well. However, using the Q query is enough for me. I'm trying to use the Serial module to receive the Q query output(which is either "." or "+"). But so far, nothing works. My send sequence works:
#0 P[p0] #1 P[p1] #2 P[p2] #16 P[p16] #17 P[p17] #18 P[p18] T[tim] <cr>
Q <cr>
for my receive seq I used:
[ret]<lf>
The variable ret does not update and stays as 0, which is what I set its default to.
Am I using the wrong approach here? Thanks for any help!
|
|