I’ve recently been working with one of the ALA5 arms. I’ve been having some trouble getting the communication running with it. In particular, I can send (and execute) position commands, but none of the query commands result in a response over the serial line. I am sure there is no response, as the TX1 LED on the SSC32 does not light up. I’ve also made sure it is not a problem with my implementation by using the LSS Python Library and the getPosition() function.
The AL5 series or arm use an SSC-32U paired with standard RC servos and are not LSS (Lynxmotion Smart Servos) so the protocol for LSS will not work on them. You can have a look at the SSC-32U user guide HERE.
If you want to use the arm, it’s also possible to use the Lynxmotion SES-V1 FlowArm application HERE.
Let us know if you have questions about the communication.
Yes indeed. But if I understand correctly a query such as “#0Q\r” should still result in a response over the serial line, isn’t it? And for me none of the queries for any of the servos results in a response, even though I can command the servos through the same line, i.e. cabling must be correct
The query “#0Q\r” is not something that will work with the SSC-32U protocol, it’s for the LSS servos.
What are you trying to query exactly ?
If you connect to the SSC-32U with the correct COM and BAUDRATE you should be able to send a simple “VER/r” which will return the version of firmware on the board. That should tell you it’s working.
Ideally, I would like to query the position. However, any successful query would be excellent. Right now, I do not get any response from the robot, no matter which query I send. I can send commands, though. Below, you’ll find my Python test script. Maybe the problem also sits 20 cm in front of the screen and I’m doing something wrong
import serial
# I checked that the baudrate is matching
ser = serial.Serial('/dev/ttyUSB0', 115200)
ser.timeout = 0.25
# This command works perfectly
cmd = "#0 P1500 S100 \r"
ser.write(bytes(cmd, 'ascii'))
# This query doesn't work. The returned string is empty
qr = f"#0 VER\r"
ser.write(bytes(qr, 'ascii'))
print("Reading: " + str(ser.read_all(), encoding='ascii') + " ... Done")
# Same here and for querys such as "#0Q\r", "#0QP\r", etc
qr = f"VER\r"
ser.write(bytes(qr, 'ascii'))
print("Reading: " + str(ser.read_all(), encoding='ascii') + " ... Done")
Query position is something you cannot do with RC servos and SSC-32U, it’s a smart servo feature.
There is no information shared between the servo and the SSC-32U so it cannot provide it to the user.
I can’t really troubleshoot code but quickly I can spot that you query of version is wrong since it’s addressed to a servo ID.
“#0 VER\r”
should be
“VER\r”