Getting UORB in nsh but not in agent side ROS2

I am trying to achieve a similar thing to you. Please see my post here which might be able to help you Px4_ros_com applications won't receive any data via micrortps. I am also trying to obtain GPS and sensor data on the ROS side from my flight controller but having no luck. Have you started the Micro RTPS client on your flight controller?

I command this code in ros2
~$ ros2 run px4_ros_com vehicle_gps_position_listener
after this nothing happened until I command in anothet terminal:
~$ ros2 topic pub /fmu/vehicle_gps_position/out px4_msgs/msg/VehicleGpsPosition
then I got the output as in terminal in which ~$ ros2 run px4_ros_com vehicle_gps_position_listener is located :


RECEIVED VEHICLE GPS POSITION DATA
==================================
ts: 0
lat: 0
lon: 0
alt: 0
alt_ellipsoid: 0
s_variance_m_s: 0
c_variance_rad: 0
fix_type: 
eph: 0
epv: 0
hdop: 0
vdop: 0
noise_per_ms: 0
vel_m_s: 0
vel_n_m_s: 0
vel_e_m_s: 0
vel_d_m_s: 0
cog_rad: 0
vel_ned_valid: 0
timestamp_time_relative: 0
time_utc_usec: 0
satellites_used: 
heading: 0
heading_offset: 0

then to be sure I command

nsh> micrortps_client status
	up and running for 1425.259 seconds
	nr. of messages received: 0
	nr. of messages sent: 433031
	total data read: 0 bytes
	total data sent: 58858511 bytes
	rates:
	  rx: 0.000 kB/s
	  tx: 41.314 kB/s
	  avg rx: 0.000 kB/s
	  avg tx: 41.297 kB/s
	  tx rate max: Unlimited

I see , there is not any receiving messages to UORB to sent its data via client, I guess if I didn’t anything wrong in the code side agent cannot subscribe.

Hi,

I just replied to Px4_ros_com applications won't receive any data via micrortps
Maybe you could answer/test the same.

In my topic I have already added ros2 list and my Ubuntu is 20.04 lts and ROS2 Foxy.

First of all thanks for reply, I started clinet but I got the same outputs… I will check your post also.

Just out of curiosity(, because there is an regression issue with ros2 foxy and DDS):

Can you try to run the companion computer side including something like

ros2 topic hz <your-favorite-topic-here>

and then restart just the px4 side.

~$ ros2 topic hz /fmu/sensor_combined/out 
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00025s window: 2
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00024s window: 3
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00022s window: 4
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00020s window: 5
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00019s window: 6
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00019s window: 8
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00018s window: 10
average rate: 1.000
	min: 1.000s max: 1.000s std dev: 0.00017s window: 12
average rate: 0.426
	min: 1.000s max: 19.878s std dev: 4.86175s window: 14
average rate: 0.459
	min: 1.000s max: 19.878s std dev: 4.56957s window: 16
average rate: 0.488
	min: 1.000s max: 19.878s std dev: 4.32415s window: 18
average rate: 0.514
	min: 0.999s max: 19.878s std dev: 4.11430s window: 20
average rate: 0.527
	min: 0.999s max: 19.878s std dev: 4.02017s window: 21
average rate: 0.538
	min: 0.999s max: 19.878s std dev: 3.93220s window: 22
average rate: 0.560
	min: 0.999s max: 19.878s std dev: 3.77226s window: 24
average rate: 0.579
	min: 0.999s max: 19.878s std dev: 3.63033s window: 26
average rate: 0.589
	min: 0.999s max: 19.878s std dev: 3.56510s window: 27
average rate: 0.597
	min: 0.999s max: 19.878s std dev: 3.50326s window: 28
average rate: 0.614
	min: 0.999s max: 19.878s std dev: 3.38865s window: 30
average rate: 0.629
	min: 0.999s max: 19.878s std dev: 3.28458s window: 32
