septentrio-gnss/septentrio_gnss_driver

Communication settings mosaic-H and rover.yaml

fjahncke opened this issue · 9 comments

I'm trying to integrate a mosaic-H GNSS board into ROS.

I'm currently connected to the Micro-USB port on the board and can ping the board via 192.168.3.1.
I therefore tried setting an IP server with TCP to this adress but the only mode working is UDP.
image

I set the NMEA Output accordingly to UDP server on port 1.
image

This is my rover.yaml:

Configuration Settings for the Rover Rx

GNSS/INS Parameters

device: tcp://192.168.3.1:1

serial:
baudrate: 921600
rx_serial_port: /dev/ttyAMC0
hw_flow_control: off

login:
user: ""
password: ""

frame_id: gnss

imu_frame_id: imu

poi_frame_id: base_link

vsm_frame_id: vsm

aux1_frame_id: aux1

vehicle_frame_id: base_link

local_frame_id: odom

insert_local_frame: false

get_spatial_config_from_tf: false

lock_utm_zone: true

use_ros_axis_orientation: true

receiver_type: gnss

multi_antenna: true

datum: Default

poi_to_arp:
delta_e: 0.0
delta_n: 0.0
delta_u: 0.0

att_offset:
heading: 0.0
pitch: 0.0

ant_type: "Unknown"
ant_serial_nr: "Unknown"
ant_aux1_type: "Unknown"
ant_aux1_serial_nr: "Unknown"

leap_seconds: 18

polling_period:
pvt: 500
rest: 500

use_gnss_time: true

publish:

For both GNSS and INS Rxs

navsatfix: true
gpsfix: true
gpgga: true
gprmc: true
gpst: true
measepoch: true
pvtcartesian: true
pvtgeodetic: true
basevectorcart: true
basevectorgeod: true
poscovcartesian: true
poscovgeodetic: true
velcovgeodetic: true
atteuler: true
attcoveuler: true
pose: true
twist: true
diagnostics: true

For GNSS Rx only

gpgsa: true
gpgsv: true

For INS Rx only

insnavcart: false
insnavgeod: false
extsensormeas: false
imusetup: false
velsensorsetup: false
exteventinsnavcart: false
exteventinsnavgeod: false
imu: false
localization: false
tf: false

activate_debug_log: false

These are my last lines when is launch the driver:
setting /run_id to 1d03b03a-9b6a-11ed-a616-1d15bd112421
process[rosout-1]: started with pid [25574]
started core service [/rosout]
process[tf_imu-2]: started with pid [25582]
process[tf_gnss-3]: started with pid [25583]
process[tf_vsm-4]: started with pid [25584]
process[tf_aux1-5]: started with pid [25585]
process[septentrio_gnss-6]: started with pid [25587]
[ INFO] [1674511557.834914788]: /septentrio_gnss: Connecting to tcp://192.168.3.1:1...
[ INFO] [1674511557.836492184]: /septentrio_gnss: Connected to 192.168.3.1:1.
[ INFO] [1674511557.911378294]: /septentrio_gnss: The connection descriptor for the TCP connection is IPS5

Then nothing happens and rostopic list just gives me a published /tf and /tf_static topic. What did I do wrong?

Thank you for the help

Hi @fjahncke,

have you tried with the factory default port 28784 in ROSaic? The driver is supposed to work with the dynamic TCP ports IP11...17. This works out-of-the-box without the need to set up any ports.

It should also work with an IP server if it is configured as TCP2way like you did. If you want to go that route I would try with another port because 1 is assigned. I just tested it successfully setting the IP server port to 28785 in my setup, although this was in a development branch.

Or maybe the problem is that you assigned two IP Servers to TCP port 1 and one of them is send only?

Thank you for the help. I noticed that a colleague had changed the Port to 30000 and I was not able to connect with it therefore. Running the driver I can connect to the board now. Sadly the code is throwing some error messages:
[ INFO] [1674771645.096235558]: /septentrio_gnss: Connecting to tcp://192.168.3.1:30000... [ INFO] [1674771645.098019422]: /septentrio_gnss: Connected to 192.168.3.1:30000. [ INFO] [1674771645.111745003]: /septentrio_gnss: The connection descriptor for the TCP connection is IP10 [ERROR] [1674771645.688451825]: /septentrio_gnss: gnss [ERROR] [1674771645.688719402]: /septentrio_gnss: gnss [ERROR] [1674771645.751352459]: /septentrio_gnss: gnss [ERROR] [1674771645.751539107]: /septentrio_gnss: gnss

Also I updated the firmware to the latest 4.12.1

I assume the ERROR is this line. It is a leftover and should not be an error, on the contrary it means the firmware is on par with the driver's features :-). Thus, it can be ignored, sorry for the confusion. It is already fixed in the development branch.

If the ERROR log is from this line, it also means the driver should be getting data from the receiver. Do you get data in ROS now?

No sadly when I print rostopic list it doesn’t publish Any topics except for /tf

The connection descriptor IP10 indicates that one of the dynamic TCP/IP ports is used. Have you still configured any IP Server on the same port?

I set up everything from the start again, checked that no ports where set and changed to the gnss.yaml file and now everything works. Thank you for your help!

I am glad it is working now. Thank you for your feedback.