Finally, in a kalman.py file, lamdmarks are fully supported. But there is certain specifics in the way it is implemented. As you know, Kalman filter relies on certain structures, like for example, array of sigmas, each sigma for its own sensor input. However, in case of landmarks, most of the time most of landmarks are not visible for a robot!
There are two possible solutions, good and bad. A bad solution is to set sigmas to some high values for landmarks that are not currently visible. This way Kalman filter will ignore them.
To see the problem, imagine 30 landmarks, all are not visible, and 3 GPS inputs (x, y, z). The filter will mostly calculate noise, which is slow and adds instability.
A good solution is to only compose sigmas (and some other data structures Kalman filter uses) for sensors that are currently available. So I have changed the code in kalman.py to do just that. Code is heavily commented and self-explainatory.