I have been working on building a serial controller to send the ODrive serial commands, and I seem to be running into an issue with the serial connection every once in awhile.
My goal is to be able to run a system using the setvelocity command being able to send a command at most 20 times a second. I am running into an issue while sending commands at around 2 or 3 commands a second with the serial seemingly timing out. The motors stop spinning, and I can’t send or receive anything to or from the ODrive.
Is there a checksum that I can look for after sending a command to check to see if the command was received before sending another?
I’m testing with the commented out section. I do not need to write parameters in my project.
Hopefully it will be fixed in the next month. But madcowswe can answer exactly.
I will check into setting up VSCode to modify the source code. Although, I think I am going to start up a similar project using python until there is a fix for the issue.
There is bug we are working on fixing which means that there may be collisions between the two interfaces.
Can you try to disable the native interface in device manager?
first test with devel branch -> the communication breaks.
second test with deactivated native device in device manager -> communication breaks too.
third test with commented out parts of “else if (cmd[0] == ‘w’) { // write property” in the ascii_protocol.cpp -> communication runs without problems.
I also attempted to test the serial communication again by disabling the native interface. It appears that the communication still breaks. I decided to lower the rate to about 10 calls a second; and it still breaks after a bit.
Okay thanks for trying. I have made a separate issue on github to track this.
Can you guys help me out with some details that will help me to reproduce the issue here? What is your OS, what commands are you sending? using what program? Other details? Thanks!
I’ve been struggling with faulting serial on my Ofrive for a few weeks and finally realized that it’s on the ODrive side.
Anyway…any quick fixes? I’m talking UART via arduino and using the example program as a guide.
Is there a way to make it wake back up? It crashes my robot and I have to do a reboot.
I haven’t tested switching to say Idle mode and then back? Does anyone know if there’s a hack work around? Or some command that can re-establish the serial connection.