septentrio-gnss / septentrio_gnss_driver

ROS 1 & 2 driver for Septentrio GNSS & INS receivers
BSD 3-Clause "New" or "Revised" License
82 stars 39 forks source link

[BUG] /extsensormeas node is broken #51

Closed robduer closed 2 years ago

robduer commented 2 years ago

Hardware: I am using the Septentrio AsteRx-i3 D Pro + on Ubuntu 18.04 and ROS Melodic.

Bug The /extsensormeas node sends the correct angular rate but sends the exact same data for its accelerations. Velocity, std_dev and temperature data are way off the real values. IN RXTools Message Inspector View the correct data on acceleration, angular rate and tempreratur are shown.

Example header: seq: 7638 stamp: secs: 1650352094 nsecs: 7669758 frame_id: "ins" block_header: sync_1: 36 sync_2: 64 crc: 14449 id: 4050 length: 100 tow: 198512000 wnc: 2206 n: 3 sb_length: 28 source: 32 sensor_model: 10 type: 1 obs_info: 1 acceleration_X: -0.0325 acceleration_Y: 0.47875 acceleration_Z: -0.08875 angular_rate_X: -0.0325 angular_rate_Y: 0.47875 angular_rate_Z: -0.08875 velocity_X: 9.12120139543e-33 velocity_Y: -1.25499999523 velocity_Z: 9.12119919138e-33 std_dev_X: 1.73937499523 std_dev_Y: -3.21864213941e+26 std_dev_Z: -1.42749989033 sensor_temperature: 28832 zero_velocity_flag: -0.0325

header: seq: 7639 stamp: secs: 1650352094 nsecs: 507891427 frame_id: "ins" block_header: sync_1: 36 sync_2: 64 crc: 63172 id: 4050 length: 72 tow: 198512500 wnc: 2206 n: 2 sb_length: 28 source: 32 sensor_model: 10 type: 1 obs_info: 1 acceleration_X: 0.01125 acceleration_Y: 0.47125 acceleration_Z: -0.15625 angular_rate_X: 0.01125 angular_rate_Y: 0.47125 angular_rate_Z: -0.15625 velocity_X: 4.05647994111e+29 velocity_Y: 1.05499994755 velocity_Z: -71.6799468994 std_dev_X: 1.7356249094 std_dev_Y: nan std_dev_Z: -1.53124988079 sensor_temperature: -10491 zero_velocity_flag: 0.01125

thomasemter commented 2 years ago

Hi there , parsing of /extsensormeas and some other messages is indeed broken. This is fixed in the upcoming release which should be available quite soon. If you need /extsensormeas urgently you might want to try the /dev branch.

robduer commented 2 years ago

Since updating to 1.1 I cant start the rosnode anymore. trying to connect through tcp gives me:

/opt/ros/melodic/share/septentrio_gnss_driver$ roslaunch septentrio_gnss_driver rover.launch param_file_name:=rover ... logging to /home/anon/.ros/log/4ace220c-caaa-11ec-9c2c-902e16fedec2/roslaunch-Legion-15546.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://Legion:43073/

SUMMARY

CLEAR PARAMETERS

PARAMETERS

NODES / septentrio_gnss (septentrio_gnss_driver/septentrio_gnss_driver_node) tf_aux1 (tf2_ros/static_transform_publisher) tf_gnss (tf2_ros/static_transform_publisher) tf_imu (tf2_ros/static_transform_publisher) tf_vsm (tf2_ros/static_transform_publisher)

auto-starting new master process[master]: started with pid [15556] ROS_MASTER_URI=http://localhost:11311

setting /run_id to 4ace220c-caaa-11ec-9c2c-902e16fedec2 process[rosout-1]: started with pid [15567] started core service [/rosout] process[tf_imu-2]: started with pid [15575] process[tf_gnss-3]: started with pid [15576] process[tf_vsm-4]: started with pid [15578] process[tf_aux1-5]: started with pid [15587] process[septentrio_gnss-6]: started with pid [15591] [ WARN] [1651559329.715451819]: /septentrio_gnss: AttEuler needs multi-antenna receiver. Multi-antenna setting automatically activated. Deactivate publishing of AttEuler if multi-antenna operation is not available. [ INFO] [1651559329.717323967]: /septentrio_gnss: Connecting to tcp://192.168.3.1:28784... [ INFO] [1651559329.718325481]: /septentrio_gnss: Connected to 192.168.3.1:28784. [ INFO] [1651559329.731380862]: /septentrio_gnss: The connection descriptor for the TCP connection is IP10 [ERROR] [1651559330.087512454]: /septentrio_gnss: Invalid command just sent to the Rx! The Rx's response contains 66 bytes and reads: $R? sao, Main, 0.0, 0.0, 0.0, "Unknown", Unknown: Invalid command! [ERROR] [1651559330.092309318]: /septentrio_gnss: Invalid command just sent to the Rx! The Rx's response contains 66 bytes and reads: $R? sao, Aux1, 0.0, 0.0, 0.0, "Unknown", Unknown: Invalid command!

