/* * 作成日: 2009/04/22 */ package jp.ac.fit.asura.nao.webots; import javax.vecmath.Matrix3f; 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 WebotsSensorContext extends SensorContext { float[] jointValues; float[] jointForces; float[] accels; float[] gyros; float[] forces; float[] gps; long time; public WebotsSensorContext() { jointValues = new float[Joint.values().length]; jointForces = new float[Joint.values().length]; accels = new float[3]; gyros = new float[2]; forces = new float[PressureSensor.values().length]; gps = new float[3]; } @Override public float[] getJointAngles() { return jointValues; } /** * 指定された関節の角度のセンサー値をラジアンで返します. */ @Override public float getJoint(Joint joint) { return jointValues[joint.ordinal()]; } @Override public float getJointDegree(Joint joint) { return MathUtils.toDegrees(getJoint(joint)); } /** * x軸の加速度を返します. * * @return x軸の加速度(m/s^2) */ @Override public float getAccelX() { return accels[0]; } @Override public float getAccelY() { return accels[1]; } @Override public float getAccelZ() { return accels[2]; } @Override public float getGyroX() { return gyros[0]; } @Override public float getGyroZ() { return gyros[1]; } @Override public float getForce(PressureSensor ps) { return forces[ps.ordinal()]; } @Override public float getForce(Joint joint) { return jointForces[joint.ordinal()]; } /** * Gpsセンサ値を取得(調整用、本戦では使わないように) * * @return 現在位置のx座標 */ @Override public float getGpsX() { return gps[0]; } /** * Gpsセンサ値を取得(調整用、本戦では使わないように) * * @return 現在位置のy座標 */ @Override public float getGpsY() { return gps[1]; } /** * Gpsセンサ値を取得(調整用、本戦では使わないように) * * @return 現在位置のz座標 */ @Override public float getGpsZ() { return gps[2]; } @Override public void getGpsRotation(Matrix3f mat) { // disabled in webots6 mat.setIdentity(); } @Override public boolean getSwitch(Switch sw) { return false; } @Override public long getTime() { return time; } }