筆者の立ち位置と本稿の目的筆者は自動車業界でエンジニアとして働いており、日々の業務ではセンサーデータや物理モデルの解析に携わっている。特に、多項式回帰やフーリエ変換を用いた関数近似や信号処理は、実務で頻繁に活用している技術である。一方で、関...
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
【CANoe】最小構成のMBD事例 第2章 その266【仮想ECU連携③】
CANoeでXCP関連の処理を追加する際の方針を確認。 複数のノードにXCP関連処理を記載するので連携が必要。 ノード間連携はCANoeシステム変数を使うのが最も手っ取り早い。 CANoeシステム変数の追加方法を確認。 CAPLからシステム変数にアクセスする際は変数名の目に「@」をつける。
【CANoe】最小構成のMBD事例 第2章 その265【仮想ECU連携②】
CANoe上の指令器をdisable。 シミュレーション設定ウィンドウのノード上でdisable操作が可能。 CANOe上にテストノード追加。 シミュレーション設定ウィンドウのバス上で追加操作可能。 今回はCAPLテストモジュールを使用。 .NET、XMLのテストモジュールは気が向いたら調べる。
【CANoe】最小構成のMBD事例 第2章 その264【仮想ECU連携①】
残り作業はXCPだけではない。 構造が複雑なので一旦整理。 Virtual CAN BusとCANoeシミュレーションバスは直結していると思って良い。 CANoe仮想HILSと仮想ECU連携のロードマップ提示。 指令器disable。 テストノード追加。 XCP関連セットアップ。 DAQ/STIM関連。
【FMI/FMU】最小構成のMBD事例 第2章 その263【CANoe⑯】
32bit FMU作成しCANoeに組み込んだ。 CANoeでFMU駆動の実験。 かなりキレイな波形が取れた。 FMU、CAN送信共に1ms駆動させているため。 Pythonの時は100ms駆動相当になっていた。 このあとはCAPLでXCPを実現するがpython-canでやったことと同じことをやればOK。
【FMI/FMU】最小構成のMBD事例 第2章 その262【CANoe⑮】
バックナンバーはこちら。はじめにCANoeの内部プロセスとして描画プロセスと計測/演算プロセスが存在することと、プロセス間通信がTCP/IPを使用していることのの裏付けの調査結果を確認。引き続き調査結果の話とCANoeの設計思想の話。登場人
【FMI/FMU】最小構成のMBD事例 第2章 その260【CANoe⑬】
CANoeが32bitFMUを要求する理由の調査結果。 CANoe内に2つのアプリケーションが動作しているもよう。 描画担当で64bitプロセス。 計測/演算担当の32bitプロセス。 FMUは計測/演算担当のプロセス側が読み込んでるっぽい。 CANoeの内部構成についていろいろ考察したので次回説明予定。
【FMI/FMU】最小構成のMBD事例 第2章 その259【CANoe⑫】
ついにCANoe上でFMUを動作させる実験を開始・・・したが・・・。 謎エラー発生。 32bitアプリケーションから呼ばれるFMUの場合はwin32向けFMUである必要がある。 しかし、今回使用しているCANoeは64bitアプリケーションのため辻褄が合わない。 なぜこのようなことになっているか要調査。
【FMI/FMU】最小構成のMBD事例 第2章 その258【CANoe⑪】
仮想HILS向けCAPLコード公開。 イベントハンドラは関数先頭に「on」が付く。 その後ろに以下が続く。 start:シミュレーション開始。 timer:タイマ。 signal:シグナル更新。 CAPLのコツはシンプルに書く。 複雑な処理はライブラリに逃がすなどがコツ。
【FMI/FMU】最小構成のMBD事例 第2章 その257【CANoe⑩】
FMUとCANシグナルの紐づけのためついにCAPLに手を付け始める。 CAPLではイベントハンドラを使うことが多い。 イベントはおおよそ以下。 シミュレーション開始。 タイマ。 CAN受信。 シグナル更新。 ネットワークノード毎にCAPLを設定できるので、ノードの役割を意識する必要がある。
【FMI/FMU】最小構成のMBD事例 第2章 その256【CANoe⑨】
FMUの中に指令器もあったが、CANoeから指令値を変えられた方が便利なのでシグナルジェネレータ機能を使用する方針となる。 dbcファイルで定義したシグナルに対して自由は波形を載せることが可能な機能。 シグナルジェネレータで台形波を作成しTargetシグナルとして出力できるように設定。 さまざまは波形を設定可能。
【FMI/FMU】最小構成のMBD事例 第2章 その255【CANoe⑧】
CANoe.IL機能でシグナルを簡単に叩けるようにはなったが、FMUとの接続が無いとCAPLを実装してもイマイチ。というわけでFMUインポートから実施。FMUインポートの手順確認。最終的にはCANoeシステム変数と紐づいて、そのシステム変数を読み書きすることで結果としてFMUのInput、Outputにアクセスできる。
【FMI/FMU】最小構成のMBD事例 第2章 その254【CANoe⑦】
dbcファイルが出来上がったのでCANoeのデータベースインポートウィザードを使ってみた。 dbcを読み込むことでdbc内で定義されているネットワークノードをCANoeに割り当てることが可能。 生成されたノードはdbcで定義されたCANメッセージを同じく定義された送信周期で送信可能。 CANoe.IL機能の一端。
【FMI/FMU】最小構成のMBD事例 第2章 その253【CANoe⑥】
CANdb++エディターで各種定義を実施。 シグナル、メッセージ、ノードの順番で定義していく。 メッセージの周期時間は送信周期を示す。 単位は[ms]。 属性の「GenMsgCycleTime」パラメータを修正することで変更可能。 CANoe.IL機能を使用する時に生きてくるパラメータ。
【FMI/FMU】最小構成のMBD事例 第2章 その252【CANoe⑤】
dbcファイルについて簡単に説明。 CANメッセージとそれに載せるシグナルだけでなく、ネットワークノードの定義もできる。 ネットワークノードを定義しておくと、CANoeのインポートウィザードでノードの自動生成をしてくれる。 dbcファイルを作成開始。 CANeb++エディターを使用。 プロトコルの設定まで実施。
【FMI/FMU】最小構成のMBD事例 第2章 その251【CANoe④】
バックナンバーはこちら。はじめに前回はVector社製ツールのCANoeを仮想HILS化するための実験ロードマップを提示。大雑把にはFMU importとXCPマスタの2つの機能を実現させればOK。まずはCANoeはFMUを本当に扱えるかを
【FMI/FMU】最小構成のMBD事例 第2章 その250【CANoe③】
CANoeの仮想HILS化への実験ロードマップ提示。 大雑把にはFMU importとXCPマスタの2つ。 FMU importの実験をやってからXCPマスタの実験の流れ。 最初はXCPを使用せずにCANoeのシミュレーションバスを使用したFMU間連携をさせてみる。
【FMI/FMU】最小構成のMBD事例 第2章 その249【CANoe②】
CANoeで仮想HILSの実現が可能かを検討する間に現行の仮想HILSの機能を列挙した。 FMU import&実行。 たぶんOK。でも要確認 各種信号のグラフ表示&CAN受信。 間違い無くできる。 XCPマスタ 本当のXCPをするなら追加ライセンスが必要。 しかし、CAPLを駆使すれば今回の目的は達成できそう。
【FMI/FMU】最小構成のMBD事例 第2章 その248【CANoe①】
仮想HILSと仮想ECUの精度が上がらなかった原因を予測。 ほぼ間違いなく応答性が原因。 Pythonではこれ以上の応答性は得られそうもない。 Pythonに変わって仮想HILS側をVector社のCANoeにしたらどうかという意見あり。 本物のHILSと比べ、コスパも良さそう。
【XCP】最小構成のMBD事例 第2章 その247【CAN-FD㉔】
仮想HILSと仮想ECUのXCPonCANFD対応の動作確認は結果としては失敗に終わった。 変数の精度向上はあまり性能向上にはつながらなかった。 しかしXCPonCANFDを直に見るのも珍しい体験なので、これはこれで将来に生かすって発想が大事。 失敗したからこそ意地でも糧になるものを拾うべし。
【XCP】最小構成のMBD事例 第2章 その246【CAN-FD㉓】
XCPonCANFD対応に於ける当初想定していた仮想HILS、仮想ECUの全体構成と実際の全体構成。 基本的には想定通りの修正。 PyXCPのCAN-FD対応が難航したのが想定外ってくらい。 論理構成としては変わらず。つまり基本的な動作は変わらないはず。 変数のサイズと精度が変わっているのでそれの効能を期待。
【XCP】最小構成のMBD事例 第2章 その245【CAN-FD㉒】
仮想HILS側の修正後のコード開示。 前回までの修正範囲と内容を反映したのみ。 tkinter、matplotlibのコードもあり、肥大化しているが、基本一直線のコード。 タイマハンドラで周期的に呼ばれるくらい。 いろいろな要素が絡んでるので、次回は全体構成の再確認。
【XCP】最小構成のMBD事例 第2章 その243【CAN-FD⑳】
仮想HILSのCAN-FD対応方針整理。 数としてはそこそこあるが、一個一個は1行修正のレベル。 importしているxcp_canをxcp_canfdに変更。 上記のクラス変更に伴い、XCPインスタンスの生成部分変更。 importのところでエイリアスを使うのもあり。
【XCP】最小構成のMBD事例 第2章 その242【CAN-FD⑲】
DAQリスナーCAN-FD対応版の動作確認を実施。 can.loggerのCAN-FDモードを並走さえて回線モニタを実施。 問題無くCAN-FDフレームが送出されていることを確認。 Bitrate_switchも有効になっている。 python-canの範疇では問題無しと判断できる。
【XCP】最小構成のMBD事例 第2章 その241【CAN-FD⑱】
DAQリスナーのCAN-FD対応の要否ついて説明。 CANのみ対応のインターフェースはCAN-FDフレームを検知すると「異常フレーム」と認識しエラーフレームをもってフレーム破壊を行う。 よって、CAN-FDフレームが流れるネットワークにCANのみ対応インターフェースは接続禁止。 DAQリスナーの修正は一撃。
【XCP】最小構成のMBD事例 第2章 その240【CAN-FD⑰】
xcp_canfdクラス動作確認を実施。 問題無く動作。 念のためxcp_canの時の動作確認結果とも比較。 同じ動きをしていることが確認できる。 CAN-FD回線モニタも実施し、CAN-FDフレームのレベルでも確認。 こちらも想定通りの動作をしていることを確認。 PID制御器もおおよそ狙い通り動いてそう。
【XCP】最小構成のMBD事例 第2章 その239【CAN-FD⑯】
xcp_canクラス改めxcp_canfdクラスを作成。 xcp_canfdクラスのソースコードを開示。 前回までの修正分を盛り込んだのみ。 コンフィグレーション、ODT_ENTRY構成、STIMレイアウト、DAQレイアウト、STIM送信用データ。 次回は、これを実際に動作させてみる。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
筆者の立ち位置と本稿の目的筆者は自動車業界でエンジニアとして働いており、日々の業務ではセンサーデータや物理モデルの解析に携わっている。特に、多項式回帰やフーリエ変換を用いた関数近似や信号処理は、実務で頻繁に活用している技術である。一方で、関...
ソフトウェア設計における因果関係の明確化。条件分岐や状態遷移の数理的な記述。並列処理やバッチ処理の自然な導入。AIモデルとの構造的な共通性の理解。
exoファイルを使えば、立ち絵の設定をテンプレ化して何度でも使い回せる。キャラごと・表情ごとのexoパターンを作っておけば、配置も口パクも一瞬。拡張編集にドラッグ&ドロップするだけで、作業時間が爆速短縮。
G検定まとめ記事はこちらはじめに結構昔にG検定向けの動画で、「JDLAジェネラリスト検定(G検定)さっくり対策(究極カンペの作り方)カンペを見なくても問題が解ける自分の作り方。」というのを公開しているのだが、これに対しての問い合わせがちょく...
動画作成関連のバックナンバー用ページ。立ち絵を作ったり、動画作ったり、アイキャッチ画像作ったりなどを掲載していく。
画像認識の全体像を因果関係図で整理し、AlexNetを起点に各モデルの進化をたどる。一般物体認識から物体検出・セグメンテーション・姿勢推定まで、各カテゴリの代表モデルと技術を解説。モデル同士の構造的なつながりや技術的背景を踏まえ、因果関係をもとに体系的に理解を深めていく。
究極カンペの作り方についての問い合わせが増えている。G検定の評判を確認し、ネガティブな意見を問題提起として捉える。勉強のステージを定義し、語彙力と因果関係の把握が重要であることを説明。
フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
MATLAB,Python,Scilab,Julia比較するシリーズの第4章。第4章では分類問題で最終的にはニューラルネットワークや最適化アルゴリズムの話だった。第5章はフーリエ解析学から高速フーリエの話がメインとなる。
立ち絵の配置: PSDファイルをAviUtlに配置し、画面サイズやフレームレートを設定。のっぺらぼう化: 目と口を消して、アニメーション効果を追加。アニメーション効果: 目パチと口パクの設定を行い、リップシンクを調整。
フーリエ変換を定義。フーリエの積分公式の一部を抜き出す。逆フーリエ変換を定義。フーリエの積分公式にフーリエ変換を代入するだけ。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。区分求積法とリーマン積分について。フーリエの積分公式を導出した。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。さらにそこに加えて、AivisSpeechのアイコン画像を...
PSDToolKitプラグインの導入の仕方を説明。PSDファイルを探してGIMPで内容を確認。GIMPで瞬き用、口パク用のレイヤー編集。
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
区分求積法とリーマン積分について。離散と連続の分け目。フーリエの積分公式を導出した。演算したはずなのに変化しない。つまり変換、逆変換が成立することを示している。
Δωで刻みにしたので、極限を利用して連続系へ。数式上は連続ではあるが、一般的な表現ではない。よって、一般的な表現に書き換える必要がある。
角周波数ωの刻みであるΔωについて説明。Δωを定義することで、離散的な係数算出が連続的な角周波数算出に近づけていっている。
周期2Lの波の数を示すnを周期2πに於ける波の数である角周波数ωに変換。ω=nπ/Lを使用して変換するだけ。これにより少し数式がシンプルになった。
VOICEVOXとAivisSpeechキャラと一緒に!AviUtlを使った動画作成 バックナンバーはじめに以前、AivisSpeechのAnneliというキャラの立ち絵を作成した。ほぼ独自に作成したが、Anneliの画像自体はAivisS...
ニューラルネットワークの最適化アルゴリズムAdamをJuliaにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをScilabにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをPythonにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをMATLABにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
はじめに MATLAB,Python,Scilab,Julia比較するシリーズの第4章。 第3章では画像処理、座標変換の話がメインだった。 第4章は分類問題関連の話がメインとなる。基本的には以下の流れとなる。 形式ニューロン 決定境界線の安
分類問題を扱って第4章終了。 最も原始的なニューラルネットワークをやったことでディープラーニングの基礎部分は把握できたかもしれない。 次の章はこれから考える。
Adamだけで出てくる分類結果を確認。 四角形で分類する理想的な形状。 この分類結果になる場合は、誤差関数の値が一気に跳ね上がる時。 これにより大域最適解を引き当てやすくなる。
ニューラルネットワークの最適化アルゴリズムAdamをJuliaにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをScilabにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをPythonにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
ニューラルネットワークの最適化アルゴリズムAdamをMATLABにて確認。 学習率を0.001にしている都合、収束までは時間がかかる。 勾配降下法、モーメンタムでは見れなかった分類パターンが拾えた。
各最適化アルゴリズムの依存関係を記載。 1次の勾配で勢いをつけて、2次の勾配で抑制するというのが全体を通しての共通点。 Adamの更新式を実現するためのプログラムフローを記載。 学習率は0.001とかなり小さめの値に設定。 これにより収束は遅くなる。 かわりに特殊な最適解が得られるのでそれを確認する。
AdaDeltaについて説明。 RMSpropの拡張版に当たる。 最適化アルゴリズムAdamについて説明。 モーメンタムとRMSpropの合わせ技。 1次の勾配と、2次の勾配の指数移動平均を使用する。
もう一個試す予定の最適化アルゴリズムAdamへ至る系譜を説明予定。 AdaGradについて説明。 更新式をモーメンタムと比較。 RMSpropについて説明。 AdaGradの完了版であるため、AdaGradと更新式を比較。
Adamの更新式を実現するためのプログラムフローを記載。 モーメンタムの部分をAdamに差し替えただけ。 学習率は0.001とかなり小さめの値に設定。 これにより収束は遅くなる。 かわりに特殊な最適解が得られるのでそれを確認する。
各最適化アルゴリズムの依存関係を記載。 1次の勾配で勢いをつけて、2次の勾配で抑制するというのが全体を通しての共通点。 Adamが1次の勾配と2次の勾配を合わせたアルゴリズムとなる。
最適化アルゴリズムAdamについて説明。 モーメンタムとRMSpropの合わせ技。 1次の勾配と、2次の勾配の指数移動平均を使用する。
AdaDeltaについて説明。 RMSpropの拡張版に当たる。 学習率というハイパーパラメータ無しで動作する。 最終的な学習率は1近傍になるため振動しやすいらしい。
RMSpropについて説明。 AdaGradの完了版であるため、AdaGradと更新式を比較。 AdaGradでは2次の勾配の累積だったものが、2次の勾配の指数移動平均に。 これにより、極小値近辺やプラトーになっても更新を続けられる。
AdaGradについて説明。 更新式をモーメンタムと比較。 更新幅は、最初は大きく、徐々に小さくなり、最終的には学習が進まなくなる欠点を抱えている。