Changes for page LSS-P - Communication Protocol
Last modified by Eric Nantel on 2024/07/03 09:42
Change comment: There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
Details
- Page properties
-
- Hidden
-
... ... @@ -1,1 +1,1 @@ 1 - false1 +true - Content
-
... ... @@ -1,5 +1,7 @@ 1 1 {{warningBox warningText="More information coming soon"/}} 2 2 3 + 4 + 3 3 (% class="wikigeneratedid" id="HTableofContents" %) 4 4 **Page Contents** 5 5 ... ... @@ -195,7 +195,7 @@ 195 195 |(% colspan="2" %)((( 196 196 ====== (% style="color:inherit; font-family:inherit" %)__Default & confirm__(%%) ====== 197 197 ))) 198 -| (%style="width:30px" %)|(((200 +| |((( 199 199 (% style="color:inherit; font-family:inherit" %)Ex: #5DEFAULT<cr> 200 200 201 201 (% style="color:inherit; font-family:inherit" %)This command sets in motion the reset of all values to the default values included with the version of the firmware installed on that servo. The servo then waits for the CONFIRM command. Any other command received will cause the servo to exit the DEFAULT function. ... ... @@ -210,7 +210,7 @@ 210 210 |(% colspan="2" %)((( 211 211 ====== (% style="color:inherit; font-family:inherit" %)__Update & confirm__(%%) ====== 212 212 ))) 213 -| (%style="width:30px" %)|(((215 +| |((( 214 214 (% style="color:inherit; font-family:inherit" %)Ex: #5UPDATE<cr> 215 215 216 216 (% style="color:inherit; font-family:inherit" %)This command sets in motion the equivalent of a long button press when the servo is not powered in order to enter firmware update mode. This is useful should the button be broken or inaccessible. The servo then waits for the CONFIRM command. Any other command received will cause the servo to exit the UPDATE function. ... ... @@ -222,21 +222,17 @@ 222 222 (% style="color:inherit; font-family:inherit" %)Note: After the CONFIRM command is sent, the servo will automatically perform a RESET. 223 223 ))) 224 224 225 -|(% colspan="2" %)((( 227 +(% class="wikigeneratedid" %) 228 +====== ====== 229 + 226 226 ====== (% style="color:inherit; font-family:inherit" %)__Confirm__(%%) ====== 227 -))) 228 -|(% style="width:30px" %) |((( 231 + 229 229 (% style="color:inherit; font-family:inherit" %)Ex: #5CONFIRM<cr> 230 230 231 231 (% style="color:inherit; font-family:inherit" %)This command is used to confirm changes after a Default or Update command. 232 232 Note: After the CONFIRM command is sent, the servo will automatically perform a RESET. 233 -))) 234 234 235 -|(% colspan="2" %)((( 236 -====== (% style="color:inherit; font-family:inherit" %)__ID Number__(%%) ====== 237 -))) 238 -|(% style="width:30px" %) |((( 239 -This assigns ID #5 to the servo previously assigned to ID 0 237 +====== (% style="color:inherit; font-family:inherit" %)__ID Number (**ID**)__(%%) ====== 240 240 241 241 (% style="color:inherit; font-family:inherit" %)Configure ID Number (**CID**) 242 242 ... ... @@ -249,12 +249,9 @@ 249 249 Ex: #254QID<cr> might return *254QID5<cr> 250 250 251 251 In this case, the broadcast ID is used to ensure the servo connected will reply with the ID. This can be used in case the ID assigned to a servo is forgotten. 252 -))) 253 253 254 -|(% colspan="2" %)((( 255 -====== (% style="color:inherit; font-family:inherit" %)__Enable CAN Terminal Resistor__(%%) ====== 256 -))) 257 -|(% style="width:30px" %) |((( 251 +====== (% style="color:inherit; font-family:inherit" %)__Enable CAN Terminal Resistor (**ET**)__(%%) ====== 252 + 258 258 Query Enable CAN Terminal Resistor (**QET**) 259 259 260 260 Ex: #5QET<cr> might return *QET0<cr> ... ... @@ -266,35 +266,24 @@ 266 266 (% style="color:inherit; font-family:inherit" %)Ex: #5CET1<cr> 267 267 268 268 (% style="color:inherit; font-family:inherit" %)This commands sets servo with ID 5 as being the last in the CAN Bus. The last servo in a CAN bus must be configured this way. 269 -))) 270 270 271 -|(% colspan="2" %)((( 272 -====== __USB Connection Status__ ====== 273 -))) 274 -|(% style="width:30px" %) |((( 265 +====== __USB Connection Status (**UC**)__ ====== 266 + 275 275 Query USB Connection Status (**QUC**) 276 276 277 277 Ex: #5QUC<cr> might return *5QUC1<cr> meaning the servo is connected via USB 278 -))) 279 279 280 -|(% colspan="2" %)((( 281 -====== __Firmware Release__ ====== 282 -))) 283 -|(% style="width:30px" %) |((( 271 +====== __Firmware Release (**FR**)__ ====== 272 + 284 284 Query Firmware Release (**QFR**) 285 285 286 286 Ex: #5QFR<cr> might return *QFR11<cr> meaning it has a (random) firmware release version number 11. 287 287 288 288 This is used to verify if the firmware on the servos is up to date, or which version is running on the microcontroller. 289 -))) 290 290 291 291 == Motion == 292 292 293 -|(% colspan="2" %)((( 294 -====== __Position in Degrees__ ====== 295 -))) 296 -|(% style="width:30px" %) |((( 297 -Position in Degrees (**D**) 281 +====== __Position in Degrees (**D**)__ ====== 298 298 299 299 Example: #5D1456<cr> 300 300 ... ... @@ -313,24 +313,15 @@ 313 313 Ex: #5QDT<cr> might return *5QDT6783<cr> 314 314 315 315 The query target position command returns the target virtual position during and after an action which results in a rotation of the servo horn. In the example above, the servo is rotating to a virtual position of 678.3 degrees. Should the servo not have a target position or be in wheel mode, it will respond with the last target position used. 316 -))) 317 317 318 -|(% colspan="2" %)((( 319 -====== __(Relative) Move in Degrees__ ====== 320 -))) 321 -|(% style="width:30px" %) |((( 322 -Move in Degrees (**MD**) 301 +====== __(Relative) Move in Degrees (**MD**)__ ====== 323 323 303 + 324 324 Example: #5MD123<cr> 325 325 326 326 The relative move command causes the servo to read its current position and move the specified number of tenths of degrees in the corresponding position. For example if the servo is set to rotate CW (default) and an MD command of 123 is sent to the servo, it will cause the servo to rotate clockwise by 12.3 degrees. Negative commands would cause the servo to rotate in the opposite configured direction. 327 -))) 328 328 329 -|(% colspan="2" %)((( 330 -====== __Wheel Mode in Degrees__ ====== 331 -))) 332 -|(% style="width:30px" %) |((( 333 -Wheel mode in Degrees (**WD**) 308 +====== __Wheel Mode in Degrees (**WD**)__ ====== 334 334 335 335 Ex: #5WD90<cr> 336 336 ... ... @@ -341,13 +341,8 @@ 341 341 Ex: #5QWD<cr> might return *5QWD90<cr> 342 342 343 343 The servo replies with the angular speed in degrees per second. A negative sign would indicate the opposite direction (for factory default a negative value would be counter clockwise). 344 -))) 345 345 346 -|(% colspan="2" %)((( 347 -====== __Wheel Mode in RPM__ ====== 348 -))) 349 -|(% style="width:30px" %) |((( 350 -Wheel moed in RPM (**WR**) 320 +====== __Wheel Mode in RPM (**WR**)__ ====== 351 351 352 352 Ex: #5WR40<cr> 353 353 ... ... @@ -358,14 +358,8 @@ 358 358 Ex: #5QWR<cr> might return *5QWR40<cr> 359 359 360 360 The servo replies with the angular speed in rpm. A negative sign would indicate the opposite direction (for factory default a negative value would be counter clockwise). 361 -))) 362 362 363 -|(% colspan="2" %)((( 364 -====== __(Relative) Move in Degrees__ ====== 365 -))) 366 -|(% style="width:30px" %) |((( 367 -(% class="wikigeneratedid" %) 368 -Move in Degrees (**MD**) 332 +====== __(Relative) Move in Degrees (**MD**)__ ====== 369 369 370 370 (% class="wikigeneratedid" id="HExample:235M15003Ccr3E" %) 371 371 Example: #5M1500<cr> ... ... @@ -372,13 +372,8 @@ 372 372 373 373 (% class="wikigeneratedid" id="HTherelativemoveinPWMcommandcausestheservotoreaditscurrentpositionandmovebythespecifiednumberofPWMsignal.ForexampleiftheservoissettorotateCW28default29andanMcommandof1500issenttotheservo2Citwillcausetheservotorotateclockwiseby90degrees.NegativePWMvaluewouldcausetheservotorotateintheoppositeconfigureddirection." %) 374 374 The relative move in PWM command causes the servo to read its current position and move by the specified number of PWM signal. For example if the servo is set to rotate CW (default) and an M command of 1500 is sent to the servo, it will cause the servo to rotate clockwise by 90 degrees. Negative PWM value would cause the servo to rotate in the opposite configured direction. 375 -))) 376 376 377 -|(% colspan="2" %)((( 378 -====== __Query Status__ ====== 379 -))) 380 -|(% style="width:30px" %) |((( 381 -Query Status (**Q**) 340 +====== __Query Status (**Q**)__ ====== 382 382 383 383 The status query describes what the servo is currently doing. The query returns an integer which must be looked up in the table below. 384 384 ... ... @@ -391,7 +391,7 @@ 391 391 | |ex: *5Q3<cr>|3: Accelerating|Increasing speed from rest (or previous speed) towards travel speed 392 392 | |ex: *5Q4<cr>|4: Traveling|Moving at a stable speed 393 393 | |ex: *5Q5<cr>|5: Decelerating|Decreasing from travel speed towards final position. 394 -| |ex: *5Q6<cr>|6: Holding|Keeping current position (in EM0 mode, return will nor mally be holding)353 +| |ex: *5Q6<cr>|6: Holding|Keeping current position (in EM0 mode, return will nornally be holding) 395 395 | |ex: *5Q7<cr>|7: Outside limits|{More details coming soon} 396 396 | |ex: *5Q8<cr>|8: Stuck|Motor cannot perform request movement at current speed setting 397 397 | |ex: *5Q9<cr>|9: Blocked|Similar to stuck, but the motor is at maximum duty and still cannot move (i.e.: stalled) ... ... @@ -408,29 +408,18 @@ 408 408 | |ex: *5Q1<cr>|Current limit has been passed|Something cause the current to either spike, or remain too high for too long 409 409 | |ex: *5Q2<cr>|Input voltage detected is below or above acceptable range|Check the voltage of your batteries or power source 410 410 | |ex: *5Q3<cr>|Temperature limit has been reached|The servo is too hot to continue operating safely. 411 -))) 412 412 413 -|(% colspan="2" %)((( 414 -====== __Limp__ ====== 415 -))) 416 -|(% style="width:30px" %) |((( 417 -Limp (**L**) 371 +====== __Limp (**L**)__ ====== 418 418 419 419 Example: #5L<cr> 420 420 421 421 This action causes the servo to go "limp". The microcontroller will still be powered, but the motor will not. As an emergency safety feature, should the robot not be doing what it is supposed to or risks damage, use the broadcast ID to set all servos limp #254L<cr>. 422 -))) 423 423 424 -|(% colspan="2" %)((( 425 -====== __Halt & Hold__ ====== 426 -))) 427 -|(% style="width:30px" %) |((( 428 -Halt & Hold (**H**) 377 +====== __Halt & Hold (**H**)__ ====== 429 429 430 430 Example: #5H<cr> 431 431 432 432 This command causes the servo to stop immediately and hold that angular position. It overrides whatever the servo might be doing at the time the command is received (accelerating, travelling, deccelerating, etc.) 433 -))) 434 434 435 435 == Motion Setup == 436 436