average rate: 0.636
	min: 0.999s max: 19.878s std dev: 3.23601s window: 33
average rate: 0.643
	min: 0.999s max: 19.878s std dev: 3.18953s window: 34
average rate: 0.656
	min: 0.999s max: 19.878s std dev: 3.10227s window: 36
average rate: 0.668
	min: 0.999s max: 19.878s std dev: 3.02180s window: 38
average rate: 0.674
	min: 0.999s max: 19.878s std dev: 2.98384s window: 39
average rate: 0.685
	min: 0.999s max: 19.878s std dev: 2.91202s window: 41
average rate: 0.690
	min: 0.999s max: 19.878s std dev: 2.87800s window: 42
average rate: 0.695
	min: 0.999s max: 19.878s std dev: 2.84515s window: 43
average rate: 0.704
	min: 0.999s max: 19.878s std dev: 2.78267s window: 45
average rate: 0.713
	min: 0.999s max: 19.878s std dev: 2.72414s window: 47
average rate: 0.722
	min: 0.999s max: 19.878s std dev: 2.66915s window: 49
average rate: 0.726
	min: 0.999s max: 19.878s std dev: 2.64288s window: 50
average rate: 0.730
	min: 0.999s max: 19.878s std dev: 2.61736s window: 51
average rate: 0.737
	min: 0.999s max: 19.878s std dev: 2.56847s window: 53
average rate: 0.744
	min: 0.999s max: 19.878s std dev: 2.52222s window: 55
average rate: 0.748
	min: 0.999s max: 19.878s std dev: 2.50001s window: 56
average rate: 0.754
	min: 0.999s max: 19.878s std dev: 2.45730s window: 58
average rate: 0.758
	min: 0.999s max: 19.878s std dev: 2.43675s window: 59
average rate: 0.761
	min: 0.999s max: 19.878s std dev: 2.41670s window: 60
average rate: 0.767
	min: 0.999s max: 19.878s std dev: 2.37805s window: 62
average rate: 0.769
	min: 0.999s max: 19.878s std dev: 2.35941s window: 63
average rate: 0.772
	min: 0.999s max: 19.878s std dev: 2.34120s window: 64
average rate: 0.778
	min: 0.999s max: 19.878s std dev: 2.30601s window: 66
average rate: 0.783
	min: 0.999s max: 19.878s std dev: 2.27236s window: 68
average rate: 0.785
	min: 0.999s max: 19.878s std dev: 2.25608s window: 69
average rate: 0.790
	min: 0.999s max: 19.878s std dev: 2.22454s window: 71
average rate: 0.792
	min: 0.999s max: 19.878s std dev: 2.20925s window: 72
average rate: 0.795
	min: 0.999s max: 19.878s std dev: 2.19428s window: 73
average rate: 0.799
	min: 0.999s max: 19.878s std dev: 2.16523s window: 75
average rate: 0.803
	min: 0.999s max: 19.878s std dev: 2.13730s window: 77
average rate: 0.805
	min: 0.999s max: 19.878s std dev: 2.12373s window: 78
average rate: 0.807
	min: 0.999s max: 19.878s std dev: 2.11042s window: 79
average rate: 0.811
	min: 0.999s max: 19.878s std dev: 2.08453s window: 81
average rate: 0.813
	min: 0.999s max: 19.878s std dev: 2.07194s window: 82

what do you mean in regression? in px4 documentation they are advicing that version, I am little bit confused.

The version (foxy) is ok. But with some late changes in the packages there are things between PX4 and ROS2 not connecting correctly. I have not had time to investigate more so far.

But:
Does it mean you get messages when PX4 starts after the companion computer?
1 Hz seems to be very low for the topic. Is that correct?

Here is a work- around that worked for me:

The RMW FastRTPS seems to make issues, unfortunately it is the default one. You can try to make Cyclon the RMW to use with:

  1. if you don’t have it yet, sudo apt install ros-foxy-rmw-cyclonedds-cpp
  2. export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp you need to do that in every window where you run ros stuff. so better into bashrc for long term.

