/* * 作成日: 2009/04/21 */ package jp.ac.fit.asura.nao.naoji; import jp.ac.fit.asura.nao.Joint; import jp.ac.fit.asura.nao.PressureSensor; import jp.ac.fit.asura.nao.SensorContext; import jp.ac.fit.asura.nao.Switch; import jp.ac.fit.asura.nao.misc.MathUtils; /** * @author sey * * @version $Id: $ * */ public class NaojiSensorContext extends SensorContext { float[] angles; float[] accels; float[] gyros; float[] inertialAngles; float[] forces; float[] cofPositions; float[] witches; long time; protected NaojiSensorContext() { Joint[] joints = Joint.values(); angles = new float[joints.length]; accels = new float[3]; gyros = new float[2]; inertialAngles = new float[2]; forces = new float[8]; cofPositions = new float[4]; witches = new float[5]; } // TODO マッピングがおかしい. public float getAccelX() { return accels[1]; } public float getAccelY() { return -accels[2]; } public float getAccelZ() { return -accels[0]; } public float getForce(Joint joint) { return 0; } public float getForce(PressureSensor ts) { return forces[ts.ordinal()]; } public float getGyroX() { return gyros[1]; } public float getGyroZ() { return gyros[0]; } @Override public float getInertialX() { return inertialAngles[1]; } @Override public float getInertialZ() { return inertialAngles[0]; } public float[] getJointAngles() { return angles; } public float getJoint(Joint joint) { return angles[joint.ordinal()]; } public float getJointDegree(Joint joint) { return MathUtils.toDegrees(getJoint(joint)); } @Override public boolean getSwitch(Switch sw) { // according to the RedBook DCM, value = 0.0 if button is pressed. return witches[sw.ordinal()] == 1.0f; } @Override public long getTime() { return time; } }