Beispiel #1
0
        /// <summary>
        /// グリップの半径[m]を取得する.
        /// </summary>
        /// <returns>
        /// グリップの半径[m]
        /// </returns>
        public float GetGripRadius()
        {
            float gripRadius;

            Spidar.GetGripRadius(this.SerialNumber, out gripRadius);
            return(gripRadius);
        }
Beispiel #2
0
    /// <summary>
    /// SPIDARの初期化を明示的に実行する.
    /// 初期化に成功した場合はtrueを返す.
    /// </summary>
    /// <returns>
    /// true: 成功
    /// false: 失敗
    /// </returns>
    public bool Initialize()
    {
        if (spidar != null)
        {
            spidar.Stop();
            spidar.Dispose();
            spidar = null;
        }

        spidar = Spidar.Create(SerialNumber, (int)DeviceType);

        if (spidar != null)
        {
            spidar.Start();

            for (int i = 0; i < 8; ++i)
            {
                gpioDownState[i] = true;
                gpioUpState[i]   = true;
            }

            updateSkipCount      = 100;
            meshRenderer.enabled = true;
            return(true);
        }
        else
        {
            meshRenderer.enabled = false;
            return(false);
        }
    }
Beispiel #3
0
 /// <summary>
 /// 提示力を設定する.
 /// </summary>
 /// <param name="force">
 /// 出力する併進力[N](目標値)
 /// </param>
 /// <param name="torque">
 /// 出力する回転力[Nm](目標値)
 /// </param>
 /// <param name="forceK">
 /// バネ定数 K
 /// </param>
 /// <param name="forceB">
 /// ダンパ係数 B
 /// </param>
 /// <param name="torqueK">
 /// バネ定数 K
 /// </param>
 /// <param name="torqueB">
 /// ダンパ係数 B
 /// </param>
 /// <param name="lerp">
 /// 提示力の線形補間のON/OFF
 /// </param>
 /// <param name="cascade">
 /// カスケード制御のON/OFF
 /// </param>
 public void SetForce(Vector3 force, float forceK, float forceB,
                      Vector3 torque, float torqueK, float torqueB, bool lerp, bool cascade)
 {
     Spidar.SetForce(this.SerialNumber, ref force, forceK, forceB,
                     ref torque, torqueK, torqueB,
                     lerp, cascade);
 }
Beispiel #4
0
        /// <summary>
        /// デバイスの更新周期[s]を取得する(実測値).
        /// </summary>
        /// <returns>
        /// デバイスの更新周期[s]
        /// </returns>
        public float GetDeltaTime()
        {
            float deltaTime;

            Spidar.GetDeltaTime(this.SerialNumber, out deltaTime);
            return(deltaTime);
        }
Beispiel #5
0
        /// <summary>
        /// GPIOの値を取得する.
        /// </summary>
        /// <returns>
        /// GPIOの値
        /// </returns>
        public uint GetGpioValue()
        {
            uint value;

            if (!Spidar.GetGpioValue(this.SerialNumber, out value))
            {
                return(0);
            }
            return(value);
        }
Beispiel #6
0
        /// <summary>
        /// エンコーダ値を取得する.
        /// </summary>
        /// <param name="count">
        /// エンコーダ値
        /// </param>
        public void GetEncoderCount(ref int[] count)
        {
            Spidar.GetEncoderCount(this.SerialNumber, this.count);

            int max = count.Length > 8 ? 8 : count.Length;

            for (int i = 0; i < max; ++i)
            {
                count[i] = this.count[i];
            }
        }
Beispiel #7
0
 /// <summary>
 /// デバイスを初期化し,Spidarクラスのインスタンスを作成する.
 /// デバイスの初期化に失敗した場合はnullを返す.
 /// </summary>
 /// <param name="fileName">
 /// SPIDAR設定ファイルの名前
 /// </param>
 /// <returns>
 /// Spidarクラスのインスタンス
 /// </returns>
 public static Spidar Create(uint serialNumber, int type)
 {
     if (Spidar.Initialize(serialNumber, type))
     {
         return(new Spidar(serialNumber));
     }
     else
     {
         return(null);
     }
 }
Beispiel #8
0
 /// <summary>
 /// ログの取得を開始する.
 /// </summary>
 public void StartLog()
 {
     Spidar.StartLog(this.SerialNumber);
 }
Beispiel #9
0
 /// <summary>
 /// デバイスの動作を停止する.
 /// </summary>
 public void Stop()
 {
     Spidar.Stop(this.SerialNumber);
 }
Beispiel #10
0
        /// <summary>
        /// 力提示をやめ最小張力とする.
        /// </summary>
        /// <param name="lerp">
        /// 提示力補間のON/OFF
        /// </param>
        public void ClearForce(bool lerp = false)
        {
            Vector3 zero = Vector3.zero;

            Spidar.SetForce(this.SerialNumber, ref zero, 0, 0, ref zero, 0, 0, lerp, false);
        }
Beispiel #11
0
 /// <summary>
 /// グリップの姿勢を取得する.
 /// </summary>
 /// <param name="position">
 /// グリップの位置[m]
 /// </param>
 /// <param name="rotation">
 /// グリップの回転(四元数)
 /// </param>
 /// <param name="velocity">
 /// グリップの速度[m/s]
 /// </param>
 /// <param name="angularVelocity">
 /// グリップの角速度[rad/s]
 /// </param>
 public void GetPose(out Vector3 position, out Quaternion rotation,
                     out Vector3 velocity, out Vector3 angularVelocity)
 {
     Spidar.GetPose(this.SerialNumber, out position, out rotation,
                    out velocity, out angularVelocity);
 }
Beispiel #12
0
 /// <summary>
 /// カスケード制御用バネ定数のゲインを設定する.
 /// </summary>
 /// <param name="gain">
 /// ゲイン
 /// </param>
 public void SetCascadeGain(float gain)
 {
     Spidar.SetCascadeGain(this.SerialNumber, gain);
 }
Beispiel #13
0
 /// <summary>
 /// 力覚提示のON/OFFを設定する.
 /// </summary>
 /// <param name="enable">
 /// true: ON, false: OFF
 /// </param>
 public void SetHaptics(bool enable)
 {
     Spidar.SetHaptics(this.SerialNumber, enable);
 }
Beispiel #14
0
 /// <summary>
 /// デバイスのグリップ姿勢のキャリブレーションを行う.
 /// </summary>
 public void Calibrate()
 {
     Spidar.Calibrate(this.SerialNumber);
 }
Beispiel #15
0
 /// <summary>
 /// デバイスの終了処理.
 /// </summary>
 public void Dispose()
 {
     Spidar.Terminate(this.SerialNumber);
     GC.SuppressFinalize(this);
 }