Maybe this unblocks you.

Yes, you have the same issue as me. Your vehicle position listener is not receiving any data from your flight controller. It only responds to ros2 topic pub /fmu/vehicle_gps_position/out px4_msgs/msg/VehicleGpsPosition because you are publishing it here but with no data

I tried this for me and it didn’t work :confused:

I did ,but it’s not working for me.

When I command sensor status I got the result as it is:

nsh> sensors start
ERROR [sensors] Task already running
nsh> sensors status
INFO  [sensors] selected gyro: 6684682 (1)
INFO  [data_validator] validator: best: 0, prev best: 0, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 50, state: OK
INFO  [data_validator] 	val:   0.0034, lp:   0.0039 mean dev:   0.0000 RMS:   0.0124 conf:   1.0000
INFO  [data_validator] 	val:  -0.0021, lp:  -0.0022 mean dev:   0.0000 RMS:   0.0033 conf:   1.0000
INFO  [data_validator] 	val:  -0.0001, lp:   0.0002 mean dev:   0.0000 RMS:   0.0198 conf:   1.0000
INFO  [data_validator] sensor #1, prio: 50, state: OK
INFO  [data_validator] 	val:   0.0033, lp:  -0.0020 mean dev:  -0.0000 RMS:   0.0126 conf:   1.0000
INFO  [data_validator] 	val:   0.0054, lp:   0.0042 mean dev:  -0.0000 RMS:   0.0041 conf:   1.0000
INFO  [data_validator] 	val:  -0.0004, lp:  -0.0007 mean dev:  -0.0000 RMS:   0.0201 conf:   1.0000

INFO  [sensors] selected accel: 6946826 (1)
INFO  [data_validator] validator: best: 0, prev best: 0, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 50, state: OK
INFO  [data_validator] 	val:   0.4905, lp:   0.4971 mean dev:  -0.0000 RMS:   0.0333 conf:   1.0000
INFO  [data_validator] 	val:   0.1531, lp:   0.1588 mean dev:  -0.0000 RMS:   0.0331 conf:   1.0000
INFO  [data_validator] 	val:  -9.6628, lp:  -9.6775 mean dev:   0.0000 RMS:   0.0438 conf:   1.0000
INFO  [data_validator] sensor #1, prio: 50, state: OK
INFO  [data_validator] 	val:   0.4362, lp:   0.4531 mean dev:  -0.0000 RMS:   0.0351 conf:   1.0000
INFO  [data_validator] 	val:   0.1087, lp:   0.1333 mean dev:  -0.0000 RMS:   0.0346 conf:   1.0000
INFO  [data_validator] 	val:  -9.6756, lp:  -9.6818 mean dev:   0.0000 RMS:   0.0430 conf:   1.0000

INFO  [vehicle_magnetometer] selected magnetometer: 396809 (1)
INFO  [data_validator] validator: best: 1, prev best: 1, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 50, state: OK
INFO  [data_validator] 	val:  -0.2029, lp:  -0.2014 mean dev:   0.0001 RMS:   0.0032 conf:   1.0000
INFO  [data_validator] 	val:  -0.0111, lp:  -0.0082 mean dev:   0.0001 RMS:   0.0035 conf:   1.0000
INFO  [data_validator] 	val:   0.5134, lp:   0.5113 mean dev:  -0.0001 RMS:   0.0028 conf:   1.0000
INFO  [data_validator] sensor #1, prio: 75, state: OK
INFO  [data_validator] 	val:  -0.1865, lp:  -0.1856 mean dev:  -0.0003 RMS:   0.0094 conf:   1.0000
INFO  [data_validator] 	val:   0.1798, lp:   0.1782 mean dev:   0.0000 RMS:   0.0146 conf:   1.0000
INFO  [data_validator] 	val:   0.2576, lp:   0.2587 mean dev:  -0.0000 RMS:   0.0068 conf:   1.0000
INFO  [sensor_calibration] MAG 396825 EN: 1, offset: [0.144 0.208 -0.119], scale: [1.040 1.009 0.920], nan degC, Internal
INFO  [sensor_calibration] MAG 396809 EN: 1, offset: [0.000 0.000 0.000], scale: [1.000 1.000 1.000], nan degC, External ROT: 

