Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

システム同定 #16

Open
Tracked by #1
tmori opened this issue Oct 2, 2024 · 0 comments
Open
Tracked by #1

システム同定 #16

tmori opened this issue Oct 2, 2024 · 0 comments

Comments

@tmori
Copy link
Contributor

tmori commented Oct 2, 2024

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ライブラリや計算方法は、十分にサポートされているので、問題なく実現可能です。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant