Giter VIP home page Giter VIP logo

ublox_dgnss's Introduction

ublox-dgnss

This usb based driver is focused on UBLOX Generation 9 UBX messaging, for a DGNSS rover. High precision data is available. A moving base station configuration has been added.

RTCM messages can be delivered externally. Alternately the ntrip_client_node can be utilised to retrieve RTCM messages from a castor to publish /ntrip_client/rtcm messages which will be received by the ublox_dgnss_node.

It will only work with later generation ublox devices. Testing and development was performed against a ZED-F9P and a ZED-F9R connected via USB, under Ubuntu 22.04. The driver uses libusb api 1.0.

This release works with Rolling, Humble and Iron.

You may need to create a udev rule as follows:

/etc/udev/rules.d/99-ublox-gnss.rules

  #UBLOX ZED-F9
  ATTRS{idVendor}=="1546", ATTRS{idProduct}=="01a9", MODE="0666", GROUP="plugdev"

This driver follows the UBX standards used for the ZED-F9P/F9R as documented in the F9P interface description and F9R interface description.

It implements a subset of the specification related to achieving high precision output as a rover. U-center can be used to alter settings. Any configuration parameter changed by this driver, will be applied only in RAM. Upon a restart (hot, cold or warm) or after a hot plug usb attach event, the configuration stored in the driver will be sent to the device.

Start commands

There are multiple ways to start the node. Its been built using composition. An executable is provider. An example follows which turns off NMEA output at startup.

ros2 run ublox_dgnss_node ublox_dgnss_node --ros-args -p CFG_USBOUTPROT_NMEA:=False

Parameters can be set at launch and some examples are provided to launch high precision pos ecef|llh

ros2 launch ublox_dgnss ublox_rover_hpposecef.launch.py
ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py

Services

Four services are provided to reset odo, cold start, warm start and hot start.

ros2 service call /ublox_dgnss/reset_odo ublox_ubx_interfaces/srv/ResetODO
ros2 service call /ublox_dgnss/cold_start ublox_ubx_interfaces/srv/ColdStart '{reset_type: 1}'
ros2 service call /ublox_dgnss/warm_start ublox_ubx_interfaces/srv/WarmStart '{reset_type: 1}'
ros2 service call /ublox_dgnss/hot_start ublox_ubx_interfaces/srv/HotStart '{reset_type: 1}'

Parameters

Parameter values can be set at any time or passed when the node starts

ros2 param set /ublox_dgnss CFG_RATE_NAV 2

or the current value retrieved

ros2 param get /ublox_dgnss CFG_RATE_NAV

UBX Parameters

The following parameters may be set. Its a subset of the full UBX Gen 9 configuration parameter list.

Values will be as described in the integration manual (without scaling applied). Changing a CFG_MSGOUT_* type parameter to a value >0 will cause the corresponding ublox_ubx_msgs to be published.

CFG_INFMSG_NMEA_USB CFG_INFMSG_UBX_USB CFG_MSGOUT_UBX_NAV_CLOCK_USB CFG_MSGOUT_UBX_NAV_COV_USB CFG_MSGOUT_UBX_NAV_DOP_USB CFG_MSGOUT_UBX_NAV_EOE_USB CFG_MSGOUT_UBX_NAV_HPPOSECEF_USB CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB CFG_MSGOUT_UBX_NAV_ODO_USB CFG_MSGOUT_UBX_NAV_ORB_USB CFG_MSGOUT_UBX_NAV_SAT_USB CFG_MSGOUT_UBX_NAV_SIG_USB CFG_MSGOUT_UBX_NAV_POSECEF_USB CFG_MSGOUT_UBX_NAV_POSLLH_USB CFG_MSGOUT_UBX_NAV_PVT_USB CFG_MSGOUT_UBX_NAV_RELPOSNED_USB CFG_MSGOUT_UBX_NAV_STATUS_USB CFG_MSGOUT_UBX_NAV_TIMEUTC_USB CFG_MSGOUT_UBX_NAV_VELECEF_USB CFG_MSGOUT_UBX_NAV_VELNED_USB CFG_MSGOUT_UBX_RXM_RTCM_USB CFG_MSGOUT_UBX_RXM_MEASX_USB CFG_MSGOUT_UBX_RXM_RAWX_USB CFG_MSGOUT_UBX_ESF_MEAS_USB CFG_MSGOUT_UBX_ESF_STATUS_USB CFG_MSGOUT_UBX_SEC_SIG_USB CFG_MSGOUT_UBX_SEC_SIGLOG_USB CFG_NAVHPG_DGNSSMODE CFG_NAVSPG_DYNMODEL CFG_NAVSPG_FIXMODE CFG_NAVSPG_INIFIX3D CFG_NAVSPG_UTCSTANDARD CFG_ODO_COGLPGAIN CFG_ODO_COGMAXPOSACC CFG_ODO_COGMAXSPEED CFG_ODO_OUTLPCOG CFG_ODO_OUTLPVEL CFG_ODO_PROFILE CFG_ODO_USE_COG CFG_ODO_USE_ODO CFG_ODO_VALLPGAIN CFG_RATE_MEAS CFG_RATE_NAV CFG_RATE_TIMEREF CFG_TMODE_MODE CFG_TMODE_POS_TYPE CFG_UART1INPROT_NMEA CFG_UART1INPROT_RTCM3X CFG_UART1INPROT_UBX CFG_UART1OUTPROT_NMEA CFG_UART1OUTPROT_RTCM3X CFG_UART1OUTPROT_UBX CFG_USBINPROT_NMEA CFG_USBINPROT_RTCM3X CFG_USBINPROT_UBX CFG_USBOUTPROT_NMEA CFG_USBOUTPROT_RTCM3X CFG_USBOUTPROT_UBX

CFG_SFIMU_AUTO_MNTALG_ENA CFG_SFIMU_IMU_MNTALG_YAW CFG_SFIMU_IMU_MNTALG_PITCH CFG_SFIMU_IMU_MNTALG_ROLL

CFG_SFODO_COMBINE_TICKS CFG_SFODO_COUNT_MAX CFG_SFODO_DIS_AUTOCOUNTMAX CFG_SFODO_DIS_AUTODIRPINPOL CFG_SFODO_FACTOR CFG_SFODO_LATENCY CFG_SFODO_QUANT_ERROR

CFG_ITFM_BBTHRESHOLD CFG_ITFM_CWTHRESHOLD CFG_ITFM_ENABLE CFG_ITFM_ANTSETTING CFG_ITFM_ENABLE_AUX

Device Identification Parameters

aka Use with Multiple Devices

By default, the ublox_dgnss node will search for and connect to the first device which matches the ublox USB ID's (vendor ID of 0x1546 and product ID of 0x01a9). If multiple devices are connected simultaneously, the remaining devices will be ignored. In this situation you have no control over which device is used, since the order in which they are found may depend on the order in which they were physically attached to the host.

If you have multiple ublox devices attached simultaneously and wish to connect to a specific device, you can specify a launch parameter "DEVICE_SERIAL_STRING". The node will then search for and connect to the first device with this matching serial string. The device serial string itself should be programmed into the ublox device beforehand using u-center software.

The frame ID used in ROS2 messages for that device can also be specified using the launch parameter "FRAME_ID".

Note: these parameters are not written to the device. They only instruct the node on how to behave.

ROS2 UBX NAV Messages

The following messages may be outputed. They included a std_msgs/Header header with the remainder of the fields matching the UBX output. Note that field names use different notation as the UBX field name notation is not compliant with the ROS IDL field names.

/ubx_esf_meas

/ubx_esf_status
/ubx_nav_clock
/ubx_nav_cov
/ubx_nav_dop
/ubx_nav_eoe
/ubx_nav_hp_pos_ecef
/ubx_nav_hp_pos_llh
/ubx_nav_odo
/ubx_nav_orb
/ubx_nav_sat
/ubx_nav_sig
/ubx_nav_pos_ecef
/ubx_nav_pos_llh
/ubx_nav_pvt
/ubx_nav_rel_pos_ned
/ubx_nav_status
/ubx_nav_time_utc
/ubx_nav_vel_ecef
/ubx_nav_vel_ned
/ubx_rxm_rtcm
/ubx_rxm_measx
/ubx_rxm_rawx
/ubx_sec_sig
/ubx_sec_sig_log

