メインコンテンツへ移動
AIチュートリアル

PythonとStreamlitでインタラクティブなロボットフリート分析ダッシュボードを構築する

ロボットフリート分析プロジェクトで、Python、Pandas、NumPy、MySQL、Plotly、Streamlitを組み合わせ、インタラクティブなダッシュボードでフリートの状態を監視し、ロボットを比較し、障害を分析し、リソースを追跡して、運用上のリスクを特定する方法を学びます。

PythonとStreamlitでインタラクティブなロボットフリート分析ダッシュボードを構築する

Robot Fleet Analyticsの概要

Robot Fleet Analyticsは、自律型ロボットフリートのパフォーマンスを監視・評価するためのインタラクティブダッシュボードです。MySQLに保存された運用記録を、フィルタリング可能な指標、インタラクティブなチャート、運用上の洞察へと変換します。

このプロジェクトでは、タスクの実行状況、故障、移動距離、バッテリー消費量、タスク完了時間、ダウンタイムなどのデータを扱います。これらの指標をまとめることで、チームはフリートの信頼性を評価し、ボトルネックを発見し、リスクの高いロボットや場所を特定できます。

アプリケーションの仕組み

このアプリケーションは、シンプルな分析パイプラインに沿って動作します。

  1. 運用記録をMySQLデータベースに保存します。
  2. Pythonアプリケーションがロボット運用データをクエリします。
  3. Pandasが取得したレコードを処理・集計します。
  4. NumPyが、バッテリー消費量の傾向計算などの数値分析を支援します。
  5. Streamlitがインタラクティブなダッシュボードインターフェースを提供します。
  6. Plotlyがフリート単位およびロボット単位の分析用インタラクティブチャートを描画します。

ユーザーは、日付範囲、ロボット、場所、タスク種別でダッシュボードをフィルタリングできます。これらの選択を変更すると、KPIと可視化が動的に更新されます。

ダッシュボードの主な領域

フリート概要

フリート概要では、現在のパフォーマンスを大局的に把握できます。稼働中のロボット数、実行タスク数、成功率と故障率、平均タスク完了時間、フリートの信頼性、総移動距離、総ダウンタイム、平均バッテリー使用量が含まれます。

ロボットパフォーマンス

ロボット単位で比較することで、パフォーマンスの高い機体や、調査が必要な機体を特定できます。ダッシュボードでは、タスク故障率、平均完了時間、総ダウンタイム、タスク数、故障数を比較します。

運用分析

運用分析では、フリート全体の傾向を把握できます。月別のタスク故障率、場所別の故障分析、タスク実行の傾向が含まれます。

リソース効率

リソースセクションでは、移動距離とバッテリー消費量の関係を分析します。また、NumPyの線形回帰を用いて算出したバッテリー消費量の傾向や、タスク種別ごとの故障率分析も含まれます。

フリートの例外

ロボットは、観測されたタスク故障率に基づき、3つの例外レベルに分類されます。NORMAL、WATCH、ATTENTIONです。これらの分類により、運用レビューの優先順位を付けやすくなります。

運用上の洞察

ダッシュボードでは、最もリスクの高いロボット、最もリスクの高い場所、最もパフォーマンスの高いロボットを示します。また、故障率、ダウンタイム、平均タスク実行時間も表示し、迅速な調査を支援します。

インストールとセットアップ

READMEでは、Python、Streamlit、Pandas、NumPy、MySQL、MySQL Connector/Python、Plotlyを主要な技術として挙げています。リポジトリの正確なエントリーポイントのファイル名とデータベース設定形式は指定されていないため、必要なコマンドと接続設定はプロジェクトファイルで確認してください。

  1. リポジトリをクローンまたはダウンロードします。
  2. Python仮想環境を作成して有効化します。
  3. プロジェクトで指定されている依存関係をインストールします。一般的な環境では、streamlit、pandas、numpy、mysql-connector-python、plotlyなどのパッケージが必要です。
  4. アプリケーションが想定するロボット運用データを含むMySQLデータベースを準備します。
  5. リポジトリで指定された方法(設定変数やStreamlit secretsなど)を使用して、アプリケーションのデータベース接続を設定します。
  6. プロジェクトで指定されたStreamlitのエントリーポイントを起動します。

一般的なStreamlitの起動コマンドは次の形式です。app.pyは、リポジトリの実際のエントリーポイントファイルに置き換えてください。

streamlit run app.py

