-
Notifications
You must be signed in to change notification settings - Fork 205
Teleop_xbox360.launch fails on Firmware 2020.02 #175
Comments
I just checked and the latest firmware does still have "acc.z" as a logging variable. Try deleting the cache files ("~/.ros/params*.csv"). Also, make sure that you are on the latest version - there was a fix in crazyflie_cpp last year that is necessary to handle more than 255 variables. |
Yeah, I've scanned the TOC using the new firmware and saw that acc.z was still in the logging system. Just tried deleting all the params*.csv and running with a fresh copy of crazyflie_ros and the official 2020.02 build and it still throws the same error. |
Could you share the newly created params*.csv file? |
params*.csv:
|
This looks fine. I mixed up params and logging though:-/ There should be also files "log.csv", which actually take care of the caching of logging-related variable names? I'll be out for 9 days and can take a look afterwards (around March 16). My best guess is that there is some problem that surfaced that has to do with retrieval of the logging variable names. |
I've been attempting to get a clean log*.csv for you, but after rebooting my computer, I'm now unable to recreate the issue as it was showing before :/ Now the crazyflie_add finishes cleanly, but the acc.z logging value is always 0. This suggests to me that this is another symptom of the same issue. Additionally, when switching back to the 2019.09, the crazyflie_add now complains about not being able to find the battery voltage in to TOC. Perhaps there's a bug in the TOC caching that only appears when the TOC changes significantly? |
I found and fixed a bug related to the parameter subsystem (see 83d1fcf). I didn't find anything related to the logging. Perhaps you can share the (newly created) cache files? Once I am back in the office, I can also try to reproduce with the firmware versions that you mentioned. TOC caching relies on a unique CRC (a number that is computed in the firmware). So if the 2 firmwares have the same CRC, but different TOCs, there could be issues. You can disable caching by either deleting those temporary files, or by calling the functions (in crazyflie_server.cpp) with the appropriate flag, see https://github.com/whoenig/crazyflie_cpp/blob/master/include/crazyflie_cpp/Crazyflie.h#L193-L195. |
Ok, I've identified the direct source of the error, but not what upstream is causing it. Some of the log*.csv files are ordered as we'd expect:
etc. but some are out of order for a still unknown reason:
I haven't yet tracked down where the function that records these caches is, or whether its the crazyflie firmware or the ros package that is jumbling things. |
It's probably a safelink bug then, try disabling safelink at https://github.com/whoenig/crazyflie_cpp/blob/master/include/crazyflie_cpp/Crazyflie.h#L15 (and catkin_make afterwards). Background: Safelink is a communication mode that is supposed to guarantee no packet loss, and packets being exchanged in-order. Without safelink there might be a few more packets exchanged, but crazyflie_cpp ensures that there is no packet loss (rather than the comm stack of the radio/firmware). |
Well, it turns out I completely misdiagnosed the bug before. I now think the bug is triggered by using the optical flow deck at the same time as the multi-ranger deck. Originally, I thought I had ruled these out as the cause, but now I've found a reliable way of reproducing the error. After each reboot of the computer running crazyflie_ros, the error returns but the variable that it is unable to find in the log toc varies. I can get the error to go away by deleting all log*.csv files in ~/.ros and running teleop_xbox360.launch without any decks installed on the cf. After that run, subsequent runs are successful with the decks installed. This continues to work until the system running crazyflie_ros is rebooted. EDIT: Actually that doesn't work at all for reproducing the bug. I guess testing continues... |
I'm having a problem where everything works fine using the older crazyflie firmware, 2019.09, but when I update my firmware to 2020.02, I get this error:
[ INFO] [1583189498.507758262]: Requesting Logging variables...
[ INFO] [1583189498.524256520]: Found variables in cache.
terminate called after throwing an instance of 'std::runtime_error'
what(): Could not find acc.z in log toc!`
[INFO] [1583189498.580075]: found update_params service
[INFO] [1583189498.582367]: waiting for emergency service
[INFO] [1583189498.589355]: found emergency service
[crazyflie_server-2] process has died [pid 1797, exit code -6, cmd /home/jordansuchard/ros_ws/devel/lib/crazyflie_driver/crazyflie_server __name:=crazyflie_server __log:=/home/jordansuchard/.ros/log/5f698af4-5cd8-11ea-ba4b-d07e353b7469/crazyflie_server-2.log].
log file: /home/jordansuchard/.ros/log/5f698af4-5cd8-11ea-ba4b-d07e353b7469/crazyflie_server-2*.log
I've narrowed the issue down to the new firmware (I think), but I'm not sure how to fix it. Is the new firmware not supported yet?
The text was updated successfully, but these errors were encountered: