ARCS6 AR6-REV.24062600
読み取り中…
検索中…
一致する文字列を見つけられません
EquipParams.hh
[詳解]
1
6//
7// Copyright (C) 2011-2024 Yokokura, Yuki
8// MIT License. For details, see the LICENSE file.
9
10#ifndef EQUIPPARAMS
11#define EQUIPPARAMS
12
13#include <cmath>
14#include "ARCSparams.hh"
15#include "SFthread.hh"
16
17namespace ARCS { // ARCS名前空間
20 public:
21 // 画面サイズの設定 (モニタ解像度に合うように設定すること)
22 // 1024×600(WSVGA) の場合に下記をアンコメントすること
23 //static constexpr int SCR_VERTICAL_MAX = 36; //!< [文字] 画面の最大高さ文字数
24 //static constexpr int SCR_HORIZONTAL_MAX = 127; //!< [文字] 画面の最大幅文字数
25 // 1024×768(XGA) の場合に下記をアンコメントすること
26 static constexpr int SCR_VERTICAL_MAX = 47;
27 static constexpr int SCR_HORIZONTAL_MAX = 127;
28 // 1280×1024(SXGA) の場合に下記をアンコメントすること
29 //static constexpr int SCR_VERTICAL_MAX = 63; //!< [文字] 画面の最大高さ文字数
30 //static constexpr int SCR_HORIZONTAL_MAX = 159; //!< [文字] 画面の最大幅文字数
31 // 1920×1080(Full HD) の場合に下記をアンコメントすること
32 //static constexpr int SCR_VERTICAL_MAX = 66; //!< [文字] 画面の最大高さ文字数
33 //static constexpr int SCR_HORIZONTAL_MAX = 239; //!< [文字] 画面の最大幅文字数
34 // それ以外の解像度の場合は各自で値を探すこと
35
36 // SCHED_FIFOリアルタイムスレッドの設定
37 static constexpr SFalgorithm THREAD_TYPE = SFalgorithm::INSERT_ZEROSLEEP;
38 // 上記を INSERT_ZEROSLEEP にすると安定性が増すがリアルタイム性は落ちる。遅い処理系の場合に推奨。
39 // WITHOUT_ZEROSLEEP にするとリアルタイム性が向上するが,一時的に操作不能になる可能性が残る。高速な処理系の場合に選択可。
40 // 下記はカーネルパラメータの設定
41 // NO_SETTINGS もしくは CFS_DISABLED と PREEMPT_DYNFULL が併用可。詳細はSFthreadクラスのコメント欄を参照のこと。
42 //static constexpr SFkernelparam THREAD_KP = SFkernelparam::CFS_DISABLED; //!< CFSをリアルタイム用に設定
43 static constexpr SFkernelparam THREAD_KP = static_cast<SFkernelparam>(
44 static_cast<uint8_t>(SFkernelparam::CFS_DISABLED) | static_cast<uint8_t>(SFkernelparam::PREEMPT_DYNFULL)
45 );
46
49 static constexpr std::array<size_t, ARCSparams::THREAD_MAX> CPUCORE_NUMBER = {
50 3, // [-] 制御用周期実行関数1 (スレッド1) 使用するCPUコア番号
51 2, // [-] 制御用周期実行関数2 (スレッド2) 使用するCPUコア番号
52 1, // [-] 制御用周期実行関数3 (スレッド3) 使用するCPUコア番号
53 };
54
55 // 時系列グラフプロットの設定
56 static constexpr char PLOT_FRAMEBUFF[] = "/dev/fb0";
57
58 // 実験機アクチュエータの設定
59 static constexpr size_t ACTUATOR_NUM = 1;
60
65 static constexpr std::array<ARCSparams::ActType, ARCSparams::ACTUATOR_MAX> ACT_TYPE = {
66 ARCSparams::ActType::ROTARY_MOTOR, // 1番 アクチュエータ
67 ARCSparams::ActType::ROTARY_MOTOR, // 2番 アクチュエータ
68 ARCSparams::ActType::ROTARY_MOTOR, // 3番 アクチュエータ
69 ARCSparams::ActType::ROTARY_MOTOR, // 4番 アクチュエータ
70 ARCSparams::ActType::ROTARY_MOTOR, // 5番 アクチュエータ
71 ARCSparams::ActType::ROTARY_MOTOR, // 6番 アクチュエータ
72 ARCSparams::ActType::ROTARY_MOTOR, // 7番 アクチュエータ
73 ARCSparams::ActType::ROTARY_MOTOR, // 8番 アクチュエータ
74 ARCSparams::ActType::ROTARY_MOTOR, // 9番 アクチュエータ
75 ARCSparams::ActType::ROTARY_MOTOR, // 10番 アクチュエータ
76 ARCSparams::ActType::ROTARY_MOTOR, // 11番 アクチュエータ
77 ARCSparams::ActType::ROTARY_MOTOR, // 12番 アクチュエータ
78 ARCSparams::ActType::ROTARY_MOTOR, // 13番 アクチュエータ
79 ARCSparams::ActType::ROTARY_MOTOR, // 14番 アクチュエータ
80 ARCSparams::ActType::ROTARY_MOTOR, // 15番 アクチュエータ
81 ARCSparams::ActType::ROTARY_MOTOR, // 16番 アクチュエータ
82 };
83
89 static constexpr std::array<ARCSparams::ActRefUnit, ARCSparams::ACTUATOR_MAX> ACT_REFUNIT = {
90 ARCSparams::ActRefUnit::AMPERE, // 1番 アクチュエータ
91 ARCSparams::ActRefUnit::AMPERE, // 2番 アクチュエータ
92 ARCSparams::ActRefUnit::AMPERE, // 3番 アクチュエータ
93 ARCSparams::ActRefUnit::AMPERE, // 4番 アクチュエータ
94 ARCSparams::ActRefUnit::AMPERE, // 5番 アクチュエータ
95 ARCSparams::ActRefUnit::AMPERE, // 6番 アクチュエータ
96 ARCSparams::ActRefUnit::AMPERE, // 7番 アクチュエータ
97 ARCSparams::ActRefUnit::AMPERE, // 8番 アクチュエータ
98 ARCSparams::ActRefUnit::AMPERE, // 9番 アクチュエータ
99 ARCSparams::ActRefUnit::AMPERE, // 10番 アクチュエータ
100 ARCSparams::ActRefUnit::AMPERE, // 11番 アクチュエータ
101 ARCSparams::ActRefUnit::AMPERE, // 12番 アクチュエータ
102 ARCSparams::ActRefUnit::AMPERE, // 13番 アクチュエータ
103 ARCSparams::ActRefUnit::AMPERE, // 14番 アクチュエータ
104 ARCSparams::ActRefUnit::AMPERE, // 15番 アクチュエータ
105 ARCSparams::ActRefUnit::AMPERE, // 16番 アクチュエータ
106 };
107
109 static constexpr std::array<double, ARCSparams::ACTUATOR_MAX> ACT_FORCE_TORQUE_CONST = {
110 1, // [N/A]/[Nm/A] 1番 アクチュエータ
111 1, // [N/A]/[Nm/A] 2番 アクチュエータ
112 1, // [N/A]/[Nm/A] 3番 アクチュエータ
113 1, // [N/A]/[Nm/A] 4番 アクチュエータ
114 1, // [N/A]/[Nm/A] 5番 アクチュエータ
115 1, // [N/A]/[Nm/A] 6番 アクチュエータ
116 1, // [N/A]/[Nm/A] 7番 アクチュエータ
117 1, // [N/A]/[Nm/A] 8番 アクチュエータ
118 1, // [N/A]/[Nm/A] 9番 アクチュエータ
119 1, // [N/A]/[Nm/A] 10番 アクチュエータ
120 1, // [N/A]/[Nm/A] 11番 アクチュエータ
121 1, // [N/A]/[Nm/A] 12番 アクチュエータ
122 1, // [N/A]/[Nm/A] 13番 アクチュエータ
123 1, // [N/A]/[Nm/A] 14番 アクチュエータ
124 1, // [N/A]/[Nm/A] 15番 アクチュエータ
125 1, // [N/A]/[Nm/A] 16番 アクチュエータ
126 };
127
129 static constexpr std::array<double, ARCSparams::ACTUATOR_MAX> ACT_RATED_CURRENT = {
130 1, // [A] 1番 アクチュエータ
131 1, // [A] 2番 アクチュエータ
132 1, // [A] 3番 アクチュエータ
133 1, // [A] 4番 アクチュエータ
134 1, // [A] 5番 アクチュエータ
135 1, // [A] 6番 アクチュエータ
136 1, // [A] 7番 アクチュエータ
137 1, // [A] 8番 アクチュエータ
138 1, // [A] 9番 アクチュエータ
139 1, // [A] 10番 アクチュエータ
140 1, // [A] 11番 アクチュエータ
141 1, // [A] 12番 アクチュエータ
142 1, // [A] 13番 アクチュエータ
143 1, // [A] 14番 アクチュエータ
144 1, // [A] 15番 アクチュエータ
145 1, // [A] 16番 アクチュエータ
146 };
147
149 static constexpr std::array<double, ARCSparams::ACTUATOR_MAX> ACT_MAX_CURRENT = {
150 3, // [A] 1番 アクチュエータ
151 3, // [A] 2番 アクチュエータ
152 3, // [A] 3番 アクチュエータ
153 3, // [A] 4番 アクチュエータ
154 3, // [A] 5番 アクチュエータ
155 3, // [A] 6番 アクチュエータ
156 3, // [A] 7番 アクチュエータ
157 3, // [A] 8番 アクチュエータ
158 3, // [A] 9番 アクチュエータ
159 3, // [A] 10番 アクチュエータ
160 3, // [A] 11番 アクチュエータ
161 3, // [A] 12番 アクチュエータ
162 3, // [A] 13番 アクチュエータ
163 3, // [A] 14番 アクチュエータ
164 3, // [A] 15番 アクチュエータ
165 3, // [A] 16番 アクチュエータ
166 };
167
169 static constexpr std::array<double, ARCSparams::ACTUATOR_MAX> ACT_RATED_TORQUE = {
170 1, // [Nm] 1番 アクチュエータ
171 1, // [Nm] 2番 アクチュエータ
172 1, // [Nm] 3番 アクチュエータ
173 1, // [Nm] 4番 アクチュエータ
174 1, // [Nm] 5番 アクチュエータ
175 1, // [Nm] 6番 アクチュエータ
176 1, // [Nm] 7番 アクチュエータ
177 1, // [Nm] 8番 アクチュエータ
178 1, // [Nm] 9番 アクチュエータ
179 1, // [Nm] 10番 アクチュエータ
180 1, // [Nm] 11番 アクチュエータ
181 1, // [Nm] 12番 アクチュエータ
182 1, // [Nm] 13番 アクチュエータ
183 1, // [Nm] 14番 アクチュエータ
184 1, // [Nm] 15番 アクチュエータ
185 1, // [Nm] 16番 アクチュエータ
186 };
187
189 static constexpr std::array<double, ARCSparams::ACTUATOR_MAX> ACT_MAX_TORQUE = {
190 3, // [Nm] 1番 アクチュエータ
191 3, // [Nm] 2番 アクチュエータ
192 3, // [Nm] 3番 アクチュエータ
193 3, // [Nm] 4番 アクチュエータ
194 3, // [Nm] 5番 アクチュエータ
195 3, // [Nm] 6番 アクチュエータ
196 3, // [Nm] 7番 アクチュエータ
197 3, // [Nm] 8番 アクチュエータ
198 3, // [Nm] 9番 アクチュエータ
199 3, // [Nm] 10番 アクチュエータ
200 3, // [Nm] 11番 アクチュエータ
201 3, // [Nm] 12番 アクチュエータ
202 3, // [Nm] 13番 アクチュエータ
203 3, // [Nm] 14番 アクチュエータ
204 3, // [Nm] 15番 アクチュエータ
205 3, // [Nm] 16番 アクチュエータ
206 };
207
209 static constexpr std::array<double, ARCSparams::ACTUATOR_MAX> ACT_INITPOS = {
210 0, // [rad] 1軸 アクチュエータ
211 0, // [rad] 2軸 アクチュエータ
212 0, // [rad] 3軸 アクチュエータ
213 0, // [rad] 4軸 アクチュエータ
214 0, // [rad] 5軸 アクチュエータ
215 0, // [rad] 6軸 アクチュエータ
216 0, // [rad] 7番 アクチュエータ
217 0, // [rad] 8番 アクチュエータ
218 0, // [rad] 9番 アクチュエータ
219 0, // [rad] 10番 アクチュエータ
220 0, // [rad] 11番 アクチュエータ
221 0, // [rad] 12番 アクチュエータ
222 0, // [rad] 13番 アクチュエータ
223 0, // [rad] 14番 アクチュエータ
224 0, // [rad] 15番 アクチュエータ
225 0, // [rad] 16番 アクチュエータ
226 };
227
228 private:
229 EquipParams() = delete;
230 ~EquipParams() = delete;
231 EquipParams(const EquipParams&) = delete;
232 const EquipParams& operator=(const EquipParams&) = delete;
233};
234}
235
236#endif
237
ARCSシステムコード共通パラメータ設定静的クラス
SCHED_FIFOリアルタイムスレッドクラス(sleep使用不使用テンプレート可変版, 関数オブジェクト版)
SFalgorithm
リアルタイムアルゴリズムのタイプの定義 解説: 時間ゼロのスリープを入れるとLinuxが安定動作できるが,リアルタイム性は犠牲になる。 古い低速の処理系では INSERT_ZEROSLEEP を推奨する...
Definition SFthread.hh:49
SFkernelparam
カーネルパラメータのタイプの定義
Definition SFthread.hh:55
@ AMPERE
アンペア単位
Definition ARCSparams.hh:63
@ ROTARY_MOTOR
回転モータ
Definition ARCSparams.hh:58
実験装置用定数値格納用クラス
Definition EquipParams.hh:19
static constexpr char PLOT_FRAMEBUFF[]
フレームバッファ ファイルデスクリプタ
Definition EquipParams.hh:56
static constexpr std::array< double, ARCSparams::ACTUATOR_MAX > ACT_FORCE_TORQUE_CONST
トルク/推力定数の設定
Definition EquipParams.hh:109
static constexpr int SCR_VERTICAL_MAX
[文字] 画面の最大高さ文字数
Definition EquipParams.hh:26
static constexpr std::array< double, ARCSparams::ACTUATOR_MAX > ACT_MAX_CURRENT
瞬時最大許容電流値の設定
Definition EquipParams.hh:149
static constexpr std::array< ARCSparams::ActType, ARCSparams::ACTUATOR_MAX > ACT_TYPE
実験機アクチュエータの種類の設定(リニアモータか回転モータかの設定) 下記が使用可能 LINEAR_MOTOR = リニアモータ ROTARY_MOTOR = 回転モータ
Definition EquipParams.hh:65
static constexpr size_t ACTUATOR_NUM
[基] 実験装置のアクチュエータの総数
Definition EquipParams.hh:59
static constexpr SFkernelparam THREAD_KP
CFSとPREEMPTの設定を併用する場合の例
Definition EquipParams.hh:43
static constexpr SFalgorithm THREAD_TYPE
リアルタイムアルゴリズムの選択
Definition EquipParams.hh:37
static constexpr std::array< double, ARCSparams::ACTUATOR_MAX > ACT_RATED_CURRENT
定格電流値の設定
Definition EquipParams.hh:129
static constexpr int SCR_HORIZONTAL_MAX
[文字] 画面の最大幅文字数
Definition EquipParams.hh:27
static constexpr std::array< double, ARCSparams::ACTUATOR_MAX > ACT_INITPOS
初期位置の設定
Definition EquipParams.hh:209
static constexpr std::array< double, ARCSparams::ACTUATOR_MAX > ACT_RATED_TORQUE
定格トルクの設定
Definition EquipParams.hh:169
static constexpr std::array< size_t, ARCSparams::THREAD_MAX > CPUCORE_NUMBER
使用CPUコアの設定 CPU0番コアはOSとARCSシステム、CPU1番コアはARCS描画系が使用しているので、2番目以上が望ましい
Definition EquipParams.hh:49
static constexpr std::array< ARCSparams::ActRefUnit, ARCSparams::ACTUATOR_MAX > ACT_REFUNIT
実験機アクチュエータの指令単位の設定(電流なのか推力なのかトルクなのかの設定) 下記が使用可能 AMPERE = アンペア単位 NEWTON = ニュートン単位 NEWTON_METER = ニュートン...
Definition EquipParams.hh:89
static constexpr std::array< double, ARCSparams::ACTUATOR_MAX > ACT_MAX_TORQUE
瞬時最大トルクの設定
Definition EquipParams.hh:189