フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と1回転という差があるのみ。よって、周波数に2πをかければ角周波数となる。
シミュレーションで実物を扱わなくても仕事ができる環境を目指す。つまり家に引きこもって外に出なくてもOKな世界。
【XCP】最小構成のMBD事例 第2章 その208【AUTOSAR⑭】
ついにAUTOSAR-XCPでSTIMを実現。 SET_MTA,DOWNLOADで実現していたコードを改修。 若干、遅れがあるように見えたが、CAN回線ログと比較した感じだと、全に正しい結果となっている。 思った以上の成果と言える。 フクさんが一点気になることがあるらしい。 これは次回説明予定。
【XCP】最小構成のMBD事例 第2章 その207【AUTOSAR⑬】
AUTOSAR-XCPのDAQ listモード設定コマンドの動作確認実施。 SET_DAQ_LIST_MODEを実施。 STIM側はTimeStampFieldは不要なので削除指定。 さらにRAM値への更新速度を上げるため1ms周期。 START_STOP_DAQ_LISTを実施。
【XCP】最小構成のMBD事例 第2章 その206【AUTOSAR⑫】
AUTOSAR-XCPのDAQ設定系コマンドの動作確認。FREE_DAQ、ALLOC_DAQ、ALLOC_ODT、ALLOC_ODT_ENTRYを一気に確認。ODT_ENTRYへの書き込み実施。SET_DAQ_PTR、WRITE_DAQを確認。この段階のDAQ listはDAQかSTIMかの利用方法の指定はしていない。
【XCP】最小構成のMBD事例 第2章 その204【AUTOSAR⑩】
AUTOSAR-XCPの動作確認開始。 XCPコマンドはPyXCPを使って実施。 XCP Basic、PyXCPで散々やったところなので巻き気味で推進。 一気にCONNECT、GET_STATUS、SYNCH、GET_COMM_MODE_INFOを実施。 当然ながら問題無く動作。 CAN回線ログも一緒に確認。
【XCP】最小構成のMBD事例 第2章 その203【AUTOSAR⑨】
Xcp_Cfg.cの作成したコードを確認。 DAQ、STIMで使うイベントチャンネルの定義がほとんど。 Online Calibrationで使用されるSegmentについても記載するパラメータがある。 アクセスするメモリ空間を疑似的に切り替える概念を実現。 今回は使用しないので、そういう概念があるのを認識程度に留める。
【XCP】最小構成のMBD事例 第2章 その202【AUTOSAR⑧】
AUTOSAR-XCPのコンフィグレーションはREADME.txtに説明あり。 Xcp_Cfg.hとXcp_Cfg.cを作成する必要あり。 Xcp_Cfg.hを作成。 README.txtに記載が無かった項目として以下がある。 XCP_PROTOCOL。 XCP_STANDALONE。 BYTE_ORDER。
【XCP】最小構成のMBD事例 第2章 その201【AUTOSAR⑦】
CanIfとかAUTOSAR-XCPから呼び出される関数群の辻褄合わせをmain.cで実施。 送信関数と送信完了割り込み、受信割り込み、エラー割り込み。 排他制御関数。 エラー通知関数。 main関数で初期化処理関連を実施。 これでやっとビルドが通った状態となる。
【XCP】最小構成のMBD事例 第2章 その200【AUTOSAR⑥】
AUTOSAR-XCPをビルドする上で排他同期等でWindowsAPIが必要となる。 しかしwindows.hが他の定義を競合することがある。 よってstub.cでラップ関数を定義して避けている。 マルチメディアタイマで1msコールバックを生成。 ECUの実装が1ms周期を起点に処理されることが多く、それを模擬してる。
【XCP】最小構成のMBD事例 第2章 その199【AUTOSAR⑤】
AUTOSAR-XCPをGithubからCloneしてきてソースコードを確認。 とりあえず、全部使う。 AUTOSAR仕様として必要そうなソースとヘッダを洗い出し。 TOPPERSプロジェクトのA-ComStackとATK2から頂戴する。 足りないかもしれないが、まずはこれでビルドを通してみる。
【XCP】最小構成のMBD事例 第2章 その198【AUTOSAR④】
AUTOSAR-XCP PCシミュレーションに向けてのロードマップを提示。 恒例の実験構成、環境、実験内容を提示。 実験構成の提示。 こちらもおなじみのVirtual CAN Busを使用した構成。 AUTOSAR-XCPのPCシミュレーション環境も恒例のVisual Studio 2017 express。
【XCP】最小構成のMBD事例 第2章 その197【AUTOSAR③】
AUTOSAR-XCPの機能範囲について説明。 純粋にXCP BWSを実現しているのみ。 よって、下位BSWのCanIfを実装する必要がある。 CanIfは以前、診断通信関連BSWであるCanTpのシミュレーションをしたときに作成してる。 微調整はあるかもしれないが、これを使いまわす予定。
【XCP】最小構成のMBD事例 第2章 その196【AUTOSAR②】
LGPLはライブラリ化すればライセンス汚染をある程度食い止められる。 しかし、完全に食い止められるわけではなくどうしてもリバースエンジニアリングを許容する条件は付く。 これは動的リンクであっても変わらない。 AUTOSARのXCP実装、STIMの実装を学べるという利点があるので、使ってみる方針で行く。
【XCP】最小構成のMBD事例 第2章 その195【AUTOSAR①】
XCP Basicとは別のXCPスレーブIPを見つけてきた。 その名はAUTOSAR-XCP。 以前やったCanTp、DCMと同じくAUTOSAR-BSWのXCP仕様に準拠したもの。 ライセンスがLGPL。 よって、条件によってはコード開示が必要になり、商用利用としては難しく場合がある。
【XCP】最小構成のMBD事例 第2章 その194【PyXCP⑯】
SET_MTAとDOWNLOAD以外のRAM書き換え方法はSTIM しかし、XCP BasicはSTIMは未対応。 XCP Basicに対してSTIM拡張をするかXCP Basic以外のXCPスレーブIPを探すか。 とりあえず後者の線でやってみる。 見つからなかったら諦めてSET_MTAとDOWNLOADで頑張る方向で。
【XCP】最小構成のMBD事例 第2章 その193【PyXCP⑮】
XCP BasicとPyXCPは微妙だった?ってことはない。 計測やちょっとしたキャリブレーションであれば問題無く使える。 HILSもどきと相性が悪いだけ。 オーバーヘッドを検討。 15msはSET_MTAとDOWNLOADの2回のコマンド発行分。 ここを何とかすればもう少しマシになりそう。
【XCP】最小構成のMBD事例 第2章 その192【PyXCP⑭】
DAQパケットを受信しながらSET_MTA、DOWNLOADのコマンド送信してみた。 一応動いた。 が、DAQパケットの吸い上げのリアルタイム性が若干悪い。 20~30[ms]程度の遅れがある。 Pythonでやる以上、やむを得ない問題ではあるが、もう少し手が無いか考える必要はありそう。
【XCP】最小構成のMBD事例 第2章 その191【PyXCP⑬】
PyXCPでDAQパケットを受信しながらSET_MTA、DOWNLOADのコマンド送信を行う実験。 XCP Basic側は問題なくできることは分かってるのでPyXCP側メインの実験。 一応PyXCP内コード的には大丈夫そう。 実験コードはDAPパケット受信ループ内で0.05秒周期でSET_MTA、DOWNLOAD発行。
【XCP】最小構成のMBD事例 第2章 その190【PyXCP⑫】
DAQパケットの取得方法の概要説明。 transport層に相当するクラスでdaqQueueが定義されている。 このdaqQueueに自動的にDAQパケットがキューイングされる仕組み。 上記仕組みはJSONコンフィグレーションのCAN_USE_DEFAULT_LISTENER trueでないと使えない点に注意。
【XCP】最小構成のMBD事例 第2章 その189【PyXCP⑪】
DAQ起動すべく以下のコマンドに相当するメソッドを実行。 SET_DAQ_LIST_MODE。 START_STOP_DAQ_LIST。 START_STOP_SYNCH。 狙い通りDAQ起動はした。 CAN回線上でDAQパケットが流れていることが確認できた。 しかし、PyXCP上でDAQパケットを確認する術が不明。
【XCP】最小構成のMBD事例 第2章 その188【PyXCP⑩】
ODT_ENTRYをnamedtupleを使ってデータ管理してみた。 今回は一個しかないのでほぼ効能はないが、ODT_ENTRYが増えてきた際には大きな効能が見込めそう。 実際にSET_DAQ_PTR、WRITE_DAQ実施。 問題なく動作。 毎回SET_DAQ_PTRを投げるようなコードになってるが、とりあえずOK。
【XCP】最小構成のMBD事例 第2章 その187【PyXCP⑨】
WRITE_DAQの前にODT_ENTRYのデータ管理の便利な方法について説明。 namedtupleと使う。 tupleは異なるデータを一組に管理する手法や構造。 namedtupleはtupleの各要素に明示的に名前を付けられるようにしたもの。 管理のし易さを見やすさの両方が得られる。
【XCP】最小構成のMBD事例 第2章 その186【PyXCP⑧】
DAQ listの構築を一気に実施した。 FREE_DAQ、ALLOC_DAQ、ALLOC_ODT、ALLOC_ODT_ENTRYを一気に実施。 以前XCP BasicでやったDAQ list構築に合わせた構成にしてある。 PyXCPのメソッド単位で隠蔽されていることもあり、かなり楽ちん。
【XCP】最小構成のMBD事例 第2章 その185【PyXCP⑦】
メモリアクセス系コマンドということでSET_MTA、DOWNLOAD、UPLOADを実施。 DOWNLOADの結果がUPLOADするまで分からないということと、一個ずつ試すがめんどいので一気に流した。 UPLOAD→DOWNLOAD→UPLOADの流れでverifyすることで読み書きが正常に行われていることが確認できた。
【XCP】最小構成のMBD事例 第2章 その184【PyXCP⑥】
SYNCHコマンドを投げた。 想定通りERR_CMD_SYNCHを受け取れた。 GET_COMM_MODE_INFOコマンドを投げた。 今回使用しないがinterleavedMode、masterBlockModeの有無や関連パラメータが返ってくる。 上記以外に適用しているXCP仕様Versionも取得可能。
【XCP】最小構成のMBD事例 第2章 その183【PyXCP⑤】
早速PyXCPでCONNECTとGET_STATUSのコマンドを投げて見た。 共に問題無く動作 該当メソッドの戻り値でレスポンスの詳細が取得できる。 かなり見やすい構造になっている。 GET_STATUSはレスポンス内容の性質上、DAQ起動中やCAL_PAGEのROM書き戻し完了待ちなどの確認使用されることが多い。
【XCP】最小構成のMBD事例 第2章 その182【PyXCP④】
コンフィグレーションパラメータ(JSON文字列)の作成と読み込みのコードを提示。 readConfigurationにStringIOを渡しているが、拡張子がjsonのファイル名を設定しておく必要あり。 コンフィグレーションを元にXCPマスターの生成。 コンフィグレーションを渡すことでXCPマスターが生成される。
【XCP】最小構成のMBD事例 第2章 その181【PyXCP③】
JSON文字列を再度確認。 それぞれのパラメータについて一気に説明。 使用できるCANインターフェースデバイスは多い。 有名どころは網羅されている。 トランポート層にSxIを指定できる。 SPI、SCI(UART)のことでPyXCPに於いてはCOMポートになる。 と言ってもそれほど利用シーンは無い。
【XCP】最小構成のMBD事例 第2章 その180【PyXCP②】
PyXCPを利用する上で必要なimportを列挙。 設定ファイルがJSONファイルを想定しており、Python内の文字列をファイル 認識されるためにio.StringIOもimport。 StringIOに引き渡すJSONを提示。 比較的自明なパラメータが多いが一部分かり難いものもあるので次回説明。
【XCP】最小構成のMBD事例 第2章 その179【PyXCP①】
Python-CANにXCPの上位プロトコルを載せたPythonLibraryが存在。 その名はそのまんまでPyXCP。 PyXCPのインストールはpip使えばOK。 pip install pyxcp。 PyXCPだけだと疎通確認も取れないからXCP BasicによるPCシミュレーション環境はかなり重要。
【XCP】最小構成のMBD事例 第2章 その178【XCP Basic㉜】
再度DAQパケットを確認。 XCPの一連のコマンド含めてCAN回線ログとして取得。 DAQパケットだけ抽出し、タイムスタンプを確認。 狙い通り10ms周期の送信周期になっていた。 ソースコード等はGithubに上げておいた。 Python側はJupyterNotebook形式。
「ブログリーダー」を活用して、KEIさんをフォローしませんか?
フーリエ変換には角周波数を扱うものと周波数を扱うものがある。角周波数と周波数の間には角度と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...
フーリエに積分公式は複素フーリエ級数と複素フーリエ係数から導出する。変換を想定した式に変換。複素指数関数との積と積分、総和を経由すると元に関数に戻るというイメージが重要。
AviUtlのセットアップと拡張編集Pluginの導入を行った。mp4ファイルの入力と出力の方法を説明。アニメーションgifの対応方法を説明。
分数は割り算の別表現として理解しやすく、逆数を掛けることで計算が簡単になる。これにより、小数の掛け算や割り算の理解が深まる。一次関数の数式をグラフにすることや、グラフから数式を導くことは、データのトレンド分析や物理現象の理解に役立つ。微分は関数の変化率を求める手法であり、数値微分を使って近似的に求めることができる。これにより、物理学や経済学など多くの分野で応用可能。
Youtube動画やブログ記事のアイキャッチ用に作成した、VOCEIVX(四国めたん、ずんだもん、春日部つむぎ)、AivisSpeech(Anneli)の画像たち。Stable Diffusionで生成&少しペン入れ&GIMPによる補正したものになります。
各種フーリエについてまとめてみた。いままでは級数→係数の順番でやっていたため、逆フーリエ変換→フーリエ変換の順番が自然。実際には「フーリエの積分公式を求める」ことになるが、これは逆フーリエ変換そのものである。
各種フーリエについてまとめてみた。いままでは級数→係数の順番でやっていたため、逆フーリエ変換→フーリエ変換の順番が自然。実際には「フーリエの積分公式を求める」ことになるが、これは逆フーリエ変換そのものである。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をScilabで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をPythonで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
最適化アルゴリズム モーメンタムを用いて分類の学習をMATLABで実現。 問題無く動作。 学習の収束が通常の勾配降下法よりも比較的早い。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 モーメンタムの動作イメージについて確認。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
勾配降下法の更新式を確認。 勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしていく。 最初は復習を兼ねて勾配降下法についても確認する。
モーメンタムを確認するプログラムの方針を確認。 以前の勾配降下法のプログラムをベースにする。 隠れ層のユニット数は4。 プログラムのフローを確認。 モーメンタム項とパラメータ更新が基本的な差分となる。
モーメンタムの動作イメージについて確認。 動作イメージの表現は難しい。 最初は大きく更新して、最適解が近いと小さく更新。 勾配降下法で言うところの学習率が可変と同義な動きになる。
モーメンタムの更新式について確認。 指数移動平均を利用して直近の値を重視する。 実際の指数移動平均とは異なっているので、その点は注意。
勾配降下法の動作イメージを確認。 学習率が大きい場合と小さい場合で挙動が変わる。 ちょうど良い学習率を人間の手で探す。 これにより、一般的なパラメータとは異なるハイパーパラメータというカテゴリになる。
今回改めてまじめに更新式を確認。 勾配降下法の更新式が一番シンプルなので今後の最適化アルゴリズムの更新式を見る際は比較対象になりやすい。
最適化アルゴリズムを取り扱う。 今回のネットワークだとさほど恩恵はないが知っていて損はない。 まずはモーメンタムから解説&実験をしてい 最初は復習を兼ねて勾配降下法についても確認する。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたPythonコードで分類を実施。 大きく2パターンの分類パタ やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたMATLABコードで分類を実施。 大きく2パターンの分類パターン やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたJuliaコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。
多層パーセプトロンの隠れ層のユニット数を2から4に変えたScilabコードで分類を実施。 大きく2パターンの分類パターンがある。 やや複雑な分類パターンが4ユニットにすることで出てきたもの。