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

NMEA Sentences Compatibilty #341

Open
sthakur-ymsli opened this issue Feb 12, 2025 · 12 comments
Open

NMEA Sentences Compatibilty #341

sthakur-ymsli opened this issue Feb 12, 2025 · 12 comments

Comments

@sthakur-ymsli
Copy link

My ROS bag contains NMEA sentences, including GPGSV, GNRMC, and GNGGA. I reviewed the gnss_converter_node package and found that it only processes GPGGA and GPRMC sentences. I'm unsure whether it will accept input from my NMEA topic to execute its internal logic. Could you please provide guidance on how we can use our NMEA topic as input to the package and what changes should be made.

Image

Image

@rsasaki0109
Copy link
Collaborator

If you set use_gnss_mode to NMEA instead of RTKLIB, it should work.

https://github.com/MapIV/eagleye/blob/main-ros1/eagleye_rt/config/eagleye_config.yaml#L3

@sthakur-ymsli
Copy link
Author

We are using Autoware main branch. Did all the required changes in the config. file of the package. We are using NMEA instead of RTK, all the input topics is publishing data and the package is subscribing them. But still on the terminal, we are not getting "status enable: True" for the nodes in the pacakge architecture, except yaw_rate offset stop. Not able to figure out the issue. Could you please help and guide. FYR: We played our rosbag for an hour still no change in enable status.

Image

@rsasaki0109
Copy link
Collaborator

Could you provide the coming YAML?

@sthakur-ymsli
Copy link
Author

Image
Image
Image
Image
Image

@rsasaki0109
Copy link
Collaborator

I want to check the original differences, so I need the YAML file as it is. At a glance, it seems fine.
By the way, what’s the typical speed of the vehicle? Self-localization doesn’t work unless it’s running at more than 10 kph.

@sthakur-ymsli
Copy link
Author

A little unclear on what you refer by the Original YAML file but here's the link for that:
https://github.com/MapIV/eagleye/blob/autoware-main/eagleye_rt/config/eagleye_config.yaml

and our YAML file is in the pictures above.

Coming to the vehicle's speed, we estimate it to be around 6-14 kph.

My question to you is that, do we need the vehicle to operate above 10kph at all times or is it just an initialisation thing? If yes, what could be the workaround to achieve package functionality?

@rsasaki0109
Copy link
Collaborator

rsasaki0109 commented Feb 13, 2025

I would like to check where the YAML file has been modified.
It's inconvenient to check with just the image.

It is necessary to always drive at a speed of over 10 km/h. Of course, it is possible to stop temporarily to some extent.
In that case, please reduce the moving_judgment_threshold from 2.78 [m/s] to half.
https://github.com/MapIV/eagleye/blob/autoware-main/eagleye_rt/config/eagleye_config.yaml#L39

@sthakur-ymsli
Copy link
Author

Here is our YAML.

