toppers / hakoniwa-drone-education

This repository is designed to provide a clear, educational framework for controlling drones using the Hakoniwa Drone Simulator.
3 stars 1 forks source link

システム同定 #16

Open tmori opened 3 days ago

tmori commented 3 days ago

1. Chirp信号の生成

まず、scipy.signalを使ってChirp信号を生成します。この信号を、箱庭ドローンシミュレータの目標値として使用するために、シミュレーション時間と同期させます。

from scipy.signal import chirp
import numpy as np

# シミュレーション時間に合わせた時間ベクトルを生成
t = np.linspace(0, 10, 1000)  # 例: 0から10秒、1000サンプル

# Chirp信号の生成
chirp_signal = chirp(t, f0=0.1, f1=5, t1=10, method='linear')

2. シミュレーションへのChirp信号の入力

生成したChirp信号を箱庭ドローンシミュレータの目標値(例: 目標速度)として使用し、シミュレーション時間に同期して逐次入力します。この部分はシミュレータ側の設定で対応可能とのことなので、具体的な実装方法はそのシミュレータのインターフェースに基づいています。

3. 出力データの取得

シミュレーション実行中に、目標値(Chirp信号)に対応する実際の速度などの出力データを取得します。これにより、入力と出力の両方のデータが揃います。

4. ボード線図や位相線図の計算

次に、取得した入力(Chirp信号)と出力(シミュレータからの速度データ)を使って、controlscipy.signalでボード線図や位相線図を描画します。

import control as ctrl
import matplotlib.pyplot as plt

# シミュレーションで得た出力データ(例:実際の速度データ)
# 入力データ(Chirp信号)とシミュレーションからの出力データを取得
output_signal = np.random.randn(len(t))  # 擬似データとしての出力信号

# ボード線図の生成
sys_id = ctrl.tf(output_signal, chirp_signal)  # 伝達関数として定義
mag, phase, omega = ctrl.bode_plot(sys_id)

# プロットの表示
plt.show()

まとめ

この手順を踏むことで、生成したChirp信号を箱庭ドローンシミュレータの目標値として入力し、実際の出力データを基にボード線図や位相線図を生成できます。controlライブラリを使って、このプロセスを効率的に実行できるため、システムの周波数応答を解析するのに非常に効果的です。

必要なPythonライブラリや計算方法は、十分にサポートされているので、問題なく実現可能です。