Closed Scottapotamas closed 6 years ago
When xsens updated their communication protocol in their 4th generation, they added the capabilities to send various information channels at different frequencies and in different messages, rather than all at the same time in a single message. Often, when you ask various info at the same frequency, they will be grouped in the same message, but there is no guarantee. What the node is doing is simply take the information in a message when it arrives and fill what bits of message it can. If the information arrives at the same time (in the same message) it will be published in the same ROS message but if it arrives in different message at different times it will be published in different ROS messages. And that's probably for the best since otherwise it means messing up with timestamps and/or making unwarranted assumptions.
In your case, the info is not transmitted at the same time by the IMU and hence is not published at the same time.
What you can check is that the frequencies of the different messages are the same (check with rosrun xsens_driver mtdevice.py -i
) and change them accordingly.
Otherwise, if you need them synchronized, you can add a node that will fuse information from successive ROS messages based on assumptions that you can make knowing your system and configuration.
In any case, these null values shouldn't be a problem and should just be ignored. Recall that the convention is that missing information is indicated via the value -1 in the first element of the covariance matrix (check the message definition and it's probably written elsewhere in the ROS documentation).
edit: as it's not a bug of the driver (if you disagree don't hesitate to let me know) I'll close it.
Thanks a lot, didn't know about the -1 covariance value.
I've not seen much regarding the 'expected' output on /imu/data from the xsens_driver, I've got issues with the inbound messages containing any combination of orientation, vel and acc, with the values going to { 0 } often.
Do I need to modify the default sampling rates/try and sync them?
A plot shows the effect quite well:
I'm trying to work with a MTi-300 over USB, running an Odroid XU4 (armhf), Ubuntu 16.04, Kinetic.
I launched it with the standard
roslaunch xsens_driver xsens_driver.launch
. Could this be an configuration issue perhaps? I've tried this with two MTi-300 units and one of them is better but still exhibits the issue.