Skip to content

TF to MSG: Quaternion Not Properly Normalized #50

@momoistda

Description

@momoistda

Hi, thank you for the very nice work!
I have a problem to start it. Could you please help me?

Problem:
[ WARN] [1744118397.314791435, 1744108046.298657205]: TF to MSG: Quaternion Not Properly Normalized
[ WARN] [1744118397.335749647, 1744108046.318785040]: Large velocity, reset IMU-preintegration!
^C[ WARN] [1744118397.530942826, 1744108046.521124778]: TF to MSG: Quaternion Not Properly Normalized
[ WARN] [1744118397.532002638, 1744108046.521124778]: TF to MSG: Quaternion Not Properly Normalized
[ WARN] [1744118397.533085241, 1744108046.521124778]: TF to MSG: Quaternion Not Properly Normalized
[ WARN] [1744118397.534254636, 1744108046.521124778]: TF to MSG: Quaternion Not Properly Normalized
[ WARN] [1744118397.535360965, 1744108046.521124778]: TF to MSG: Quaternion Not Properly Normalized
[ WARN] [1744118397.555484067, 1744108046.541291641]: TF to MSG: Quaternion Not Properly Normalized

**- I tried to use ros sim time with my bag data, but it doesn't work.

  • This is my config data, thanks for your help!!!**

iorf:

Topics

pointCloudTopic: "/rslidar_points" # Point cloud data
imuTopic: "/robot/imu/data" # IMU data
odomTopic: "odometry/imu" # IMU pre-preintegration odometry, same frequency as IMU
gpsTopic: "gps/fixz" # GPS odometry topic from navsat, see module_navsat.launch file

Frames

lidarFrame: "rslidar"
baselinkFrame: "robot_base_link"
odometryFrame: "robot_odom"
mapFrame: "map"

GPS Settings

useImuHeadingInitialization: false # if using GPS data, set to "true"
useGpsElevation: false # if GPS elevation is bad, set to "false"
gpsCovThreshold: 2.0 # m^2, threshold for using GPS data
poseCovThreshold: 25.0 # m^2, threshold for using GPS data

Export settings

savePCD: true # TixiaoShan/LIO-SAM#3
savePCDDirectory: "/home/jingli/1. Promotion/A3_SLAMs_gogogo/" # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation

Sensor Settings

sensor: robosense # lidar sensor type, 'velodyne' or 'ouster' or 'livox' or 'robosense'
N_SCAN: 16 # number of lidar channel (i.e., Velodyne/Ouster: 16, 32, 64, 128, Livox Horizon: 6)
Horizon_SCAN: 1800 # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000)
downsampleRate: 1 # default: 1. Downsample your data if too many points(line). i.e., 16 = 64 / 4, 16 = 16 / 1
point_filter_num: 1 # default: 3. Downsample your data if too many points(point). e.g., 16: 1, 32: 5, 64: 8
lidarMinRange: 1.0 # default: 1.0, minimum lidar range to be used
lidarMaxRange: 1000.0 # default: 1000.0, maximum lidar range to be used

IMU Settings

imuType: 0 # 0: 6-axis 1: 9-axis
imuRate: 200.0
imuAccNoise: 6.6353604977847898e-03
imuGyrNoise: 2.3124993178780080e-05
imuAccBiasN: 3.3699453085276576e-05
imuGyrBiasN: 2.9772954066590520e-07

imuGyrNoise: 1.5636343949698187e-03

imuAccBiasN: 6.4356659353532566e-05

imuGyrBiasN: 3.5640318696367613e-05

imuGravity: 9.80511
imuRPYWeight: 0.01

Extrinsics: T_lb (lidar -> imu)

extrinsicTrans: [0.2753, 0.3539, -0.0443]
extrinsicRot: [0.997415, 0.071157, -0.014574,
-0.071157, 0.995400, -0.064146,
0.009994, 0.065017, 0.997834]

extrinsicTrans: [0.0, 0.0, 0.0]

extrinsicRot: [-1, 0, 0,

0, 1, 0,

0, 0, -1]

This parameter is set only when the 9-axis IMU is used, but it must be a high-precision IMU. e.g. MTI-680

extrinsicRPY: [0, -1, 0,
1, 0, 0,
0, 0, 1]

voxel filter paprams

mappingSurfLeafSize: 0.4 # default: 0.4 - outdoor, 0.2 - indoor

robot motion constraint (in case you are using a 2D robot)

z_tollerance: 1000 # meters
rotation_tollerance: 1000 # radians

CPU Params

numberOfCores: 4 # number of cores for mapping optimization
mappingProcessInterval: 0.0 # seconds, regulate mapping frequency

Surrounding map

surroundingkeyframeAddingDistThreshold: 1.0 # meters, regulate keyframe adding threshold
surroundingkeyframeAddingAngleThreshold: 0.2 # radians, regulate keyframe adding threshold
surroundingKeyframeDensity: 2.0 # meters, downsample surrounding keyframe poses
surroundingKeyframeSearchRadius: 50.0 # meters, within n meters scan-to-map optimization (when loop closure disabled)
surroundingKeyframeMapLeafSize: 0.5 # downsample local map point cloud

Loop closure

loopClosureEnableFlag: true
loopClosureFrequency: 1.0 # Hz, regulate loop closure constraint add frequency
surroundingKeyframeSize: 50 # submap size (when loop closure enabled)
historyKeyframeSearchRadius: 15.0 # meters, key frame that is within n meters from current pose will be considerd for loop closure
historyKeyframeSearchTimeDiff: 30.0 # seconds, key frame that is n seconds older will be considered for loop closure
historyKeyframeSearchNum: 25 # number of hostory key frames will be fused into a submap for loop closure
loopClosureICPSurfLeafSize: 0.5 # downsample icp point cloud
historyKeyframeFitnessScore: 0.3 # icp threshold, the smaller the better alignment

Visualization

globalMapVisualizationSearchRadius: 1000.0 # meters, global map visualization radius
globalMapVisualizationPoseDensity: 10.0 # meters, global map visualization keyframe density
globalMapVisualizationLeafSize: 1.0 # meters, global map visualization cloud density

Navsat (convert GPS coordinates to Cartesian)

navsat:
frequency: 50
wait_for_datum: false
delay: 0.0
magnetic_declination_radians: 0
yaw_offset: 0
zero_altitude: true
broadcast_utm_transform: false
broadcast_utm_transform_as_parent_frame: false
publish_filtered_gps: false

EKF for Navsat

ekf_gps:
publish_tf: false
map_frame: map
odom_frame: odom
base_link_frame: base_link
world_frame: odom

frequency: 50
two_d_mode: false
sensor_timeout: 0.01

-------------------------------------

External IMU:

-------------------------------------

imu0: imu_correct

make sure the input is aligned with ROS REP105. "imu_correct" is manually transformed by myself. EKF can also transform the data using tf between your imu and base_link

imu0_config: [false, false, false,
true, true, true,
false, false, false,
false, false, true,
true, true, true]
imu0_differential: false
imu0_queue_size: 50
imu0_remove_gravitational_acceleration: true

-------------------------------------

Odometry (From Navsat):

-------------------------------------

odom0: odometry/gps
odom0_config: [true, true, true,
false, false, false,
false, false, false,
false, false, false,
false, false, false]
odom0_differential: false
odom0_queue_size: 10

x y z r p y x_dot y_dot z_dot r_dot p_dot y_dot x_ddot y_ddot z_ddot

process_noise_covariance: [ 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 10.0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0.03, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0.1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0.25, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0.04, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.01, 0,

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions