【机器人】振动分析和控制工具之Bode图

Bode 图完整介绍

Bode 图由两个部分组成:

  1. 幅值图 (Magnitude Plot):描述系统对不同频率输入信号的增益大小(幅值响应)。
  2. 相位图 (Phase Plot):描述系统输出信号相对于输入信号的相位差。

Bode 图的横轴是频率,以对数刻度显示(单位:rad/s)。纵轴则分别显示幅值(以分贝 dBdB 为单位)和相位(以角度为单位)。


相位图的完整解释

什么是相位图

相位图表示系统输出信号相对于输入信号的相位差,反映了信号的延迟或超前行为。相位的单位是角度(°),常见的范围是 −360°,0°-360°, 0°−180°,180°-180°, 180°

相位图的特征
  1. 低频段

    • 在低频区域(频率接近 0),系统的相位通常接近 0° 或一个稳定值。
    • 表明此时系统几乎没有延迟,输出信号能较好地跟随输入信号。
  2. 中频段

    • 随着频率增加,相位开始下降。
    • 如果系统包含极点或零点,会导致相位快速变化,这通常对应于系统的特征频率(如谐振频率)。
  3. 高频段

    • 在高频区域,相位趋于一个负的稳定值(如 −90°-90°、−180°-180° 等),反映出系统对高频信号具有较大的延迟。
实际意义
  1. 信号延迟和超前

    • 相位的正值表示信号超前,负值表示信号延迟。
    • 控制系统中,如果相位延迟过大,可能导致系统不稳定。
  2. 系统动态行为

    • 相位的变化率和方向反映了系统在不同频率下的动态性能。例如,相位快速变化的区域可能是谐振频率或系统的重要特征点。
  3. 稳定性分析

    • 结合幅值图,可以计算增益裕度和相位裕度,判断闭环系统是否稳定。

幅值图的完整解释

什么是幅值图

幅值图描述系统对不同频率输入信号的放大或衰减程度。幅值通常以分贝 dBdB 为单位,其公式为:

其中 H(jω) 是系统的频率响应。

幅值图的特征
  1. 低频段

    • 在低频区域(频率接近 0),幅值通常较高,表示系统能很好地通过低频信号。
    • 如果系统是稳定的低通滤波器,此时幅值接近直流增益值(例如 0 dB 或其他值)。
  2. 中频段

    • 中频区域的幅值可能会出现一个峰值(如果系统存在谐振)。
    • 谐振频率对应幅值最大的位置。谐振频率由系统的阻尼比和自然频率决定。
  3. 高频段

    • 在高频区域,幅值通常下降,以一个固定的斜率递减(例如 -20 dB/decade 或 -40 dB/decade)。
    • 反映出系统对高频信号的衰减特性。
实际意义
  1. 频率选择性

    • 幅值图显示系统对不同频率信号的放大或衰减能力。通过观察幅值图,可以判断系统是低通、高通、带通还是带阻滤波器。
  2. 增益分析

    • 控制系统中,幅值图用于确定增益裕度,确保系统在反馈时的稳定性。
  3. 噪声抑制

    • 对高频噪声的衰减程度可通过高频段的幅值特性分析。
  4. 动态范围

    • 幅值图可以帮助理解系统能处理的最大和最小信号幅度范围。

结合相位图和幅值图的整体意义

  1. 系统特征频率

    • 幅值图中谐振峰值对应的频率,通常会在相位图中表现为相位快速变化的点。这些频率是系统的特征频率。
  2. 稳定性判断

    • 使用幅值图和相位图可以计算系统的增益裕度和相位裕度,判断闭环系统的稳定性。
    • 增益裕度:当相位为 -180° 时,幅值距离 0 dB 的距离。
    • 相位裕度:当幅值为 0 dB 时,相位距离 -180° 的距离。
  3. 滤波性能

    • 幅值图显示系统对不同频率信号的处理能力,相位图则补充了延迟和动态行为的分析。

总结

Bode 图是控制系统和信号处理领域中最常用的工具之一,提供了频域内关于系统增益和相位的全方位信息。它直观地展示了系统如何响应不同频率的输入信号,为稳定性分析、滤波器设计和控制器优化提供了重要依据。

代码摘抄

复制代码
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# Define the transfer function
# Example: Second-order system H(s) = ω_n^2 / (s^2 + 2ζω_ns + ω_n^2)

# Parameters for the system
zeta = 0.5  # Damping ratio (controls how oscillatory the system is)
omega_n = 10  # Natural frequency (rad/s), determines the frequency of oscillation