INFO  [vehicle_air_data] selected barometer: 3997730 (0)
INFO  [data_validator] validator: best: 0, prev best: 0, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 0, state: OK
INFO  [data_validator] 	val: 100282.9922, lp: 100284.3438 mean dev:  -0.1252 RMS:   2.5335 conf:   1.0000
INFO  [data_validator] 	val:  35.2400, lp:  35.2417 mean dev:   0.0007 RMS:   0.0067 conf:   1.0000
INFO  [data_validator] 	val:   0.0000, lp:   0.0000 mean dev:   0.0000 RMS:   0.0000 conf:   1.0000

INFO  [sensors] Airspeed status:
INFO  [data_validator] 	no data

INFO  [vehicle_acceleration] selected sensor: 6946826, rate: 399.8 Hz, estimated bias: [0.0000 0.0000 0.1150]
INFO  [sensor_calibration] ACC 6946826 EN: 1, offset: [-0.0184 -0.0035 0.0099], scale: [0.9988 0.9993 0.9874], nan degC

INFO  [vehicle_angular_velocity] selected sensor: 6684682, rate: 1998.2 Hz FIFO
INFO  [vehicle_angular_velocity] estimated bias: [-0.0021 0.0041 -0.0009]
INFO  [sensor_calibration] GYRO 6684682 EN: 1, offset: [0.0000 0.0000 0.0000], nan degC



INFO  [vehicle_imu] 0 - Accel: 3932170, interval: 2501.0 us (SD 2.3 us), Gyro: 3932170, interval: 2501.0 us (SD 2.3 us)
vehicle_imu: accel data gap: 1 events
vehicle_imu: gyro data gap: 1 events
INFO  [sensor_calibration] ACC 3932170 EN: 1, offset: [-0.0541 -0.0038 -0.0496], scale: [0.9988 0.9993 0.9874], nan degC
INFO  [sensor_calibration] GYRO 3932170 EN: 1, offset: [0.0295 -0.0151 0.0015], 39.1 degC

INFO  [vehicle_imu] 1 - Accel: 6946826, interval: 2494.6 us (SD 0.4 us), Gyro: 6684682, interval: 2502.3 us (SD 0.4 us)
vehicle_imu: accel data gap: 1 events
vehicle_imu: gyro data gap: 1 events
INFO  [sensor_calibration] ACC 6946826 EN: 1, offset: [-0.0184 -0.0035 0.0099], scale: [0.9928 0.9969 0.9866], nan degC
INFO  [sensor_calibration] GYRO 6684682 EN: 1, offset: [0.0000 0.0000 0.0000], nan degC

Ok. One things are still unclear to me. Maybe you can clarify it:
Do you get data from the FMU with ros2 topic echo /fmu/sensor_combined/out (without publishing it somewhere else by yourself)?

How can I get, this code is written for the datas coming from controller? Even if I tried it and nothing displayed in terminal after ros2 topic echo /fmu/sensor_combined/out
And My GPS is not blinking green in outdoor and my hdop v dop are also 100.0 which is bad for me, does it cause RC calibration, because I didn’t do that yet. QGC always gives me that error.

