Plotlyはオープンソースのグラフ表示するためのライブラリです。Python、R、JavaScriptなど様々なプログラミング言語で利用できます
今回はJavaScriptでサーバを使わずにPCだけで表示できるようにしました
(ここではネットワーク接続する方法を紹介していますが、ライブラリをダウンロードしてローカルで動作させることもできます)
FileWriteVar命令を使って構造体のデータをまるごとSDカードに保存して、ブラウザでグラフ表示する方法を紹介します
ここではアボの指令位置をプライマリ周期(2ms)で記録して軌跡を3Dグラフで表示してみます
どちらも構造体に記録しナログ入力のデータを0.2ms周期(5kHz)で記録して2Dグラフで表示する方法と
XYZ軸のサーてまるごとバイナリファイルでSDに保存します
これはアナログ入力データをグラフ表示した例です
これはXYZ軸のサーボの軌跡をグラフ表示した例です
サンプルの構造体にデータを収集してファイルに保存します
保存したファイルをサンプルのHTML「plot.html」をブラウザで表示します
HTMLの表示を確認したい方はサンプルをダウンロードして「plot.html」を開いてサンプルに入っているbinデータを読み出すことで確認できます

サンプルプロジェクトの「正弦波2D動作サンプル」を実行して構造体にデータを入れてファイルに保存
サンプルプロジェクトの「サーボ動作ログ」を実行して構造体にデータを入れてファイルに保存

サンプルに入っている「plot.html」をPCで開きます
SDカードに保存されたファイル"logyyyyMMddHHmmss.bin"をPCにコピーして、ファイルA:の[ファイルの選択]ボタンで開きます
下図は"plot2d_1.bin"と"plot2d_2.bin"のファイルを開いてX軸をIndexに指定したグラフです
さらにAとBの差分も表示できます
SDカードに保存されたファイル"logyyyyMMddHHmmss.bin"をPCにコピーして、ファイルA:の[ファイルの選択]ボタンで開きます
下図は"plot2d_1.bin"と"plot2d_2.bin"のファイルを開いてX軸をIndexに指定したグラフです
X,Y,Z軸のデータを収集したデータ0-9から選択して様々な表示が可能です
たとえば、サンプルではData9にIndexを入れているのでX軸をIndexにしてY軸を表示したいデータを選択して2D表示することもできます
また、ファイルBの比較するデータを読み込んで比較することも可能なようにしています


この"Plot.html"はChatGPTで作成してもらいました
興味のある方はChatGPTに変更箇所などを指定してこのPlot.htmlのHTML文をコピペして投げて見てください
構造体の内容を変更する場合はメンバとメンバの間にパディング(メモリ配置調整用の空き)が作られることがあります
バイナリエディタなどで構造体の各メンバの先頭位置とパディング(Padding)の位置を確認して調整してください

プロンプトで指示することでPlotlyのアニメーション機能を付けたりできます
ダウンロードされたときは利用規約に同意したものとみなします