# Numerator and denominator of the transfer function
numerator = [omega_n**2]  # The numerator of the transfer function (constant gain)
denominator = [1, 2*zeta*omega_n, omega_n**2]  # The denominator (s^2 + 2ζω_ns + ω_n^2)

# Create the transfer function
# signal.TransferFunction represents the system in the Laplace domain
system = signal.TransferFunction(numerator, denominator)

# Frequency range for the Bode plot
frequencies = np.logspace(0, 2, 500)  # From 10^0 (1 rad/s) to 10^2 (100 rad/s), 500 points

# Compute the Bode plot data
w, mag, phase = signal.bode(system, frequencies)  # Get magnitude and phase responses

# Plot the Bode magnitude and phase
plt.figure(figsize=(10, 8))  # Set the figure size

# Magnitude plot
plt.subplot(2, 1, 1)  # First subplot: Magnitude
plt.semilogx(w, mag, color='orange')  # Logarithmic x-axis for frequency, y-axis in dB
plt.title('Bode Plot')  # Plot title
plt.ylabel('Magnitude (dB)')  # y-axis label
plt.grid(True, which='both', linestyle='--', linewidth=0.5)  # Add grid lines for better readability

# Phase plot
plt.subplot(2, 1, 2)  # Second subplot: Phase
plt.semilogx(w, phase, color='orange')  # Logarithmic x-axis for frequency, y-axis in degrees
plt.ylabel('Phase (degrees)')  # y-axis label
plt.xlabel('Frequency (rad/s)')  # x-axis label
plt.grid(True, which='both', linestyle='--', linewidth=0.5)  # Add grid lines for better readability

# Adjust layout to prevent overlap between subplots
plt.tight_layout()

# Display the plots
plt.show()

Key Points:

  1. System Definition:

    • The transfer function is defined as H(s)=ωn2s2+2ζωns+ωn2H(s) = \frac{\omega_n^2}{s^2 + 2\zeta\omega_ns + \omega_n^2}.
    • The numerator and denominator coefficients represent the system's dynamics.
  2. Frequency Range:

    • A logarithmic frequency range (logspace) is chosen to visualize behavior over multiple orders of magnitude.
  3. Bode Plot:

    • signal.bode computes the magnitude (in dB) and phase (in degrees) for the specified frequency range.
  4. Visualization:

    • Two subplots: one for magnitude and one for phase.
    • semilogx is used for a logarithmic x-axis to match standard Bode plot conventions.
  5. Customization:

    • Grid lines (grid) improve readability.
    • tight_layout ensures that the labels and titles don't overlap.

You can adjust the damping ratio (zeta), natural frequency (omega_n), or even replace the transfer function to analyze different systems. Let me know if you'd like further customization!

相关推荐
风合星语4 小时前
2026 机器人行业观察(一):现在入局机器人还来得及吗?——机会、门槛与技术人的切入点
网络·人工智能·机器人
willhu20086 小时前
ROS2:Microban 机器人仿真搭建
机器人
巨人网络通讯6 小时前
电话机器人有什么优缺点五款产品技术能力深度评测
机器人
拓维运动科技7 小时前
足式机器人环境适应性测试设备:从野外“碰运气”到实验室标准化考核的技术路径
机器人·六自由度运动模拟平台·足式机器人姿态稳定性验证设备·南京拓维运动·足式机器人复合环境模拟测试装置
深圳多奥智能一卡(码、脸)通系统7 小时前
AGV机器人 / AMR / 机器狗不同门类自动开门、过闸方案
机器人·agv·机器狗·门禁·梯控·门控·amr
DogDaoDao8 小时前
MotionWAM 深度解析:让视频世界模型跑进实时人形机器人全身控制
深度学习·机器人·大模型·音视频·人形机器人·视频大模型·motionwam
星云API|微信接口开发8 小时前
企业微信二次开发:外部群机器人如何实现消息自动收发与群聊识别
机器人·企业微信
Rocktech_ruixun19 小时前
机器人本地跑LLM大模型对主板硬件有什么要求?瑞迅科技RK3588/3568方案选型解析
人工智能·科技·嵌入式硬件·机器人·边缘计算
北京盟通科技官方账号21 小时前
高通 IQ-9075 部署 EC-Master 实战指南:环境构建与实时 Linux (RT) 系统烧录
人工智能·机器人·yocto·ethercat·ecmaster·盟通科技·rt kernel
kyle~1 天前
光流传感器
机器人·传感器