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:
- if you don’t have it yet,
sudo apt install ros-foxy-rmw-cyclonedds-cpp
-
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
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.