已知倒立摆的轨迹为theta,dot_theta,根据gym环境中的pendulum.v1,画出倒立摆动态图,写出完整的python代码
时间: 2024-09-16 18:01:13 浏览: 40
在Gym环境中,Pendulum-v1是一个经典的模拟物理系统,用于演示控制问题,其中包含了一个单自由度的倒立摆。为了可视化倒立摆的动态轨迹,我们可以使用matplotlib库来绘制角度θ(θ)和角速度(dot_theta)随时间的变化。以下是一个简单的Python代码示例:
```python
import gym
import numpy as np
from matplotlib import pyplot as plt
# 初始化环境
env = gym.make('Pendulum-v0')
# 运行并收集数据 (这里假设你已经运行了足够的步数)
num_episodes = 100 # 根据需要设置
obs = []
actions = []
for episode in range(num_episodes):
obs_episode, _, done, _ = env.step(env.action_space.sample()) # 每次随机行动
obs.append(obs_episode[0]) # 角度θ
actions.append(obs_episode[1]) # 角速度dot_theta
# 将numpy数组转换为列表便于处理
theta = [x[0] for x in obs]
dot_theta = [x[1] for x in obs]
# 创建时间轴
t = np.arange(len(theta))
# 绘制动态图
plt.figure(figsize=(10, 6))
plt.plot(t, theta, label='Theta')
plt.plot(t, dot_theta, label='Dot_Theta')
plt.title('Pendulum Dynamics - Theta vs Time')
plt.xlabel('Time Steps')
plt.ylabel('Angle and Angular Velocity')
plt.legend()
plt.grid(True)
plt.show()
# 清理资源
env.close()
```
这段代码首先从`gym.make('Pendulum-v0')`加载Pendulum-v1环境,然后通过多次随机动作和观察获取角度和角速度数据。最后,使用matplotlib将数据绘制成折线图。
注意,实际运行时可能需要调整`num_episodes`来获得足够的数据,并确保在完成每个episode之后关闭环境以释放资源。
阅读全文