The following topics are subscribed to /ubx_esf_meas_to_device /ntrip_client/rtcm

ROS2 NAVSATFIX Messages

In addition to the UBX NAV messages shown above, NavSatFix messages can also be published on topic /fix.

Note that this node relies on (and hence subscribes to) three UBX Nav messages, namely /ubx_nav_hp_pos_llh, /ubx_nav_cov, /ubx_nav_status.

If the ublox device is not configured to publish these three messages, the navsatfix message will likewise not be published.

/fix

NTRIP Client - RTCM messages

A basic NTRIP client is provided, that focuses in binary RTCM data. Its purpose is to acquire the RTCM data from an internet based NTRIP Castor and publish RTCM Messages.

An example launch file is provided. You will need to set values appropriate for the NTRIP Castor intended to be used

ros2 launch ublox_dgnss ntrip_client.launch.py use_https:=true host:=ntrip.data.gnss.ga.gov.au port:=443 mountpoint:=MBCH00AUS0 username:=username password:=password

Note the launch file has been configured to also use environment variables NTRIP_USERNAME & NTRIP_PASSWORD such that you dont need credentials in the launch scripts.

Moving Base and Rover

The ZED-F9P devices support the "moving base and rover" mode of operation, using two devices on a mobile vehicle to provide both position and orientation data. Further information on this mode, including physical connections between the two devices and the host machine are included in the following ublox application note.

https://www.u-blox.com/sites/default/files/documents/ZED-F9P-MovingBase_AppNote_UBX-19009093.pdf

Note: the ZED-F9R device does not support this mode.

Example launch configuration files are included as "ublox_mb+r_base.launch.py" and "ublox_mb+r_rover.launch.py" for the base and rover devices respectively. The base and rover are physically connected similar to that described in Section 2.2.1 "Wired connection between base and rover" in the ublox app note, with UART2 used for the wired connection between base and rover. Both base and rover connect to the host machine via USB. Device configuration is similar to that described in Section 2.3.2 "5 Hz navigation rate application" in the app note.

Both base and rover will output position data which can be used to publish NavSatFix messages (as described above). The rover also outputs heading data via UBX-NAV-RELPOSNED messages. Refer to Section 2.4 "Using the heading output" in the app note for more information.

Note: as this mode required two ZED-F9P devices connected simultaneously, you will need to configure each device with a different serial string and specify these in the launch files. See description above on device identification parameters.

Helpful tips

Did the F9 device receive and use the RTCM data?

If you want to see if the UBX device has received and processed the RTCM data run this, after ensuring that CFG_MSGOUT_UBX_RXM_RTCM_USB is set to 1 via rqt

ros2 topic echo /ubx_rxm_rtcm

If msg_used shows 2 then the RTCM message has been used by the device.

This RTCM 3 Message cheat sheet can be used to determine wha the msg_type field represents eg GPS, GLONASS, Galileo, SBAS, QZSS or BeiDou.

Was a high precision location calculated?

Ensure CFG_MSGOUT_UBX_NAV_STATUS_USB is set to 1. It is lower priority message but can be used to determine what type of GPS fix and the type of differential error correction that has been supplied.

ros2 topic echo /ubx_nav_status

should output a message similar to

header:
  stamp:
    sec: 1684907069
    nanosec: 214298394
  frame_id: ubx
itow: 279887200
gps_fix:
  fix_type: 3
gps_fix_ok: true
diff_soln: true
wkn_set: true
tow_set: true
diff_corr: true
carr_soln_valid: true
map_matching:
  status: 0
psm:
  state: 0
spoof_det:
  state: 2
carr_soln:
  status: 0
ttff: 709
msss: 3416912

If the gps_fix.fix_type = 3, it means its a 3D fix. The diff_soln and diff_corr implies that the differential error correction has occurred.

How precise is my solution?

After making sure that the deivce is processing RTCM messages and assuming that you have launched the node with ros2 launch ublox_dgnss ublox_rover_hpposllh.launch.py, run the following the command

ros2 topic echo /ubx_nav_hp_pos_llh

You should see something similiar to