/**: #GNSS cycle 5Hz, IMU cycle 50Hz.
ros__parameters:
# Estimate mode
use_gnss_mode: NMEA
use_can_less_mode: false

# Topic
twist:
  twist_type: 0 # TwistStamped : 0, TwistWithCovarianceStamped: 1
  twist_topic: /can_twist
  twist_rate: 10
imu_topic: /gc_status/imu_stamped
gnss:
  velocity_source_type: 1 # rtklib_msgs/RtklibNav: 0, nmea_msgs/Sentence: 1, ublox_msgs/NavPVT: 2, geometry_msgs/TwistWithCovarianceStamped: 3, septentrio_gnss_driver/PVTGeodetic: 4
  velocity_source_topic: /gc_status/nmea_stamped
  llh_source_type: 2 # rtklib_msgs/RtklibNav: 0, nmea_msgs/Sentence: 1, sensor_msgs/NavSatFix: 2
  llh_source_topic: /gc_status/gps_stamped  

# TF
tf_gnss_frame:
  parent: "base_link"
  child: "gps"

# Origin of GNSS coordinates (ECEF to ENU)
ecef_base_pos:
  x : 0.0                               
  y : 0.0
  z : 0.0
  use_ecef_base_position : false

reverse_imu_wz: false

# Eagleye Navigation Parameters
# Basic Navigation Functions
common:
  imu_rate: 10
  gnss_rate: 10
  stop_judgment_threshold: 0.01
  slow_judgment_threshold: 0.278
  moving_judgment_threshold: 1.39
  
velocity_scale_factor:                                
  estimated_minimum_interval: 20
  estimated_maximum_interval: 400
  gnss_receiving_threshold: 0.25
  velocity_scale_factor_save_str: /config/velocity_scale_factor.txt
  save_velocity_scale_factor: false                    
  velocity_scale_factor_save_duration: 100.0
  th_velocity_scale_factor_percent: 10.0          

yaw_rate_offset_stop:                                  
  estimated_interval: 4
  outlier_threshold: 0.002

yaw_rate_offset:                                       
  estimated_minimum_interval: 30
  gnss_receiving_threshold: 0.25
  outlier_threshold: 0.002
  1st:
    estimated_maximum_interval: 300
  2nd:
    estimated_maximum_interval: 500

heading:                                             
  estimated_minimum_interval: 10
  estimated_maximum_interval: 30
  gnss_receiving_threshold: 0.25
  outlier_threshold: 0.0524                         
  outlier_ratio_threshold: 0.5
  curve_judgment_threshold: 0.0873
  init_STD: 0.0035 #[rad] (= 0.2 [deg])

heading_interpolate:
  sync_search_period: 2
  proc_noise: 0.0005 #[rad] (= 0.03 [deg])

slip_angle:
  manual_coefficient: 0.0                             

slip_coefficient:
  estimated_minimum_interval: 2
  estimated_maximum_interval: 100
  curve_judgment_threshold: 0.017453
  lever_arm: 0.0                                     

rolling:
  filter_process_noise: 0.01
  filter_observation_noise: 1

trajectory:                       
  curve_judgment_threshold: 0.017453
  timer_update_rate: 10       
  deadlock_threshold: 1
  sensor_noise_velocity: 0.05
  sensor_scale_noise_velocity: 0.02
  sensor_noise_yaw_rate: 0.01
  sensor_bias_noise_yaw_rate: 0.1

smoothing:
  moving_average_time: 3
  moving_ratio_threshold: 0.1

height:
  estimated_minimum_interval: 200
  estimated_maximum_interval: 2000
  update_distance: 0.1
  gnss_receiving_threshold: 0.1
  outlier_threshold: 0.3
  outlier_ratio_threshold: 0.5
  moving_average_time: 1

position:
  estimated_interval: 300
  update_distance: 0.1
  outlier_threshold: 3.0
  gnss_receiving_threshold: 0.25
  outlier_ratio_threshold: 0.5

position_interpolate:
  sync_search_period: 2

monitor:
  print_status: true
  log_output_status: false
  use_compare_yaw_rate: false
  comparison_twist_topic: /calculated_twist
  th_diff_rad_per_sec: 0.17453
  th_num_continuous_abnormal_yaw_rate: 25

# Optional Navigation Functions
angular_velocity_offset_stop:                         
  estimated_interval: 4
  outlier_threshold: 0.002

rtk_dead_reckoning:
  rtk_fix_STD: 0.3 #[m]
  proc_noise: 0.05 #[m]

rtk_heading:                                          
  update_distance: 0.3
  estimated_minimum_interval: 10
  estimated_maximum_interval: 30
  gnss_receiving_threshold: 0.25
  outlier_threshold: 0.0524
  outlier_ratio_threshold: 0.5
  curve_judgment_threshold: 0.0873

enable_additional_rolling:
  update_distance: 0.3
  moving_average_time: 1
  sync_judgment_threshold: 0.01
  sync_search_period: 1

velocity_estimator:
  gga_downsample_time: 0.5
  stop_judgment_velocity_threshold: 0.2
  stop_judgment_interval: 1
  variance_threshold: 0.000025
  pitch_rate_offset:
    estimated_interval: 8
  pitching:
    estimated_interval: 5
    outlier_threshold: 0.0174
    gnss_receiving_threshold: 0.2
    outlier_ratio_threshold: 0.5
  acceleration_offset:
    estimated_minimum_interval: 30
    estimated_maximum_interval: 500
    filter_process_noise: 0.01
    filter_observation_noise: 1
  doppler_fusion:
    estimated_interval: 4
    gnss_receiving_threshold: 0.2
    outlier_ratio_threshold: 0.5
    outlier_threshold: 0.1

@rsasaki0109
Copy link
Collaborator

There is no validation for IMU and vehicle speed below 30Hz, so setting it to 30Hz would be better.

@sthakur-ymsli
Copy link
Author

Our IMU is giving the data at 10 Hz, GPS is also around 10 Hz, NMEA is around 2 Hz. Twist is giving at 30 Hz. I tried changing the rate in YAML file to 30 Hz for both but the orientation algorithm won't converge. Your guidance would be helpful, kindly suggest the alternatives.

Image

@rsasaki0109
Copy link
Collaborator

rsasaki0109 commented Feb 13, 2025

The 30Hz frequency is not just about the YAML configuration but also the sensor's actual cycle. Is it possible to change it through the hardware settings?

Also, could you set the gnss_rate in the YAML file to 2?

@sthakur-ymsli
Copy link
Author

Thanks for the help, we will try with the suggested configuration.

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

2 participants