ethz-asl / ethzasl_msf

MSF - Modular framework for multi sensor fusion based on an Extended Kalman Filter (EKF)
Other
1k stars 437 forks source link

Using multiple (2) pose sources at once #80

Open mhkabir opened 10 years ago

mhkabir commented 10 years ago

What would be the procedure if we were to use two pose sources? I have 2 visual SLAM sources onboard (forward looking and downward looking for mapping and odometry). I want to use the two sources simultaneously for robustness and redundancy.

Thanks, Kabir

simonlynen commented 10 years ago

@mhkabir The pose measurement is a template for the states it acts on. https://github.com/ethz-asl/ethzasl_msf/blob/master/msf_updates/include/msf_updates/pose_sensor_handler/pose_measurement.h#L45

So you can add two types of measurements which are originating from two different cameras.

simonlynen commented 10 years ago

@mhkabir You add the same states twice to your state definition which you need for a single pose sensor. The measurements are then instantiated according to the states they work on (calibration, scale etc).

mhkabir commented 10 years ago

Thank you.

Can you briefly tell me the code changes necessary for this? I am guessing they will be quite small. No changes to pose_sensor_handler will be required I suppose?

mhkabir commented 9 years ago

@simonlynen It'd be great if one of you guys could do a small wiki page or something outlining how to do this with the current system. I am willing to update the documentation for the other parts of the system if I can ge ssomething working here (and understand myself.)

fdevillalobos commented 9 years ago

I'm also trying to do something similar but stuck here. Willing to help if I can figure it out. I have a range measuring the distance to an object, and in a perpendicular plane I have a camera seeing the same object. They are both doing an estimate of the depth the object is at from the start plane (Where the range sensor is). Where do I have to feed both of these readings to get an accurate estimate? And where do I get that estimate published??

Thanks a lot! Willing to contribute to the project. Francisco.

m42neb commented 9 years ago

Hi everyone, I am a post-doc from Sapienza, University of Rome, and I am starting to use this framework to set up state estimation with our UAV. Let me first thank the developers for providing such a powerful, useful implementation.

Coming to the current topic, I am trying to implement a sensor manager to manage two different pose sensor (e.g. AR-marker + VSLAM). To do so I have modified the poseSensorManager to create a doublePoseSensorManager, in particular I did the following:

I think my implementation should be correct, since I see a correct initialization of the filter, I can actually modify the parameters for the two sensors separately, the number of states is correct, etc. I will be grateful if anyone can confirm the correctness of my steps.

To test my code I run the viconpos_sensor example generating a logfile with 'rostopic echo' with the whole state. Then I run my code, by remapping the vicon topic separately on each sensor, i.e. using only the first or the second pose sensor. In this way I should see the same output, since I have two equal sensors mapping the same measurements in the same way. The I compared the result (UAV position) of the example with the two results of my code. I get exactly the same trajectory of the example when running with the first pose sensor, while I get a slightly (but significantly) different trajectory when using the second pose sensor. Here come my questions:

Sorry for the long post, but I think is better to include as much information as possible.

Thanks, have a nice day. Lorenzo

m42neb commented 9 years ago

Hi everyone, I solved the issue, which was due to a bad (indeed missing) initialization of the second sensor measurement noise (which is done in the dynamic reconfigure callback). Now I have the two sensors giving exactly the same results.

Lorenzo

simonlynen commented 9 years ago

@m42neb sorry for the delay and thanks for posting your solution here.

mhkabir commented 9 years ago

Hi, really like your results :)

Do you have it somewhere on a branch? It'd be very welcome :) On 30 Apr 2015 19:56, "Simon Lynen" notifications@github.com wrote:

@m42neb https://github.com/m42neb sorry for the delay and thanks for posting your solution here.

— Reply to this email directly or view it on GitHub https://github.com/ethz-asl/ethzasl_msf/issues/80#issuecomment-97817477.

MarcGyongyosi commented 8 years ago

never mind my questions - I was able to figure it out.

Thanks!

snakehaihai commented 6 years ago

Hi everyone, I solved the issue, which was due to a bad (indeed missing) initialization of the second sensor measurement noise (which is done in the dynamic reconfigure callback). Now I have the two sensors giving exactly the same results.

Lorenzo

Hi Lorenzo I`m fusing GPS vicon and UWB. all of them are 6DOF pose. Can I ask u how did u manage to do it without subscribing to the 2nd sensor in pose_sensorhandler.hpp?

Exactly how many file needs to be changeds? So far i added the new states for 2nd sensor in /home/snake/catkin_ws/src/ethzasl_msf/msf_updates/src/pose_msf/msf_statedef.hpp and added handler in /home/snake/catkin_ws/src/ethzasl_msf/msf_updates/src/pose_msf/pose_sensormanager.h

however, I really have no idea how u put the secondary sensor in. Can you help with me?

Regards Shenghai Yuan

tiralonghipol commented 5 years ago

Hi, what is the current status of the two poses handling? thanks

Cristian-wp commented 2 years ago

Hi, I am trying to perform the fusion between two pose sources: one from lidar slam and one from visual inertial slam. I have read the previous comment but I can not manage to make my setup work. There is a tutorial that explain the right method to perform the fusion? A dedicated branch or something like that? @simonlynen can you please explane the steps? @mhkabir have you find a working solution?

snakehaihai commented 2 years ago

you need to change the source code to do that. one easier option is to use robot_localization node that only need to specify in the config. that's a lot more easier.

Cristian-wp commented 2 years ago

Hi @snakehaihai ! Thanks a lot for your kind reply. I have already use robot_localization for my setup with really good results, but I wish to do the same with this package. Can you please give me some help? There is a ready implementation of the needed code changes? At the moment I am trying to follow @m42neb instruction (with the hope to better understand the code) but I am stuck