Мне нужно спланировать данные gps, imu и odometry, поэтому я начал тестировать пакет robot_localization.ROS - Получение значений nan с помощью navsat_transform_node из пакета robot_localization
я публикую действительный фиктивный MESSAgES sensor_msgs/ИДЕТ и nav_msgs/одометрию для входов ekf_localization_node, то я кормлю вход navsat_transform_node с сообщением одометрии с выхода ekf_localization_node и макетом sensor_msgs/сообщение NavSatFix , Когда я запускаю navsat_transform_node я получаю следующие значения нан:
process[navsat_transform_node-1]: started with pid [29575]
[ WARN] [1431390696.211039510]: MSG to TF: Quaternion Not Properly Normalized
[ INFO] [1431390696.295605608]: Corrected for magnetic declination of 0.183000, user-specified offset of 1.000000, and fixed offset of 1.570796. Transform heading factor is now nan
[ INFO] [1431390696.295816136]: Latest world frame pose is:
Position: (0.000000, 0.000000, 0.000000)
Orientation: (0.000000, -0.000000, 0.000000)
[ INFO] [1431390696.295972831]: World frame->utm transform is
Position: (nan, nan, nan)
Orientation: (nan, -nan, nan)
Некоторые примечания:
- Здесь значения от «Latest мира кадра поза:» все нули, но они не всегда одинаковы.
- Я изменил значения магнитного склонения и смещения, но получаю те же результаты.
- Также изменили кадры координат из imu, odometry и gps-сообщений в файлах запуска, но получили ту же ошибку.
Выходная одометрия сообщения от/одометрии/GPS темы есть:
pose:
pose:
position:
x: nan
y: nan
z: nan
orientation:
x: 0.0
y: 0.0
z: 0.0
w: 1.0
covariance: [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]
Любой помощь будет оценена по достоинству!
Если вы работаете с C++ под Linux, вы можете добавить 'feenableexcept (FE_INVALID | FE_OVERFLOW);' на начало вашего кода. Это заставит программу генерировать исключение в строке, где происходит первое NaN, поэтому источник NaN можно легко отследить с помощью отладчика (см. Также [здесь] (http://stackoverflow.com/a/2949452/2095383)) – luator
Спасибо за ваш ответ. Я нашел ошибку! Некоторые недостатки в IMU отсутствовали: \t \t imu_msg.orientation.x = 1.0; \t \t imu_msg.orientation.y = 0.0; \t \t imu_msg.orientation.z = 0.0; \t \t imu_msg.orientation.w = 0.0; Теперь все работает нормально. С уважением! –