ARCS5.1-REV.51SF181130
-
デバッグインジケータの追加
ハードウェア周りのデバッグ時に便利なリアルタイム用のデバッグプリントを実装。
./src/ConstParams.hhの下記を,// デバッグインジケータの設定
のように設定するとARCS画面上にバイナリデータのリアルタイム表示が現れる。 そして,下記のようにDebugIndic関数を呼ぶと,
static constexpr bool DEBUG_INDIC_VISIBLE = true; //!< デバッグインジケータ表示の有効/無効設定
DebugIndic(0xFA39,1);
以下のような表示になる。(つーか何故今までなかったのか!!)
特徴はDebugPrint関数と異なりリアルタイム空間でも使えること。 デフォルトでは DEBUG_INDIC_VISIBLE = false に設定してある。 - stringで引数を渡すべきところをc_str()で渡しているところがあったのでFIX。
- SCHED_FIFOスレッド開始指令後に,開始完了を確認するまで待機するように変更。
- Cppcheckによる静的解析&FIX。
- FrameGraphicsのグラフ描画アルゴリズムを「ブレゼンハムのアルゴリズム」に変更。
ARCS5.1-REV.51SF170729
- assert関数のバグフィクス&仕様変更&拡張。
- 非リアルタイムモードとリアルタイムモードで動作を変更
- assert条件に引っ掛かっても,動作が続行される危なすぎるバグをfix
- 実時間マルチスレッドクラスに緊急停止関数を追加。
- main関数の緊急停止処理を一部変更。
- ARCS画面描画クラスのShowEmergencyWindow関数の引数を変更。
- 不感帯関数,ヒステリシス比較器,シグモイド関数,シグナム関数を追加。
- 同一次元0次外乱オブザーバ,トルクセンサベース速度オブザーバを実装。
- 総行数12293行。
ARCS5.1-REV.51SF170515
- ARCS用のassert関数を追加,緊急停止機能を実装! (つーか何故今までなかったのか!!)
- データ格納/ファイル出力クラス(DataStorage.hh/cc)に間引き機能を追加,一部引数見直し。
- PCI-3340のデジタル入出力ピンを使えるように機能追加。
- 三角波発振器を実装。
- 階段波発生器を実装。
- 2段ステップ発生器を実装。
- 前進オイラー,後退オイラー,台形を選べるように積分器クラス(Integrator.hh/cc)に機能追加。
- I-P-I-P制御器を実装。
- 通過した場所をイベントログに記録するPassedLog関数を追加。
- 幾つかあったEventLog関数呼び出しをPassedLog関数呼び出しに変更,メッセージを抑制。
- Linuxカーネルモジュールのコンパイル,モジュール自動起動/自動停止の機能を標準搭載。これで独自デバドラが作りやすく。
- 前記に伴ってMakefileを修正。
- ARCS-HFDLインターフェースボード用のデバイスドライバとクラスを実装。
- Cppcheckによる静的解析&FIX。
- ライセンス形態を GPLv3 から 二条項BSDライセンス に変更。(ソース中の文章はまだ修正しきれていないけど…)
- この時点でコードの総行数は11492行。

設定した条件に引っ掛かるとこんな感じのウィンドウが表示されて緊急停止できるようになった。
使い方の解説
ARCS5.1-REV.51SF160824
- Cppcheckにより静的解析を行い,以下のリファクタリングを実施。安全性とパフォーマンスが向上。
- 幾つかの関数をstaticメンバ関数に変更
- 幾つかのコンストラクタをexplicitで修飾
- 幾つかのメンバ関数をconstメンバ関数に変更
- 幾つかの引数を参照渡しに変更
- 幾つかの変数のスコープを狭める
- 一部の書式指定子の間違いを修正
- 初期化漏れを修正
- if文の不必要な条件式を削除
- イベントログ機能を強化。イベントログ関数を呼んだ位置のファイル名と行番号を EventLog.txt に自動的に記録。
- イベントログメッセージを各所に追加。今後もどんどん追加していく予定。
- ARCS画面の青い部分の一部がマゼンタになるバグをFix。加えて白文字を明るく変更。
- 緊急非常停止用メッセージウィンドウの実装。緊急停止機能そのものはただ今実装中。
- すべてのソースコードのコメントを含む行数を表示する機能をMakefileに搭載。この時点で10681行。
ARCS5.1-REV.51SF160817
- SCHED_FIFOスレッドを見直し,リアルタイム性をさらに向上させた。詳細はこちら→SCHED_FIFOによるリアルタイム制御 ~その2~
- 余計なインクルードを削除&ヘッダからソースへ移動&クラスの前方宣言。これによりコンパイル時間が短縮した。
- Makefileの挙動を一部変更。
- 画面解像度1280×1024に正式対応。
- 1次外乱オブザーバ&I-PD制御器をARCSライブラリへ追加。
ARCS5.1-REV.51SF160516
- 制御停止時のコードを見直し。実時間スレッドがすべて終了する前に終了処理コードが実行され,タイミングによっては稀に, オブジェクトのdelete後にも関わらず,そのオブジェクトが呼び出される可能性があり,「Segmentation fault」が発生する場合があった。 そのバグをFixした。
- 制御停止直後に電流指令が零にならない可能性があったので,それもFix。
ARCS5.1-REV.51SF160513
- 行列の加減乗演算,冪乗,LU分解,逆行列,擬似逆行列…等々の行列計算が可能に!→詳細
- 連続系状態方程式の離散化が可能に!→詳細
- メッセージや変数,行列を表示するデバッグプリント機能を搭載→詳細
- イベントログ機能を搭載,要所でイベントメッセージを出力するように改良
- C++11に対応させるため,Makefileを修正
- 部分的にNULLからnullptrに,constからconstexprに変更し始めた
- CuiPlotにグラフ描画の有効/無効設定を追加
- 2慣性共振系シミュレータクラスを追加
ARCS5.1-REV.51SF160419
- 終了時に稀に「Segmentation fault」が発生していたので,ARCS.cc内の終了処理(delete)の順番を修正
- delete直後にNULLが代入されてないところがあったので,代入するように修正(二重解放回避)
- グラフプロットの実装を見直し。任意変数をプロットするのがやりにくかったものをやりやすいように修正
- 方形波発振器クラスを追加
- FixedAverageクラスを追加 (時刻ゼロから現在時刻までの信号の平均を計算する)
- PCI-3340クラス,PCI-6205Cクラスの仕様を変更 (使用しない機能を削除&実装をすっきり)
Ver.4.1,Ver.4.2,Ver.5.0との差分
- 画面表示を一新
- ディスプレイ解像度の変更に対応 (1920x1080とか1024x600等々でも正常に表示)
- Makefileの見直しにより、コンパイル時間を短縮
- コンパイルオプション(CPUアーキテクチャ)に関して、Makefileを色々と見直し&機能追加
- 作業し易いようにディレクトリ構造を変更 (ConstParamsとControlFunctionsの紛らわしさ解消)
- アクチュエータの数に表示が自動追従するように修正
- スレッド数を2個に削減(8個も使うことはなさそうなので)
- グラフ表示にCuiPlotを使用
- D/A,A/Dコンバータのクラス,UDP通信のクラスが増えた
- Raspberry Pi 2 Model B に対応(動作確認済み)
- その他色々と細かい部分を修正
RCS Ver.1.0
- "Not Advanced"な初期のRobot Control System Ver.1.0の画面
ダサさが滲み出ている。。。
研究室の横の倉庫 - Side Warehouse of Laboratory
Copyright(C), Side Warehouse, All rights reserved.