SPIDAR API Library  0x16033101
Space Interface Device for Artificial Reality
ControllerFtd2xx.hpp
Go to the documentation of this file.
1 
5 #ifndef SPIDAR_CONTROLLER_FTD2XX_HPP
6 #define SPIDAR_CONTROLLER_FTD2XX_HPP
7 
8 #include <cstdint>
9 
10 #include <string>
11 #include <fstream>
12 
13 namespace Spidar
14 {
15 namespace Controller
16 {
25 {
26 public:
27  static const size_t MOTOR_COUNT = 8;
28 
29  ControllerFtd2xx(void);
30  ~ControllerFtd2xx(void);
31 
32  bool initialized(void) const { return initialized_; }
33  bool enabled(void) const { return enabled_; }
34  uint32_t deviceID(void) const { return deviceID_; }
35  uint32_t serialNumber(void) const { return serialNumber_; }
36  uint32_t firmwareVersion(void) const { return firmwareVersion_; }
37 
38  uint16_t maxPulseWidth(void) const { return maxPulseWidth_; }
39  uint32_t controlFrequency(void) const { return controlFrequency_; }
40  uint32_t pwmFrequency(void) const { return pwmFrequency_; }
41  uint32_t cascadeFrequency(void) const { return cascadeFrequency_; }
42  uint32_t qeiFrequency(void) const { return qeiFrequency_; }
43 
44  int16_t velocityGain(size_t i) const { return velocityGain_[i]; }
45  uint16_t velocityFilterGain(void) const { return velocityFilterGain_; }
46  uint16_t forceFilterGain(void) const { return forceFilterGain_; }
47  uint16_t pulseWidthLimit(size_t i) const { return pulseWidthLimit_[i]; }
48 
49  uint8_t gpioValue(void) const { return gpioValue_; }
50 
51  bool initialize(uint32_t serialNumber);
52  bool terminate(void);
53 
54  bool enableMotorControl(void);
55  bool disableMotorControl(void);
56 
57  bool writePulseWidth(const uint16_t(&pulseWidth)[MOTOR_COUNT]);
58  bool writeDutyCycle(const double(&dutyCycle)[MOTOR_COUNT]);
59 
60  bool writePulseWidth(const uint16_t(&pulseWidth)[MOTOR_COUNT], const int16_t(&springK)[MOTOR_COUNT], const uint16_t ratioKB);
61  bool writeDutyCycle(const double(&dutyCycle)[MOTOR_COUNT], const int16_t(&springK)[MOTOR_COUNT], const uint16_t ratioKB);
62 
63  bool readEncoderCount(int32_t(&count)[MOTOR_COUNT]);
64  bool clearEncoderCount(void);
65 
66  bool readFirmwareVersion(void);
67  bool blink(void);
68 
69  bool readMaxPulseWidth(void);
70  bool readPwmFrequency(void);
71  bool readCascadeFrequency(void);
72  bool readQeiFrequency(void);
73  bool readVelocityGain(void);
74  bool readVelocityFilterGain(void);
75  bool readForceFilterGain(void);
76  bool readPulseWidthLimit(void);
77 
78  bool writePwmFrequency(uint32_t frequency);
79  bool writeCascadeFrequency(uint32_t frequency);
80  bool writeQeiFrequency(uint32_t frequency);
81  bool writeVelocityGain(int16_t(&gain)[MOTOR_COUNT]);
82  bool writeVelocityFilterGain(uint16_t gain);
83  bool writeForceFilterGain(uint16_t gain);
84  bool writePulseWidthLimit(const uint16_t(&pulseWidth)[MOTOR_COUNT]);
85 
87  void lastError(std::string& message) const { message = lastError_; }
88 
89 private:
90  void setLastError(std::string message);
91 
92  bool initialized_;
93  bool enabled_;
94  uint32_t deviceID_;
95  uint32_t serialNumber_;
96  uint32_t firmwareVersion_;
97 
98  uint16_t maxPulseWidth_;
99  uint32_t controlFrequency_;
100  uint32_t pwmFrequency_;
101  uint32_t cascadeFrequency_;
102  uint32_t qeiFrequency_;
103 
104  int16_t velocityGain_[MOTOR_COUNT];
105  uint16_t velocityFilterGain_;
106  uint16_t forceFilterGain_;
107  uint16_t pulseWidthLimit_[MOTOR_COUNT];
108 
109  uint8_t gpioValue_;
110 
111  void* deviceHandle_;
112  std::string lastError_;
113 
114  std::string logFilename_;
115 
116  std::ofstream fout_;
117 
118 }; // end of class ControllerFtd2xx.
119 
120 } // end of namespace Controller.
121 } // end of namespace Spidar.
122 
123 #endif // SPIDAR_CONTROLLER_FTD2XX_HPP
124 
125 // end of file.
uint8_t gpioValue(void) const
GPIOの値を取得します.
bool writeQeiFrequency(uint32_t frequency)
エンコーダカウンタの周波数をコントローラ基板へ書き込みます.
ControllerFtd2xx(void)
コンストラクタ.
bool writeDutyCycle(const double(&dutyCycle)[MOTOR_COUNT])
PWMのパルス幅をデューティー比を用いて設定します.
static const size_t MOTOR_COUNT
モータの数
bool readMaxPulseWidth(void)
パルス幅の最大値をコントローラ基板から読み込みます.
uint32_t controlFrequency(void) const
メジャーループの制御周波数を取得します.
bool enableMotorControl(void)
コントローラの動作を開始します.
uint16_t maxPulseWidth(void) const
パルス幅の最大値を取得します.
bool initialized(void) const
初期化済確認フラグを取得します.
bool readEncoderCount(int32_t(&count)[MOTOR_COUNT])
エンコーダ値を読み込みます.
bool writeVelocityFilterGain(uint16_t gain)
速度補償用フィルタゲインをコントローラ基板へ書き込みます.
SPIDARコントローラ基板制御クラスです.
bool readFirmwareVersion(void)
ファームウェアバージョンをコントローラ基板から取得します.
SPIDARライブラリのルート名前空間です.
bool blink(void)
コントローラ基板上のLEDを点滅します.
bool writePulseWidth(const uint16_t(&pulseWidth)[MOTOR_COUNT])
PWMのパルス幅を設定します.
bool writeVelocityGain(int16_t(&gain)[MOTOR_COUNT])
速度補償ゲインをコントローラ基板へ書き込みます.
bool writePulseWidthLimit(const uint16_t(&pulseWidth)[MOTOR_COUNT])
パルス幅の制限値をコントローラ基板へ書き込みます.
uint16_t forceFilterGain(void) const
力覚補間用フィルタゲインを取得します.
uint32_t qeiFrequency(void) const
エンコーダカウンタ周波数を取得します.
uint32_t firmwareVersion(void) const
ファームウェアバージョンを取得します.
bool disableMotorControl(void)
コントローラの動作を停止します.
bool clearEncoderCount(void)
エンコーダ値をクリアします.
bool readVelocityFilterGain(void)
速度補償用フィルタゲインをコントローラ基板から読み込みます.
bool readPulseWidthLimit(void)
パルス幅の制限値をコントローラ基板から読み込みます.
uint32_t cascadeFrequency(void) const
マイナーループの制御周波数を取得します.
int16_t velocityGain(size_t i) const
速度補償ゲインを取得します.
bool writeForceFilterGain(uint16_t gain)
力覚補間用フィルタゲインをコントローラ基板へ書き込みます.
bool readPwmFrequency(void)
PWM周波数をコントローラ基板から読み込みます.
~ControllerFtd2xx(void)
デストラクタ.
void lastError(std::string &message) const
直近のエラーメッセージを取得します.
uint32_t deviceID(void) const
デバイスID(VIDPID)を取得します.
uint32_t serialNumber(void) const
シリアルナンバーを取得します.
uint16_t velocityFilterGain(void) const
速度補償用フィルタゲインを取得します.
bool enabled(void) const
動作中確認フラグを取得します.
uint16_t pulseWidthLimit(size_t i) const
パルス幅の制限値を取得します.
bool readQeiFrequency(void)
エンコーダカウンタ周波数をコントローラ基板から読み込みます.
bool readVelocityGain(void)
速度補償ゲインをコントローラ基板から読み込みます.
bool readCascadeFrequency(void)
マイナーループ制御周波数をコントローラ基板から読み込みます.
bool writeCascadeFrequency(uint32_t frequency)
マイナーループの制御周波数をコントローラ基板へ書き込みます.
bool terminate(void)
コントローラの終了処理を行います.
bool initialize(uint32_t serialNumber)
コントローラの初期化を行います.
bool readForceFilterGain(void)
力覚補間用フィルタゲインをコントローラ基板から読み込みます.
uint32_t pwmFrequency(void) const
PWM周波数を取得します.
bool writePwmFrequency(uint32_t frequency)
PWM周波数をコントローラ基板へ書き込みます.