本番環境のデータベース認証情報をアプリケーションのソースコードにハードコードしないでください。リポジトリがサポートする設定方法を使用し、認証情報をバージョン管理の対象外にしてください。

ダッシュボードの基本操作

1. フリート全体のビューから開始する

アプリケーションを起動したら、概要KPIを確認して現在のフリートの状態を把握します。成功率、故障率、平均完了時間、ダウンタイム、移動距離、バッテリー使用量に特に注目してください。

2. フィルターで分析を絞り込む

日付範囲を使用して、異なる運用期間を比較します。次に、特定のロボット、場所、タスク種別を選択し、フリート全体の概要から対象を絞った調査へ移行します。ダッシュボードは動的に更新されるため、チャートとKPIには選択したフィルターの組み合わせが反映されます。

3. 個々のロボットを比較する

ロボットパフォーマンスセクションで、故障率、タスク数、故障数、ダウンタイム、完了時間を比較します。故障率が高く、ダウンタイムも大きいロボットは、より詳細な運用レビューの対象になる可能性があります。

4. 場所とタスク種別を調査する

場所別の故障分析により、ロボットが繰り返し問題に遭遇するエリアを特定できます。タスク種別ごとの故障率から、特定の作業分類が信頼性の低下と関連しているかどうかを確認できます。

5. リソース間の関係を確認する

移動距離とバッテリー消費量を併せて確認します。これらの指標の関係から、異常なエネルギー使用量を検出したり、運用距離がバッテリー需要に与える影響を把握したりできます。

分析ワークフローの例

実際の調査は、次のような流れで進められます。

  1. 対象期間を含む日付範囲を設定します。
  2. フリート全体の成功率と失敗率を確認します。
  3. WATCH または ATTENTION カテゴリのロボットを特定します。
  4. 該当するロボットを、停止時間、タスク量、平均完了時間で比較します。
  5. 場所で絞り込み、失敗が特定のエリアに集中しているか確認します。
  6. タスクタイプで絞り込み、特定の作業が失敗の原因になっていないか確認します。
  7. リソース効率について結論を出す前に、走行距離とバッテリー使用量を比較します。

分析のための高度なヒント

1つのKPIに頼らず、複数の指標を組み合わせる

タスク失敗率は重要ですが、タスク量、停止時間、平均完了時間と併せて解釈する必要があります。タスク数が多いロボットは、使用頻度の低いロボットより自然に失敗件数が多くなる可能性があるため、率と件数を合わせて確認すると、より適切な文脈を把握できます。

フィルターを使って運用パターンを特定する

まず広い日付範囲から始め、ロボット、場所、タスクタイプの順にデータを絞り込みます。この方法により、フリート全体の問題と、特定の運用状況に関連する問題を区別できます。

運用状況を踏まえてバッテリーの傾向を解釈する

ダッシュボードでは、NumPyの線形回帰を使用してバッテリー消費の傾向を算出しています。これは完全な説明ではなく分析上のシグナルとして扱ってください。走行距離、タスクタイプ、ロボットの稼働量、運用場所などが、バッテリー使用量に影響する可能性があります。

例外カテゴリに優先順位を付ける

NORMAL、WATCH、ATTENTION カテゴリを、トリアージの仕組みとして使用します。まず ATTENTION のロボットを調査し、その後、失敗パターンを場所やタスクタイプの結果と比較して、考えられる原因を特定します。

探索中にPlotlyのインタラクションを活用する

Plotlyの可視化は、インタラクティブな探索に適しています。グラフ要素にカーソルを合わせ、カテゴリを比較し、各グラフを個別に確認するのではなく、ダッシュボードのフィルターを組み合わせて使用します。

テクノロジーの役割

  • Python: アプリケーションおよび分析ロジック。
  • Streamlit: インタラクティブなダッシュボードインターフェース。
  • Pandas: データ処理および集計。
  • NumPy: 数値分析および傾向の算出。
  • MySQL: 運用データの保存。
  • MySQL Connector/Python: データベース接続。
  • Plotly: インタラクティブなデータ可視化。

まとめ

Robot Fleet Analyticsは、自律走行フリートのパフォーマンスを把握するための統合ワークスペースを提供します。MySQL、Python、Pandas、NumPy、Plotly、Streamlitで構成されたアーキテクチャにより、全体的な監視から詳細な調査まで対応できます。動的なフィルターと、信頼性、効率、停止時間、例外に関する指標を組み合わせることで、チームはロボットの生データから、より明確な運用上の意思決定へとつなげられます。