Kalman-Filter, Update position from source other than LOCO-positioning
Posted: Fri Nov 04, 2016 6:12 pm
Hello everyone, Hi Arnaud!
As already started in comment to "Loco positioning system" Blog post, I'm doing (or want to do) position control with an "arbitrary" source of position estimation.
In my case I'm using a prototype of an optical flow odometer (4 stereo sensors), which is mounted on the crazyflie using the deck-interface. You can think of it as a 3D optical "mouse".
I have already written a custom deck driver to obtain sensor data via I2C, and to perform normalization (mapping of axes, scaling sensitivity).
Arnaud, thank you for the hint. I had a good look at the source, and I'm now using stateEstimatorEnqueuePosition() which is part of estimator_kalman.c to perform position updates from my deck-driver to kalman-filter.
I already had a look using log-system/plotter so I could see the behavior of the kalman-filter to my "injected" position updates. It is looking good so far - very clean/smooth. Next step will be getting ROS up and running, and then try to set a "known point" to the position controller and see what happens
~Florian
EDIT:
Arnaud, is there a function I can call to update the position-set-point of the position-controller (on crazyflie), and is there a function to set speed, so to say speed-set point if I want to alter the position-set-point by means of moving away from the current one?
I had a look in commander.c and position_controller_pid.c but couldn't find anything appropriate, am I mssing something?
As already started in comment to "Loco positioning system" Blog post, I'm doing (or want to do) position control with an "arbitrary" source of position estimation.
In my case I'm using a prototype of an optical flow odometer (4 stereo sensors), which is mounted on the crazyflie using the deck-interface. You can think of it as a 3D optical "mouse".
I have already written a custom deck driver to obtain sensor data via I2C, and to perform normalization (mapping of axes, scaling sensitivity).
Arnaud, thank you for the hint. I had a good look at the source, and I'm now using stateEstimatorEnqueuePosition() which is part of estimator_kalman.c to perform position updates from my deck-driver to kalman-filter.
I already had a look using log-system/plotter so I could see the behavior of the kalman-filter to my "injected" position updates. It is looking good so far - very clean/smooth. Next step will be getting ROS up and running, and then try to set a "known point" to the position controller and see what happens

~Florian
EDIT:
Arnaud, is there a function I can call to update the position-set-point of the position-controller (on crazyflie), and is there a function to set speed, so to say speed-set point if I want to alter the position-set-point by means of moving away from the current one?
I had a look in commander.c and position_controller_pid.c but couldn't find anything appropriate, am I mssing something?