53

You do connect all these sensors directly to a microcontroller. The Kalman filter is not an electronic filter like a LRC filter that goes between the sensors and the microcontroller. The Kalman filter is a mathematical filter implemented as software routine inside the microcontroller. The sensors you have listed give the microcontroller 14 or 15 raw numbers ...


32

Two things. If you plan to do mapping, you need a full-fledged Simultaneous Localization and Mapping (SLAM) Algorithm. See: Simultaneous Localisation and Mapping (SLAM): Part I The Essential Algorithms. In SLAM, estimating the robot state is only half the problem. How to do that is a bigger question than can be answered here. Regarding localization (...


28

The short, snide answer is "try it without one." The better answer is an example: When your accellerometers say you are 10 degrees from vertical, but your gyro says you haven't rotated away from vertical, and your magnetometers are reporting a 30 deg offset from north but your gyro says 32 degree ... what is the current heading and tilt? You'll probably ...


23

Sensor data is noisy. If you do not filter it, then your vehicle would at least act erratically if it were even stable enough to fly. Filtering, via a Kalman filter or otherwise, can reduce the noise when done correctly, improving stability in turn. A Kalman filter is a particularly powerful filter. It takes a model of the system and noise models for both ...


13

I'm going to give you a high-level overview without going into much math. The purpose here is to give you a somewhat intuitive understanding of what is going on, and hopefully this will help the more mathematical resources make more sense. I'm mostly going to focus on the unscented transform, and how it relates to the UKF. Random variables Alright, the ...


10

You can get experimental data, and perform some statistical analysis to determine the process noise (noise between time steps), and sensor noise (compared to a ground truth). To get the ground truth for sensor noise, you either need a more accurate sensor, or else experimentally test while keeping the state of interest at a known (usually fixed) value. If ...


9

You have asked two questions. As I interpret them they are: Is it necessary to linearize the odometry motion model for use with an extended Kalman filter (EKF)? Is it better to use the odometry motion model instead of the velocity motion model. Regarding question 1, the short answer is "yes." The guarantees of the Kalman filter (KF) only apply to linear ...


8

A Kalman Filter is an algorithm that is commonly used in UAVs to fuse multiple sensor measurements together to provide an "optimal" estimate of the position and/or orientation of the UAV. For example, a Kalman Filter can fuse accelerometer, gyro and magnetometer measurements with a velocity estimate to estimate the UAV's yaw, pitch and roll. For more ...


8

You could use particle filters as well. For the basic intro to Particle Filters, you could have a look at Professor Thrun's videos in Programming a Robotic Car. http://www.youtube.com/watch?v=H0G1yslM5rc http://www.youtube.com/watch?v=QgOUu2sUDzg Particle filters are more robust and have a far lesser probability of the loop closure error, which commonly ...


8

When using the EKF (or standard KF) on a real robot, you will want to tell the filter how much noise there is in each measurement, and in the process. The purpose of this is so that the Kalman filter can decide how much it "trusts" each source of data, and therefore, the weighting to give each measurement in its final estimation. For real robot data, the ...


8

It is both acceptable and standard to use camera observations with a Kalman filter if you are talking about landmark positions in pixel or real-world space. Pixel space observations are usually randomly Caushy distributed but it turns out the Gaussian Kalman filter works pretty well in this case. The method you're describing using the Mahalonobis distance ...


7

They are exactly the same. Information matricies (aka precision matricies) are the inverse of covariance matricies. Follow this. The covariance update $$P_{+} = (I-KH)P$$ can be expanded by the definition of $K$ to be $$ P_{+} = P - KHP $$ $$ P_{+} = P - PH^T (HPH^T+R)^{-1} HP $$ Now apply the matrix inversion lemma, and we have: $$ P_{+} = P - PH^T (HPH^...


7

You can greatly simplify the problem in most common cases: A lot of "commercial grade" IMus (e.g. Xsens) have very noisy accelerometers. Don't even bother fusing them to get speed, the odometry is already order of magnitudes better. The only usable data the IMU is going to provide is the pitch and roll, and to some extent the heading (see next point) ...


7

Covariance is defined as $\begin{align} C &= \mathbb{E}(XX^T) - \mathbb{E}(X)\mathbb{E}(X^T) \end{align}$ where, in your case, $X \in \mathbb{R}^6$ is your state vector and $C$ is the covariance matrix you already have. For the transformed state $X'=R X$, with $R \in \mathbb{R}^{6\times 6}$ in your case, this becomes $\begin{align} C' &= \mathbb{...


6

I would model this as a one-state system (x), with the gyro as the control input. The gyro noise becomes state input noise, the compass noise becomes measurement noise. So your system model becomes $$\hat{\dot \theta} = \omega_{gyro} + w$$ $$\hat y = \hat x$$ where $\hat y$ is the filter's estimate of direction, which you compare to the compass direction ...


6

A few notes first, First, as you mentioned, you can't just pull out a submatrix and do an update on it. You can do a propogation step on a submatrix, however. This is because of the cross-covariance terms (which "spread" information across different parts of the state). This is why having a more accurate estimate of your heading will lead to more accurate ...


6

First, be careful when using the term "observable" with respect to Kalman filters. It has a precise mathematical meaning that basically determines whether or not the filter is even possible. With respect to your question, you need to select a subset of the observation and measurement noise covariance matrices depending on which measurements are available. ...


6

Here are a few possible points of consideration. Certainly the UKF has many counterpoints where it has an advantage too. The most obvious advantage is computation power. Don't forget that traditionally, these filters are implemented on embedded systems with very limited computational resources. Also, while I don't have much experience with UKFs myself, one ...


6

Hi and welcome to the wide, ambiguous, sometimes confusing world of research. But seriously, looking at 20 years of papers will sometimes produce these confusions. Let's look at what's going on. In the first reference, what they are saying is: An INS/Gyro is nice, but has an error in it. That error changes (drifts) over time. Therefore, the error in the ...


6

Assuming a constant update of 5Hz, your sample time is (1/5) = 0.2s. Get one position of the target, p1. Get a second position of the target, p2. Target speed is the difference in position divided by difference in time: $$ v = (p_2 - p_1)/dT \\ v = (p_2 - p_1)/0.2 $$ Now predict where they will be in the future, where future is $x$ seconds from now: $$...


6

There are actually several issues in this question which I will answer separately. 1) Error is: $$\sqrt{(x_m-x_{gt})^2}$$ No, error is just $$(x_m - x_{gt})$$ This may be part of your problem with zero means because any error distribution will have a positive mean if you force all errors to be positive. 2) My error distribution does not have zero mean. ...


6

I realize this question already has an accepted answer, but I'd like to provide some additional input. The question of sensor fusion is a good one, but, depending on the application, you don't typically want to "convert" (i.e., integrate twice) the IMU to obtain xyz position. Frankly, in my experience, the best way to approach fusing GPS and IMU data for a ...


5

I just see your post now and it is maybe too late to really help you... but in case you are still interested in this: I think that I identified your problem. You write the innovation covariance matrix in the following way E = jacobian measure * P * jacobian measure It might be alright in theory but what happens is that if your algorithm is effective and ...


5

The Jacobian is of size $2\times 4$ because you have four state elements and two measurement equations. The Jacobian of the measurement model is the matrix where each $i,j$ element corresponds to the partial derivative of the $i$th measurement equation with respect to the $j$th state element.


5

Here is one toy case where off-diagonal elements are non-zero. Consider a state vector that includes the position of both the left and right wheels instead of just a single position for the robot. Now if the left wheel has a position of 100m then you know the right wheel will also have a position of roughly 100m (depending on the axle length). As the left ...


5

Assuming your vehicle is roughly horizontal to the ground, you won't be able get a good estimate of yaw from the accelerometer. Consider the nominal case: when your accelerometer is pointing straight down (Ax=0, Ay=0, Az=g) the reading will never change as you change yaw angle. Normally, to get yaw angle vehicles use a magnometer (measure earth's magnetic ...


5

Yes. The px4 software for the pixhawk autopilot has an extended kalman filter that uses an accelerometer, a gyroscope, gps, and mag. Here's a paper describing the a smaller ekf which only estimates attitude[1] and here is the code for the full ekf[2]. [1]https://pixhawk.org/firmware/apps/attitude_estimator_ekf [2]https://github.com/priseborough/InertialNav ...


5

It sounds like you're using the camera frames to get a PnP solution, or something along those lines. A linear Kalman filter will usually work OK for most purposes if you're using roll/pitch/yaw and pose measurements coming from the camera algorithm. This is always the first port of call because it's much easier than EKF/UKF/etc. If this does not give ...


5

If the drone is not falling (holding height in the sky), and it's not accelerating in any particular direction, then the accelerometer should be reading: $$ a = \left[ \begin{array}{} g_x \\ g_y \\ g_z \end{array}\right] $$ where $g_N$ is the component of gravity along each axis. If the drone is upright and stationary, and the accelerometer is oriented ...


5

A good choice for sensor fusion with the MPU6050 is a second order complementary filter, which I used for the orientation estimation in a project. The complementary filter is computational cheap and so a good choice for a microcontroller. A paper about the implementation you can find here: http://www.academia.edu/6261055/...


Only top voted, non community-wiki answers of a minimum length are eligible