Closed AuterionWrikeBot closed 5 years ago
➤ Nuno Marques commented:
So to not block the release into open-source, I am going to reduce this list of messages to send/receive on the yaml file, and for now exclude the status messages that include boolean fields. Then I need to one-by-one understand which message in specific is causing this.
➤ Nuno Marques commented:
After some debugging, this seems to be fixed (or at least not reproduceble). I am adding again some msgs to send/rcv list of uorb_rtps_message_ids.yaml.
➤ Nuno Marques commented:
New PR: https://github.com/PX4/Firmware/pull/11120. In the debug process I was able to isolate some of the messages that result on the above error. Have now to understand the source of it.
➤ Nuno Marques commented:
STATUS: Running the micrortps_agent with gdb allows me to find which fields in specific are failing to deserialize. Example of a stack trace:
545 inline Cdr& operator>>(bool &bool_t){return deserialize(bool_t);}
at /home/nuno/PX4/px4_ros_com_ros2/src/px4_ros_com/src/micrortps_agent/VehicleStatus_.cpp:447
447 dcdr >> m_isvtol;
at /home/nuno/PX4/px4_ros_com_ros2/src/px4_ros_com/src/micrortps_agent/RtpsTopics.cpp:57
57 st.deserialize(cdr_des);
221 topics.publish(topic_ID, data_buffer, sizeof(data_buffer)); (gdb)
➤ Julian Kent commented:
Nuno Marques using a RelWithDebInfo build will give you exact line numbers too
I can confirm that the problem occurs with vehicle_status
message.
I can confirm that the problem occurs with
vehicle_status
message.
Not just that one but that one as well. Still under research.
➤ Nuno Marques commented:
Continue following up the issue in https://github.com/eProsima/Fast-CDR/issues/41#issuecomment-492836725
➤ Nuno Marques commented:
A simple example of the vehicle_gps_position msg being received and parsed in a ROS2 node:
ts: 208692000
lat: 0
lon: 0
alt: 473977505
alt_ellipsoid: 85456065
s_variance_m_s: 6.95467e-40
c_variance_rad: 0
fix_type:
eph: 0
epv: 1
hdop: 1
vdop: 0
noise_per_ms: 0
vel_m_s: 0
vel_n_m_s: 0.02
vel_e_m_s: 0.02
vel_d_m_s: -0.01
cog_rad: 0.73
timestamp_time_relative: 1085801896
time_utc_usec: 9205357640488583168
satellites_used:
heading: 0
heading_offset: 0
Both time_utc_usec
and satellites_used
seem to be improperly initialized, which may be a consequence (or cause), or even a side effect of some other issue, for the problem on the boolean field vel_ned_valid
.
➤ Nuno Marques commented:
Solution here: https://github.com/PX4/Firmware/pull/12025
When running the micro-RTPS agent and after starting the micrortps_client daemon on SITL, it immediately throws an exception:
This means there's a uORB topic which field has a value different from 0 or 1, which leads to this error.