loading
 
Lynxmotion SSC control feedback
from Australia  [87 posts]
10 years
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] 10 years
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 10 years
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 10 years
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] 10 years
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 10 years
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] 9 years
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!

This forum thread has been closed due to inactivity (more than 4 months) or number of replies (more than 50 messages). Please start a New Post and enter a new forum thread with the appropriate title.

 New Post   Forum Index