header:
  stamp:
    sec: 1684907675
    nanosec: 765881914
  frame_id: ubx
version: 0
invalid_lon: false
invalid_lat: false
invalid_height: false
invalid_hmsl: false
invalid_lon_hp: false
invalid_lat_hp: false
invalid_height_hp: false
invalid_hmsl_hp: false
itow: 280493800
lon: 1534256850
lat: -280021154
height: 87232
hmsl: 49963
lon_hp: 31
lat_hp: -7
height_hp: -1
hmsl_hp: 1
h_acc: 169
v_acc: 123

The driver output the raw UBX data into the message so some interpreting is required.

h_acc and v_acc are in millimeters but need to be scaled by 0.1 - h_acc: 16.9 mm and v_acc: 12.3 mm` per the above. Such that there is centimeter level accruacy.

If in doubt as to what the scaling is, please look at the F9 interface description for an explanation. All debug log output have had scaling applied.

If you would like to calculate the high precision lon, lat and height values use the following code as a guide

   // Extract the LLH and high-precision components
    double lat = ubx_hppos_llh_msg->lat * 1e-7 + ubx_hppos_llh_msg->lat_hp * 1e-9;
    double lon = ubx_hppos_llh_msg->lon * 1e-7 + ubx_hppos_llh_msg->lon_hp * 1e-9;
    double alt = ubx_hppos_llh_msg->height * 1e-3 + ubx_hppos_llh_msg->height_hp * 1e-4;

ublox_dgnss's People

Contributors

gsokoll avatar hortovanyi avatar tfoldi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

ublox_dgnss's Issues

Portable RTK Base Station Setup

I am trying to configure the base and rover stations having exactly this setup: https://docs.holybro.com/gps-and-rtk-system/f9p-h-rtk-series/portable-rtk-base-station-setup

For Base RTK UBLOX U-Center app:

    PRT: UART1, 57600 baud, RCTM3 out, UBX in…press send button in lower left
    TMODE3: Survey-in, 60seconds, 2 meters…press send
    MSG: RTCM3.3 - 1005, UART1 in/out, 1sec…press send
    RTCM3.3 - 1074, UART1 in/out, 1sec…press send
    RTCM3.3 - 1084, UART1 in/out, 1sec…press send
    RTCM3.3 - 1094, UART1 in/out, 1sec…press send
    RTCM3.3 - 1124, UART1 in/out, 1sec…press send
    RTCM3.3 - 1230, UART1 in/out, 5sec…press send
    CFG: Save current configuration to FLASH…press send

For the Base:

       params_base= [
        {'DEVICE_SERIAL_STRING': "esab"},
        {'FRAME_ID': "base"},
        # config measurement interval to 200 ms (ie 5 Hz) and nav update rate to once per measurement
        {'CFG_RATE_MEAS': 0xc8},
        {'CFG_RATE_NAV': 0x1},

        # disable all messages on UART2
        {'CFG_UART2INPROT_NMEA': False},
        {'CFG_UART2INPROT_RTCM3X': False},
        {'CFG_UART2INPROT_UBX': False},
        {'CFG_UART2OUTPROT_NMEA': False},
        {'CFG_UART2OUTPROT_RTCM3X': False},
        {'CFG_UART2OUTPROT_UBX': False},

        # set UART1 baud rate to 57600
        {'CFG-UART1-BAUDRATE': 0xE100},

        # send RTCM messages only (to rover) on UART1
        {'CFG_UART1INPROT_NMEA': False},
        {'CFG_UART1INPROT_RTCM3X': False},
        {'CFG_UART1INPROT_UBX': False},
        {'CFG_UART1OUTPROT_NMEA': False},
        {'CFG_UART1OUTPROT_RTCM3X': True},
        {'CFG_UART1OUTPROT_UBX': False},

        # RTCM and UBX messages as required on USB
        {'CFG_USBINPROT_NMEA': False},
        {'CFG_USBINPROT_RTCM3X': True},
        {'CFG_USBINPROT_UBX': True},
        {'CFG_USBOUTPROT_NMEA': False},
        {'CFG_USBOUTPROT_RTCM3X': False},
        {'CFG_USBOUTPROT_UBX': True},

        # output RTCM messages required for moving base+rover mode on UART2
        {'CFG-MSGOUT-RTCM_3X_TYPE4072_0_UART1': 0x1},
        {'CFG-MSGOUT-RTCM_3X_TYPE1074_UART1': 0x1},
        {'CFG-MSGOUT-RTCM_3X_TYPE1084_UART1': 0x1},
        {'CFG-MSGOUT-RTCM_3X_TYPE1124_UART1': 0x1},
        {'CFG-MSGOUT-RTCM_3X_TYPE1230_UART1': 0x1},

        # messages required for navsatfix calcs by ROS node
        {'CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB': 0x1},
        {'CFG_MSGOUT_UBX_NAV_COV_USB': 0x1},
        {'CFG_MSGOUT_UBX_NAV_STATUS_USB': 0x1},
        {'CFG_MSGOUT_UBX_NAV_PVT_USB': 0x1},            
        ]

For the Rover UBLOX U-Center app,:

    PRT: UART2, 57600Kbaud, RCTM3 in, UBX out…press send
    CFG: Save current configuration to FLASH…press send

For the Rover:

        params_rover = [
        {'DEVICE_SERIAL_STRING': "revor"},
        {'FRAME_ID': "rover"},

        # config measurement interval to 200 ms (ie 5 Hz) and nav update rate to once per measurement
        {'CFG_RATE_MEAS': 0xc8},
        {'CFG_RATE_NAV': 0x1},

        # disable all messages on UART1
        {'CFG_UART1INPROT_NMEA': False},
        {'CFG_UART1INPROT_RTCM3X': False},
        {'CFG_UART1INPROT_UBX': False},
        {'CFG_UART1OUTPROT_NMEA': False},
        {'CFG_UART1OUTPROT_RTCM3X': False},
        {'CFG_UART1OUTPROT_UBX': False},

        # set UART2 baud rate to 57600
        {'CFG-UART2-BAUDRATE': 0xE100},

        # receive RTCM messages only (from base) on UART2
        {'CFG_UART2INPROT_NMEA': False},
        {'CFG_UART2INPROT_RTCM3X': True},
        {'CFG_UART2INPROT_UBX': False},
        {'CFG_UART2OUTPROT_NMEA': False},
        {'CFG_UART2OUTPROT_RTCM3X': False},
        {'CFG_UART2OUTPROT_UBX': False},

        # send/receive UBX messages only on USB
        {'CFG_USBINPROT_NMEA': False},
        {'CFG_USBINPROT_RTCM3X': False},
        {'CFG_USBINPROT_UBX': True},
        {'CFG_USBOUTPROT_NMEA': False},
        {'CFG_USBOUTPROT_RTCM3X': False},
        {'CFG_USBOUTPROT_UBX': True},

        # messages required for navsatfix calcs by ROS node
        {'CFG_MSGOUT_UBX_NAV_HPPOSLLH_USB': 0x1},
        {'CFG_MSGOUT_UBX_NAV_COV_USB': 0x1},
        {'CFG_MSGOUT_UBX_NAV_STATUS_USB': 0x1},
        {'CFG_MSGOUT_UBX_NAV_PVT_USB': 0x1},

        # output relative position messages
        {'CFG_MSGOUT_UBX_NAV_RELPOSNED_USB': 0x1},
        ]

However, I can not see the base and rover communicating. Is there a way to debug?

From Base ros2 topic echo /base/ubx_nav_status:

       header:
      stamp:
        sec: 1708617982
        nanosec: 466416165
      frame_id: base
    itow: 403600400
    gps_fix:
      fix_type: 3
    gps_fix_ok: true
    diff_soln: false
    wkn_set: true
    tow_set: true
    diff_corr: false
    carr_soln_valid: true
    map_matching:
      status: 0
    psm:
      state: 0
    spoof_det:
      state: 2
    carr_soln:
      status: 0
    ttff: 12622
    msss: 4355423

From Rover ros2 topic echo /rover/ubx_nav_status:

  header:
    stamp:
      sec: 1708617868
      nanosec: 285342624
    frame_id: rover
  itow: 403486200
  gps_fix:
    fix_type: 3
  gps_fix_ok: true
  diff_soln: false
  wkn_set: true
  tow_set: true
  diff_corr: false
  carr_soln_valid: true
  map_matching:
    status: 0
  psm:
    state: 0
  spoof_det:
    state: 2
  carr_soln:
    status: 0
  ttff: 4549
  msss: 4392950

Failed to build ublox_dgnss_node on Rolling/Humble

This package is failing to build on the buildfarm for Rolling and Humble, one example is: https://build.ros2.org/job/Hbin_uJ64__ublox_dgnss_node__ubuntu_jammy_amd64__binary/9/consoleFull .

The problem ends up being this:

00:01:22.492 CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
00:01:22.492   Could NOT find PkgConfig (missing: PKG_CONFIG_EXECUTABLE)

The containers that the ROS buildfarm uses only install things that are listed in the package.xml. In this case, the package.xml does not list a dependency on pkg-config, and so that executable is not available for CMake to find. If you add a <build_depend>pkg-config</build_depend> to your package.xml and do a new release, that should fix this problem.

Frame ID and data visualization

Hello guys,

sorry to place another idiot issue. :(

I have all nodes functioning and publishing on /fix topic. I also want to integrate it with nav_sat node from robot localization package, but it seems is not picking the data from the /fix topic. On my research, i cross with "mapviz" package and there, i was also unable to see the /fix messages from gps or from navsat message-types. I'm afraid that the used frame id "ubx" is not allowing me to do that, I dont now if i need to republish them, to make a transform to my base_link or any other possible solution.

If you were trying to use nav_sat from robot_localization, which steps will you follow? also, there's any other tool to allow me to see the publish data (as to see a test path, for example) ?

Thanks a lot!

Launch and ros2 run fails a libusb assert when no usb gps device initially attached

libusb appears to be attempting to transmit to USB devices upon startup.

There is an Assert checking that the devHandle is not null in the libusb library.

Need to investigate:
1/ if this is relating to the hot_plug enumeration on startup;
2/ that we need to do a more simple check during ublox_dgnss_node initialisation for if at least one Ublox f9 type gps device is attached;or
3/ a bug with libusb

configuration ROS2 with ZEDf9p

Hello. I don't have experience with ROS. Currently I wanted to connect the ROS2 with the sparkfun ZED F9P RTK-GNSS board module. Do you know the configuration to connect between the ROS2 with the ZED F9P module? Thank you

mistake on Readme

(vendor ID of 0x1546 and product ID of 0x1546).
is wrong in readme , ublox product id is 0x01a9
as in code
#define F9_VENDOR_ID 0x1546 // U-Blox AG
#define F9_PRODUCT_ID 0x01a9 // u-blox GNSS receiver

Failed to find rclcpp on ROS 2 build farm

Replying to this comment: ros/rosdistro#30258 (comment)

When a package fails to build on the buildfarm, there should be a link to the job that failed on Jenkins. Look for the "Console Output" link, and then the "Full Log" link on that page if the log is long enough. Read through the log to find the build failure. I find it easiest to find the error by going to the build binarydeb section and reading down.

https://build.ros2.org/job/Gbin_uF64__ublox_dgnss_node__ubuntu_focal_amd64__binary/2/consoleFull#console-section-15

In this case the error is:

23:04:53 CMake Error at CMakeLists.txt:22 (find_package):
23:04:53   By not providing "Findrclcpp.cmake" in CMAKE_MODULE_PATH this project has
23:04:53   asked CMake to find a package configuration file provided by "rclcpp", but
23:04:53   CMake did not find one.
23:04:53 
23:04:53   Could not find a package configuration file provided by "rclcpp" with any
23:04:53   of the following names:
23:04:53 
23:04:53     rclcppConfig.cmake
23:04:53     rclcpp-config.cmake
23:04:53 
23:04:53   Add the installation prefix of "rclcpp" to CMAKE_PREFIX_PATH or set
23:04:53   "rclcpp_DIR" to a directory containing one of the above files.  If "rclcpp"
23:04:53   provides a separate development package or SDK, be sure it has been
23:04:53   installed.

If CMake can't find a package on the buildfarm, it usually means the package being built isn't declaring it as a build dependency in the package.xml. The buildfarm installs only the package's dependencies when it tries to build it, so if it doesn't declare rclcpp then rclcpp won't be installed. That seems to be the case here. It looks like ublox_dgnss_node needs a <depend>rclcpp</depend> tag so that rclcpp is sure to be installed both when the package is built on the buildfarm and when a user installs installs rclcpp-galactic-ublox-dgnss.

<buildtool_depend>ament_cmake</buildtool_depend>
<exec_depend>ublox_ubx_msgs</exec_depend>
<exec_depend>ublox_ubx_interfaces</exec_depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<test_depend>ament_cmake_cppcheck</test_depend>
<test_depend>ament_cmake_copyright</test_depend>

Build failure on ROS buildfarm for ROS 2 Iron

See: https://build.ros2.org/job/Ibin_uJ64__ublox_dgnss__ubuntu_jammy_amd64__binary/7/console

23:23:39 KeyError: 'ros-iron-ntrip-client-node'
23:23:39 
23:23:39 During handling of the above exception, another exception occurred:
23:23:39 
23:23:39 Traceback (most recent call last):
23:23:39   File "/tmp/ros_buildfarm/scripts/release/create_binarydeb_task_generator.py", line 21, in <module>
23:23:39     run_module('ros_buildfarm.scripts.release.create_binarydeb_task_generator', run_name='__main__')
23:23:39   File "/usr/lib/python3.10/runpy.py", line 227, in run_module
23:23:39     return _run_code(code, {}, init_globals, run_name, mod_spec)
23:23:39   File "/usr/lib/python3.10/runpy.py", line 86, in _run_code
23:23:39     exec(code, run_globals)
23:23:39   File "/tmp/ros_buildfarm/ros_buildfarm/scripts/release/create_binarydeb_task_generator.py", line 214, in <module>
23:23:39     sys.exit(main())
23:23:39   File "/tmp/ros_buildfarm/ros_buildfarm/scripts/release/create_binarydeb_task_generator.py", line 89, in main
23:23:39     debian_pkg_versions = get_binary_package_versions(
23:23:39   File "/tmp/ros_buildfarm/ros_buildfarm/common.py", line 175, in get_binary_package_versions
23:23:39     pkg = apt_cache[debian_pkg_name]
23:23:39   File "/usr/lib/python3/dist-packages/apt/cache.py", line 283, in __getitem__
23:23:39     raise KeyError('The cache has no package named %r' % key)
23:23:39 KeyError: "The cache has no package named 'ros-iron-ntrip-client-node'"
23:23:39 Build step 'Execute shell' marked build as failure

Probably need to resolve this dependency:

<depend>ntrip_client_node</depend>

Moving base RTK 问题

Thank you for your project.
I am currently trying to use f9p on an outdoor vehicle. I don't quite understand the Moving Base and Rover part. Do I need to launchublox_mb+r_base.launch.pyon the fixed base station and ublox_mb+r_rover.launch.py on the rover station? However, shouldn't there be two rover stations for the vehicle to have heading information? Do I need to modify the parameters and launch ublox_mb+r_rover.launch.py twice? But how do two rover stations calculate heading information?

USB poblem with apt instalation

Hi, I have a problem running ZED-F9P when I install this repository from using apt. I get the following error:

[component_container_mt-1] component_container_mt: ../../libusb/io.c:1497: libusb_submit_transfer: Assertion 'transfer->dev_handle' failed.

Screenshot from 2023-10-31 22-26-29

When I clone the repository and build the code myself using colcon, everything works fine.

Can you help me with this problem?

Ublox_gnss_node not publishing odometry

Hello there!

I was trying to check what is inside the odom messages but it shows no info, is not being publish but is declarated, I was trying changing booleans as CFG_ODO_USE_ODO/COG to true but still nothing.

Could you please point me out on how to see the odometry calculated?

thanks a lot.

Product ID and F9R compatibility

Hi,
I'm trying your branch F9R and got issues with a custom product ID to differentiate from F9P.
I enforce it in the USB header but it doesn't want it and tell me "usb device not found".
Is there any restriction with the libusb about that ?
I got two udev rules to redirect F9R and F9P before that.
Could you add a parameter to change the productid ?

Thanks.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.