Ask Your Question

Mavros publishes Odometry without GPS? [closed]

asked 2016-02-17 03:43:53 -0500

quentin gravatar image

Hi everybody,

I am trying to merge pixhawk and px4flow with my ROS localization system (AMCL). In order to do so, I think I am going to use robot_localization.

The low level control will be dealt with by the px4 itself without any feedback from my ROS nodes

The ROS-based localization should be able to read the great odometry information given by px4 and native inav (merging IMU, barometer and px4flow) in order to enhance my AMCL algorithm. But I am only able to get Pose messages via mavros (in mavros/local_position/pose topic). robot_localization sensor fuser does not support posestamped msgs...There should be Odometry in mavros/global_position/local topic but nothing is published. Can I get odometry msgs out of mavros without using a GPS? If yes, how?

For your info, I am running ROS indigo, my board is under px4 and I use a USB connection for the moment. I have hardware troubles with my serial cable!

Thanks in advance for your help

edit retag flag offensive reopen merge delete

Closed for the following reason duplicate question by quentin
close date 2016-03-08 20:30:32.515016

2 Answers

Sort by » oldest newest most voted

answered 2016-03-07 23:14:01 -0500

quentin gravatar image

updated 2016-03-07 23:14:50 -0500

See here for more details about the solution I am trying to use... Below is in brief:

In order to get relevant covariance information, I am merging the IMU, published by mavros, with the OpticalFlowRad msgs, transformed in a TwistwithcovarianceStamped by optflow_odometry. The covariance is derived from the image quality of the px4flow. The operation is handled by robot_localization.

This gives me a proper sensor based odometry. Then I use another EKF to fuse this odometry with the position published by my localization nodes.

Do you think this workflow is valid?

edit flag offensive delete link more


This feels like a new question. Would you please post this in a new one, or at least edit the original and put this information there?

Tom Moore gravatar image Tom Moore  ( 2016-03-08 06:48:56 -0500 )edit

Thanks Tom! Here is the new post.

I avoided creating my own covariance in order not to mess around. If smbd wants to try, look at this

quentin gravatar image quentin  ( 2016-03-08 20:29:46 -0500 )edit

answered 2016-03-01 12:41:15 -0500

Tom Moore gravatar image

updated 2016-03-01 12:41:34 -0500

The EKF and UKF in robot_localization do support pose messages; they need to be of type sensor_msgs/PoseWithCovarianceStamped. A sensor_msgs/PoseStamped message does not contain covariance information, which is required by Kalman filters. Without it, the filter doesn't know how much to trust its own prediction vs. the measurements provided.

edit flag offensive delete link more


Thank you Tom for your answer.

My problem is that mavros is not givng me this error information... Or at least, I don't know how to get it into the right format so that robot_localization can use it.... That why I was also considering the use of the Odometry msgs. Any advice?

quentin gravatar image quentin  ( 2016-03-01 20:24:28 -0500 )edit

An odometry message just contains a PoseWithCovariance and a TwistWithCovariance, so you'll have to find a way to provide that error information regardless.

Tom Moore gravatar image Tom Moore  ( 2016-03-03 07:50:48 -0500 )edit

Question Tools



Asked: 2016-02-17 03:43:53 -0500

Seen: 1,577 times

Last updated: Mar 07 '16