Hi guys, when I try to see my gps datas from agent I got the same error plus I cannot match the vehicle_gps_position code in agent side even if I run the command:
ros2 run px4_ros_com vehicle_gps_position_listener
then I run
ros2 topic pub /fmu/vehicle_gps_position/out px4_msgs/msg/VehicleGpsPosition
I got the result as:
publishing #143: px4_msgs.msg.VehicleGpsPosition(timestamp=0, lat=0, lon=0, alt=0, alt_ellipsoid=0, s_variance_m_s=0.0, c_variance_rad=0.0, fix_type=0, eph=0.0, epv=0.0, hdop=0.0, vdop=0.0, noise_per_ms=0, jamming_indicator=0, jamming_state=0, vel_m_s=0.0, vel_n_m_s=0.0, vel_e_m_s=0.0, vel_d_m_s=0.0, cog_rad=0.0, vel_ned_valid=False, timestamp_time_relative=0, time_utc_usec=0, satellites_used=0, heading=0.0, heading_offset=0.0, selected=0)
then in agent side never match happened for that code.
this is my nsh outputs:

nsh> sensors status
INFO  [sensors] selected gyro: 3932170 (0)
INFO  [data_validator] validator: best: 0, prev best: 0, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 50, state: OK
INFO  [data_validator] 	val:   0.0016, lp:   0.0012 mean dev:  -0.0000 RMS:   0.0075 conf:   1.0000
INFO  [data_validator] 	val:   0.0000, lp:  -0.0007 mean dev:   0.0000 RMS:   0.0014 conf:   1.0000
INFO  [data_validator] 	val:   0.0002, lp:  -0.0004 mean dev:   0.0000 RMS:   0.0010 conf:   1.0000
INFO  [data_validator] sensor #1, prio: 50, state: OK
INFO  [data_validator] 	val:   0.0036, lp:   0.0000 mean dev:   0.0000 RMS:   0.0081 conf:   1.0000
INFO  [data_validator] 	val:   0.0029, lp:   0.0024 mean dev:   0.0000 RMS:   0.0028 conf:   1.0000
INFO  [data_validator] 	val:  -0.0013, lp:  -0.0005 mean dev:   0.0000 RMS:   0.0031 conf:   1.0000

INFO  [sensors] selected accel: 3932170 (0)
INFO  [data_validator] validator: best: 0, prev best: 0, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 50, state: OK
INFO  [data_validator] 	val:   0.4732, lp:   0.4806 mean dev:  -0.0000 RMS:   0.0119 conf:   1.0000
INFO  [data_validator] 	val:  -0.7800, lp:  -0.7630 mean dev:   0.0000 RMS:   0.0139 conf:   1.0000
INFO  [data_validator] 	val:  -9.7180, lp:  -9.7299 mean dev:   0.0000 RMS:   0.0140 conf:   1.0000
INFO  [data_validator] sensor #1, prio: 50, state: OK
INFO  [data_validator] 	val:   0.4521, lp:   0.4423 mean dev:   0.0000 RMS:   0.0160 conf:   1.0000
INFO  [data_validator] 	val:  -0.7132, lp:  -0.7409 mean dev:   0.0000 RMS:   0.0195 conf:   1.0000
INFO  [data_validator] 	val:  -9.7267, lp:  -9.7402 mean dev:   0.0000 RMS:   0.0173 conf:   1.0000

INFO  [vehicle_magnetometer] selected magnetometer: 396809 (1)
INFO  [data_validator] validator: best: 1, prev best: 1, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 50, state: OK
INFO  [data_validator] 	val:   0.1035, lp:   0.1032 mean dev:  -0.0000 RMS:   0.0012 conf:   1.0000
INFO  [data_validator] 	val:   0.0650, lp:   0.0647 mean dev:  -0.0000 RMS:   0.0012 conf:   1.0000
INFO  [data_validator] 	val:   0.5050, lp:   0.5078 mean dev:  -0.0000 RMS:   0.0025 conf:   1.0000
INFO  [data_validator] sensor #1, prio: 75, state: OK
INFO  [data_validator] 	val:  -0.0330, lp:  -0.0346 mean dev:   0.0000 RMS:   0.0030 conf:   1.0000
INFO  [data_validator] 	val:   0.2807, lp:   0.2807 mean dev:  -0.0000 RMS:   0.0015 conf:   1.0000
INFO  [data_validator] 	val:   0.4812, lp:   0.4871 mean dev:  -0.0000 RMS:   0.0035 conf:   1.0000
INFO  [sensor_calibration] MAG 396825 EN: 1, offset: [0.111 0.053 0.072], scale: [1.028 0.998 0.983], nan degC, Internal
INFO  [sensor_calibration] MAG 396809 EN: 1, offset: [-0.010 -0.066 -0.094], scale: [1.067 0.998 0.930], nan degC, External RO

INFO  [vehicle_air_data] selected barometer: 3997730 (0)
INFO  [data_validator] validator: best: 0, prev best: 0, failsafe: NO (0 events)
INFO  [data_validator] sensor #0, prio: 0, state: OK
INFO  [data_validator] 	val: 100750.9922, lp: 100749.8750 mean dev:  -0.0344 RMS:   2.4464 conf:   1.0000
INFO  [data_validator] 	val:  24.1600, lp:  24.1531 mean dev:   0.0015 RMS:   0.0070 conf:   1.0000
INFO  [data_validator] 	val:   0.0000, lp:   0.0000 mean dev:   0.0000 RMS:   0.0000 conf:   1.0000

INFO  [sensors] Airspeed status:
INFO  [data_validator] 	no data

INFO  [vehicle_acceleration] selected sensor: 3932170, rate: 400.0 Hz, estimated bias: [0.0000 0.0000 0.0359]
INFO  [sensor_calibration] ACC 3932170 EN: 1, offset: [-0.0758 0.0370 0.0163], scale: [0.9981 0.9979 0.9902], nan degC

INFO  [vehicle_angular_velocity] selected sensor: 3932170, rate: 7999.4 Hz FIFO
INFO  [vehicle_angular_velocity] estimated bias: [0.0010 -0.0006 -0.0002]
INFO  [sensor_calibration] GYRO 3932170 EN: 1, offset: [0.0263 -0.0064 0.0023], nan degC

and gps also:

nsh> listener vehicle_gps_position

TOPIC: vehicle_gps_position
 vehicle_gps_position_s
	timestamp: 875360508  (0.102154 seconds ago)
	time_utc_usec: 1639324394599925
	lat: 410296234
	lon: 290336218
	alt: 73665
	alt_ellipsoid: 111125
	s_variance_m_s: 0.6740
	c_variance_rad: 0.5502
	eph: 3.2920
	epv: 5.9450
	hdop: 0.7400
	vdop: 1.3500
	noise_per_ms: 97
	jamming_indicator: 5
	vel_m_s: 0.1570
	vel_n_m_s: 0.1060
	vel_e_m_s: -0.1160
	vel_d_m_s: -0.1300
	cog_rad: 3.3410
	timestamp_time_relative: 0
	heading: nan
	heading_offset: 0.0000
	fix_type: 3
	jamming_state: 0
	vel_ned_valid: True
	satellites_used: 15
	selected: 0

Why is it happenning? How can I solve this?
I see sensor datas in nsh but in companion side rtps are not running properly.

Hi guys, I am just checking ,is there any idea about it?

Do you mean the ros2 topic “sensor_combine” is also printing nothing in your ros2 code?

I put my o/ps , could you check? I didn’t get the datas from controller in ros2.

Which companion computer are you using?
If you are using Jetson, you should connect micrortps_agent to ttyACM0 as it is not the port for the communication with the Durandal. There should be some UART port in your companion computer such as dev/ttyTHS0, dev/ttyTHS1 and so on.

Moreover, you also need to start the micrortps_client in the nsh terminal, otherwise, the Durnadal won’t start the communication through the port for micrortps_client of the Durnadal to the port for your companion computer.

Same issue here
I do get data when if I echo the topic, but I don’t get data if I subscribe to the same topic via a ros2 node. As a result I never enter inside the callback.