serial leaves me with:

/opt/ros/melodic/share/septentrio_gnss_driver$ roslaunch septentrio_gnss_driver rover.launch param_file_name:=rover ... logging to /home/anon/.ros/log/a5bd08aa-caa9-11ec-9c2c-902e16fedec2/roslaunch-Legion-15271.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt

started roslaunch server http://Legion:33097/

SUMMARY

CLEAR PARAMETERS

PARAMETERS

NODES / septentrio_gnss (septentrio_gnss_driver/septentrio_gnss_driver_node) tf_aux1 (tf2_ros/static_transform_publisher) tf_gnss (tf2_ros/static_transform_publisher) tf_imu (tf2_ros/static_transform_publisher) tf_vsm (tf2_ros/static_transform_publisher)

auto-starting new master process[master]: started with pid [15281] ROS_MASTER_URI=http://localhost:11311

setting /run_id to a5bd08aa-caa9-11ec-9c2c-902e16fedec2 process[rosout-1]: started with pid [15292] started core service [/rosout] process[tf_imu-2]: started with pid [15300] process[tf_gnss-3]: started with pid [15301] process[tf_vsm-4]: started with pid [15306] process[tf_aux1-5]: started with pid [15312] process[septentrio_gnss-6]: started with pid [15318] [ WARN] [1651559052.836614601]: /septentrio_gnss: AttEuler needs multi-antenna receiver. Multi-antenna setting automatically activated. Deactivate publishing of AttEuler if multi-antenna operation is not available. [ INFO] [1651559052.837826470]: /septentrio_gnss: Connecting serially to device/dev/serial/by-id/usb-Septentrio_Septentrio_USB_Device_3239030-if02, targeted baudrate: 921600 [ INFO] [1651559052.838111279]: /septentrio_gnss: Opened serial port /dev/serial/by-id/usb-Septentrio_Septentrio_USB_Device_3239030-if02 [septentrio_gnss-6] process has died [pid 15318, exit code -11, cmd /opt/ros/melodic/lib/septentrio_gnss_driver/septentrio_gnss_driver_node __name:=septentrio_gnss __log:=/home/anon/.ros/log/a5bd08aa-caa9-11ec-9c2c-902e16fedec2/septentrio_gnss-6.log]. log file: /home/anon/.ros/log/a5bd08aa-caa9-11ec-9c2c-902e16fedec2/septentrio_gnss-6*.log

thomasemter commented 2 years ago

Hi robduer,

the "Invalid command!" just means that you did not specify your antennas, which means the receiver will not be able to perform in the best way possible but should work nonetheless. Does rostopic echo /poscovgeodetic produce any output with TCP? In any case, thank you for the report, a more meaningful message should be output in this case.

Regarding the serial connection it is very hard to give a diagnosis. Can you please start it with activate_debug_log: true? Also, I must admit that I personally did not test the serial connection thoroughly because TCP over USB gives much more bandwidth.

Cheers, Thomas

robduer commented 2 years ago

Hi Thomas

the tcp connection seems to work now. /extsensormeas is sending the correct accelerations but the sensor_temperature is sending a usefull temperature only once every 10 messages at a messagerate of 10Hz.

It is sending : sensor_temperature: 42.4000015259 and then 9 times sensor_temperature: -32768.0

By the way is there a way to change the messagerate other than having to open the RXTool?

Cheers, robduer

thomasemter commented 2 years ago

Hi robduer,

thank you for your feedback. I am happy it works now.

The rates have to be set in the .yaml. by polling_period/pvt and polling_period/rest in ms. Setting it to 0 means "on change", i.e., as fast as possible.

Sensor temperature is not sent in every cycle of the /extsensormsg block and set to its do-not-use-value if it is not present. SBF and ROS messages are somewhat different in this regard. SBF has optional fields while ROS messages are always complete.

Cheers, Thomas

thomasemter commented 2 years ago

Hi robduer,

thanks to your report I could find and fix a bug in the setup of the serial connection. If you like, you may test it with PR #57.

Cheers, Thomas