/**
*
*/
package jp.ac.fit.asura.nao.localization.self;
import static jp.ac.fit.asura.nao.misc.MathUtils.normalizeAnglePI;
import jp.ac.fit.asura.nao.RobotContext;
import jp.ac.fit.asura.nao.VisualFrameContext;
import jp.ac.fit.asura.nao.misc.MathUtils;
/**
* オドメトリ(推定された移動量)によってのみ自己位置を決定するLocalization. 実験用.
*
* @author sey
*
*/
public class OdometryLocalization extends SelfLocalization {
private float h;
private float x;
private float y;
@Override
public int getConfidence() {
return 10;
}
@Override
public float getHeading() {
return h;
}
@Override
public int getX() {
return (int) x;
}
@Override
public int getY() {
return (int) y;
}
@Override
public void reset() {
x = y = h = 0;
}
@Override
public void step(VisualFrameContext visualFrame) {
}
@Override
public void init(RobotContext rctx) {
}
@Override
public void start() {
}
@Override
public void stop() {
}
@Override
public void updateOdometry(float forward, float left, float turnCCW) {
x += MathUtils.sin(h) * forward + MathUtils.cos(h) * left;
y += MathUtils.cos(h) * forward - MathUtils.sin(h) * left;
h = normalizeAnglePI(h + turnCCW);
}
}