Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues publishing ZED-F9R IMU Messages #149

Open
ashtencodes opened this issue Nov 29, 2021 · 23 comments
Open

Issues publishing ZED-F9R IMU Messages #149

ashtencodes opened this issue Nov 29, 2021 · 23 comments

Comments

@ashtencodes
Copy link

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?

@versatran01
Copy link
Collaborator

Is this the actual config you are using?

@ashtencodes
Copy link
Author

Yes, this is the config file being used in the launch file.

@versatran01
Copy link
Collaborator

Can you remove the first three lines? just start with debug:0

@ashtencodes
Copy link
Author

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

@versatran01
Copy link
Collaborator

@ashtencodes
Copy link
Author

I'm still only seeing NAV topics and the NACK errors.

@versatran01
Copy link
Collaborator

if (enabled["esf_meas"]) {

This is where imu is published, you can add a print and see if it is reached.

@ashtencodes
Copy link
Author

I added a print statement within the if statement, the if statement is not getting triggered.

@versatran01
Copy link
Collaborator

versatran01 commented Dec 8, 2021

What about the callback?
If callback is ok, then just hardcode enabled["esf_meas"] to true and see if outputs imu

@ashtencodes
Copy link
Author

Screenshot from 2021-12-07 18-32-27

I added a cout statement for the callback as well but not seeing anything in the terminal.

@versatran01
Copy link
Collaborator

versatran01 commented Dec 8, 2021

What I meant is right after this line

void AdrUdrProduct::callbackEsfMEAS(const ublox_msgs::EsfMEAS &m) {

and manually set enable to true on this line

nh->param("publish/esf/meas", enabled["esf_meas"], enabled["esf"]);

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.

@ashtencodes
Copy link
Author

shall I changed enabled["esf_meas"], enabled["esf"]

to enabled["true"]?

@ashtencodes
Copy link
Author

What I meant is right after this line

void AdrUdrProduct::callbackEsfMEAS(const ublox_msgs::EsfMEAS &m) {

and manually set enable to true on this line

nh->param("publish/esf/meas", enabled["esf_meas"], enabled["esf"]);

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?

@versatran01
Copy link
Collaborator

Replace

nh->param("publish/esf/meas", enabled["esf_meas"], enabled["esf"]); 

with

enabled["esf_meas"] = true;

@versatran01
Copy link
Collaborator

Take a look at the config folder and find the right config. I just sent that one as a referece.

@ashtencodes
Copy link
Author

ashtencodes commented Dec 8, 2021

Screenshot from 2021-12-07 18-44-54

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.

@tbroed
Copy link

tbroed commented Jan 17, 2022

do you have any updates on this topic? I am also trying to get the IMU messages from the ZED-F9R

@ashtencodes
Copy link
Author

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!

@spikyknox
Copy link

spikyknox commented Mar 12, 2022

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.

@Jia-le-wang
Copy link

Is anyone able to run the ROS driver for Ublox F9R? I want to get IMU and GNSS data at the same time.

@KimHyung
Copy link

any update?

@andrespulido8
Copy link

andrespulido8 commented Jan 30, 2024

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.

@Jia-le-wang
Copy link

@andrespulido8 Good job!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants