ublox
ublox copied to clipboard
Issues publishing ZED-F9R IMU Messages
I was trying to get ZED-F9R IMU data published in the form of a sensor_msgs/imu message. Currently, I am using a zed-f9p config file that can be found below.
# Configuration Settings for zed-f9p device
ublox_gps_node:
ros__parameters:
debug: 0 # Range 0-4 (0 means no debug statements will print)
device: /dev/ttyACM0
frame_id: gps
uart1:
baudrate: 38400
# TMODE3 Config
tmode3: 1 # Survey-In Mode
sv_in:
reset: True # True: disables and re-enables survey-in (resets)
# False: Disables survey-in only if TMODE3 is
# disabled
min_dur: 300 # Survey-In Minimum Duration [s]
acc_lim: 3.0 # Survey-In Accuracy Limit [m]
inf:
all: true # Whether to display all INF messages in console
publish:
all: true
aid:
hui: false
nav:
posecef: false
esf:
meas: true
When I run the launch file, it seems to only publish on the default fix topics. From the ublox documentation it looks like publish/esf/meas controls toggles the IMU data stream. Is there anything I am doing wrong?
Is this the actual config you are using?
Yes, this is the config file being used in the launch file.
Can you remove the first three lines? just start with debug:0
With the first three lines removed, I get most of the nav messages, but no esf messages. I do get an error twice:
U-blox: received NACK: 0x06 / 0x01 U-blox: received NACK: 0x06 / 0x01
You need to follow the same format as https://github.com/KumarRobotics/ublox/blob/master/ublox_gps/config/c94_m8p_base.yaml
I'm still only seeing NAV topics and the NACK errors.
https://github.com/KumarRobotics/ublox/blob/76ff4da9ec87f47fc8e7e2f556bc88026241c05a/ublox_gps/src/node.cpp#L1368 This is where imu is published, you can add a print and see if it is reached.
I added a print statement within the if statement, the if statement is not getting triggered.
What about the callback? If callback is ok, then just hardcode enabled["esf_meas"] to true and see if outputs imu
I added a cout statement for the callback as well but not seeing anything in the terminal.
What I meant is right after this line https://github.com/KumarRobotics/ublox/blob/76ff4da9ec87f47fc8e7e2f556bc88026241c05a/ublox_gps/src/node.cpp#L1367
and manually set enable to true on this line https://github.com/KumarRobotics/ublox/blob/76ff4da9ec87f47fc8e7e2f556bc88026241c05a/ublox_gps/src/node.cpp#L1340
I had a feeling that this is due to a config issue. Just make sure your config file has the right format and the launch file is using that config.
shall I changed enabled["esf_meas"], enabled["esf"]
to enabled["true"]?
What I meant is right after this line
https://github.com/KumarRobotics/ublox/blob/76ff4da9ec87f47fc8e7e2f556bc88026241c05a/ublox_gps/src/node.cpp#L1367
and manually set enable to true on this line
https://github.com/KumarRobotics/ublox/blob/76ff4da9ec87f47fc8e7e2f556bc88026241c05a/ublox_gps/src/node.cpp#L1340
I had a feeling that this is due to a config issue. Just make sure your config file has the right format and the launch file is using that config.
I'm currently using the config you sent me, c94_m8p_base.yaml, is there some sort of formatting issue on this file?
Replace
nh->param("publish/esf/meas", enabled["esf_meas"], enabled["esf"]);
with
enabled["esf_meas"] = true;
Take a look at the config folder and find the right config. I just sent that one as a referece.
Ah alright, I will look into using the zedf9p config. This still doesn't seem to be printing in the terminal (after catkin_make). The topic is also not active.
do you have any updates on this topic? I am also trying to get the IMU messages from the ZED-F9R
do you have any updates on this topic? I am also trying to get the IMU messages from the ZED-F9R
Sorry no updates as of now, I am planning on looking into the source code soon. Let me know if you get anything!
I have look into the source code found that
if (product_category == "HPG" && ref_rov == "REF") {
components_.push_back(std::make_shared<HpgRefProduct>(nav_rate_, meas_rate_, updater_, rtcms_, this));
} else if (product_category == "HPG" && ref_rov == "ROV") {
components_.push_back(std::make_shared<HpgRovProduct>(nav_rate_, updater_, this));
} else if (product_category == "HPG") {
components_.push_back(std::make_shared<HpPosRecProduct>(nav_rate_, meas_rate_, frame_id_, updater_, rtcms_, this));
} else if (product_category == "TIM") {
components_.push_back(std::make_shared<TimProduct>(frame_id_, updater_, this));
} else if (product_category == "ADR" ||
product_category == "UDR") {
components_.push_back(std::make_shared<AdrUdrProduct>(nav_rate_, meas_rate_, frame_id_, updater_, this));
But the ZED-F9R Firmware is FWVER=HPS 1.00. The INS/imu publication seems to be in AdrUdrProduct. I added ''product_category == "HPS" ||'' to AdrUdr if and it start publishing esf data.
Is anyone able to run the ROS driver for Ublox F9R? I want to get IMU and GNSS data at the same time.
any update?
I have look into the source code found that
if (product_category == "HPG" && ref_rov == "REF") { components_.push_back(std::make_shared<HpgRefProduct>(nav_rate_, meas_rate_, updater_, rtcms_, this)); } else if (product_category == "HPG" && ref_rov == "ROV") { components_.push_back(std::make_shared<HpgRovProduct>(nav_rate_, updater_, this)); } else if (product_category == "HPG") { components_.push_back(std::make_shared<HpPosRecProduct>(nav_rate_, meas_rate_, frame_id_, updater_, rtcms_, this)); } else if (product_category == "TIM") { components_.push_back(std::make_shared<TimProduct>(frame_id_, updater_, this)); } else if (product_category == "ADR" || product_category == "UDR") { components_.push_back(std::make_shared<AdrUdrProduct>(nav_rate_, meas_rate_, frame_id_, updater_, this));
But the ZED-F9R Firmware is FWVER=HPS 1.00. The INS/imu publication seems to be in AdrUdrProduct. I added ''product_category == "HPS" ||'' to AdrUdr if and it start publishing esf data.
This one worked for me. I used the HPLR-HPG-2 board (https://www.u-blox.com/en/product/xplr-hpg-2) and I was able to get the IMU data from it.
@andrespulido8 Good job!!