We are using the RTDE to gather diagnostics information off of the robot in production. We are seeing a strange anomaly using this. I am collecting data around the join temperature, joint current and joint voltages. I am using the same buffer conversion for each of these as VECTOR6D per the documentation. The joint voltages all look correct and match what we are seeing on the controller on the log screen however, the temperature and current are only correct on joints 0-4, joint 5 has a very large number as the result. Also, the signs on the currents are opposite of what I would have expected as they are mostly showing negative in the RTDE data.
Also, we are seeing an issue with the actual_digital_input_bits and actual_digital_output_bits where they show a blank array no matter what we turn on or off. I am interpreting this as a UINT64 per the docs as well.
We are using the same VECTOR6D to interpret the buffer for the joint positions, tool pose, etc without any issues in those vectors.
Any ideas on what is going on?
The easiest way to figure out if this is a controller bug or not is by using the python reference implementation.
Could you please collect some data using the record.py with the same output configuration? If this is giving the same results/problems, please send me the configuration and data by email and I’ll have detailed look. If the data is correct, maybe one of the data fields is incorrectly deserialized (in length)?
I will try to run that in the next couple of days, we are under crunch mode here getting ready for the show next week. The strange thing about this to me, is the same buffer unpack seems to be working just fine with any of the other vector6D data. Could it be something in the data configuration order?
@rwi I found it! The library that we were using did not support UINT64 and that is what was causing the issue, even though it was appearing in the VECTOR6D elements and that is what had us chasing our tails. It only appeared in an element that was followed by a UINT64 element. I have now switched libraries and everything seems to be working fine now. The issue is nodejs does not support 64 bit numbers…so the new library decodes the UINT64 into an array of 3 elements, low bits, high bits and signed as a boolean. Since even with all of the outputs or inputs on we are still in the low bit element of the array I don’t think this will be a problem for determining which outputs are on or off.
This was a weird one to chase down but something you said gave me an idea of where to look. Thanks,
Glad I could help