ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Integration of px4, px4flow with AMCL localization for quadrotor

asked 2016-03-08 20:14:30 -0600

quentin gravatar image

Hi everybody,

Following previous questions (1, 2), I would like to ask you if this architecture looks smart and efficient. My goal is to perform autonomous indoor navigation for quadrotor based on AMCL localization. I have been facing some troubles to set up my tf tree and my different odometry and pose informations. The proposed solution is as follow:

The TF tree:

base_link -> base_stabilized: I use the IMU information returned by mavros in the hector_imu_attitude_to_tf node

base_stabilized -> base_footprint: I simply subscribe to the altitude topic of mavros and publish the z translation. I still have some reliability problems as the barometer is not really accurate. I might try to use the sonar height combined with the IMU information. To be continued

base_footprint -> odom: I use robot_localization. It is working in 2d mode. It combines the IMU and the optical flow. To use the mavros_msgs/OpticalFlowRad in robot_localization, I use make use of optflow_odometry. At the end of the day, robot_localization is also publishing my 2D odom.

odom -> map: I use another EKF, again robot_localization, to fuse my 2D odom with my SLAM position.

For the moment, everything looks good, except the base_stabilized -> base_footprint. This problem does not affect the system. Do you think my solution is a good one, compared to the use of a single mavros usage? Am I creating to much computing and processing requirements or maybe inducing errors?

edit retag flag offensive close merge delete


Looks reasonable, though I'm curious how well the EKF in two_d_mode with amcl will work when the LIDAR (?) scans are going to vary with roll and pitch.

Tom Moore gravatar image Tom Moore  ( 2016-04-29 07:12:15 -0600 )edit

I believe that hector_imu_attitute_to_tf is supposed to correct for the pitch and roll.

Icehawk101 gravatar image Icehawk101  ( 2016-04-29 07:40:10 -0600 )edit

Yes exactly Icehawk101.

For the moment the system looks quite stable. I am also trying to develop another tree, making use of amcl instead of the slam localization. Documented comparison are to be done!

quentin gravatar image quentin  ( 2016-05-02 21:01:01 -0600 )edit

Are you using AMCL for 2D localization and then just adding the height to the transform?

Icehawk101 gravatar image Icehawk101  ( 2016-05-03 07:19:41 -0600 )edit

Yes exactly Icehawk101

quentin gravatar image quentin  ( 2016-05-09 01:33:25 -0600 )edit

Have you tried this with AMCL yet?

Icehawk101 gravatar image Icehawk101  ( 2016-05-10 14:46:33 -0600 )edit

1 Answer

Sort by » oldest newest most voted

answered 2016-05-10 21:19:49 -0600

quentin gravatar image

Yes Icehawk 101!

I have tried. The results were not satisfying. It behaved as if AMCL and my odometry source (px4flow) were messing each other around... There was a temporary reaction where AMCL was completly lost and then a steady state where AMCL alone could localize itself (when not moving anymore).

I am trying to improve my pure px4flow-based localization but it currently not satisfying. I don't manage to get a really good flow-based position, though I should be. If you have already touched that we could help each other :)

edit flag offensive delete link more


My drone is not set up yet, I am currently working with a proof of concept prototype. When I tried using AMCL though it didn't work. If you read section 3.1.6 Transforms on though I don't think it will work.

Icehawk101 gravatar image Icehawk101  ( 2016-05-11 07:44:34 -0600 )edit

Have you considered trying the humanoid_localization package as well? . That is going to by my next test so I will let you know how it goes.

Icehawk101 gravatar image Icehawk101  ( 2016-05-11 08:49:48 -0600 )edit

Yes I am considering it. But currently, AMCL works well in the simulation (eventhough it is still 2D). But I would like to try my sensor in the real world and therefore solve my px4flow issue.

quentin gravatar image quentin  ( 2016-05-11 22:05:51 -0600 )edit

How are things working for you?

Icehawk101 gravatar image Icehawk101  ( 2016-05-24 07:53:13 -0600 )edit

I add some issues with my px4flow hardware. It seems that it is now solved, I still need to experiment further.

humanoid_localization is roughly working in my simulation, but also still need to be improved.

quentin gravatar image quentin  ( 2016-05-24 21:14:24 -0600 )edit

What about you? What exactly is your goal? Mine is to perform autonomous navigation in a partially known environment. I do it in a simulated environment and I also own the pixhawk and px4flow in order to try the algorithms in real life!

quentin gravatar image quentin  ( 2016-05-24 21:16:58 -0600 )edit

3D mapping and localization in a gps denied environment. I got humanoid_localization working alright, but it seems laggy to me. I don't have an odometry source though, I am using the pub_odom parameter from hector_mapping so there is a lot of overhead.

Icehawk101 gravatar image Icehawk101  ( 2016-05-25 11:59:11 -0600 )edit

Oh so you managed to use hector_mapping as an odometry source for your AMCL (2D or 3D) localization nodes?

In your problems, do you know the map before hand or do you navigate in a unknown environment?

quentin gravatar image quentin  ( 2016-05-25 21:03:41 -0600 )edit

Question Tools



Asked: 2016-03-08 20:14:30 -0600

Seen: 1,547 times

Last updated: May 10 '16