第6课时:XGO双轮足姿态调整基础 | python中的类和面向对象编程概念
实验目标:
- 掌握双轮足姿态调整的基础。
- 学习如何将姿态控制与Python高级编程技巧结合使用。
- 理解并应用面向对象编程(OOP)的概念来控制双轮足。
课前预习:
- 对Python中的类和对象有一定的理解。可以参考此文章教学何为python中的类和对象?
实验步骤与代码:
- 机身姿态调整
- 使用
rider_roll方法 设置rider 的机身左右倾斜角度(roll) 。
- 使用
from xgolib import XGO
import time
rider = XGO("xgorider")
# 设置机身向右倾斜 15°
rider.rider_roll(15)
time.sleep(2)
# 恢复水平状态
rider.rider_roll(0)
time.sleep(2)
# 设置机身向左倾斜 15°
rider.rider_roll(-15)
time.sleep(2)
# 恢复水平状态
rider.rider_roll(0)
- 机身周期左右晃动
- 使用
rider_periodic_roll方法让机身以固定周期持续左右摇摆 。
- 使用
# 开始周期性左右摇摆,每次周期 1.2 秒
rider.rider_periodic_roll(1.2)
time.sleep(3) # 摇摆一段时间
# 停止摇摆
rider.rider_periodic_roll(0)
- 类与对象封装动作逻辑
- 我们将上面的功能封装成一个类,方便复用和组合动作:
class RiderTrick:
def __init__(self, robot):
self.robot = robot # 存储机器人对象
# 单次 roll 调整
def roll_demo(self):
self.robot.rider_roll(15)
time.sleep(1)
self.robot.rider_roll(-15)
time.sleep(1)
self.robot.rider_roll(0)
# 周期左右摇摆
def periodic_roll_demo(self, period=1.2, duration=3):
self.robot.rider_periodic_roll(period)
time.sleep(duration)
self.robot.rider_periodic_roll(0)
# 组合表演动作
def full_show(self):
self.roll_demo()
self.periodic_roll_demo(period=1.2, duration=3)
# 使用类创建对象并执行动作
if __name__ == "__main__":
rider = XGO("xgorider") # 创建机器人对象
show = RiderTrick(rider) # 创建表演类对象
show.full_show() # 执行完整动作流程
实验说明:
- 本实验通过
rider_roll()方法调整机器人机身的倾斜角度,使用不同角度进行机器人倾斜与恢复水平状态的动作演示。 - 通过
rider_periodic_roll()方法控制机器人周期性地左右摇摆,可以设置摇摆的周期与持续时间,用于演示机器人自如的动态平衡控制。 RiderTrick类封装了单次调整与周期性摇摆的动作,通过roll_demo()和periodic_roll_demo()方法提供单独动作执行的功能,并通过full_show()方法实现组合动作的连续表演。- 在
full_show()方法中,机器人首先执行单次的左右倾斜动作,然后进行周期性的摇摆,模拟机器人动态展示。 - 每次执行动作后使用
time.sleep()函数来控制动作之间的时间间隔,便于观察每个动作的执行过程,确保动作的顺畅展示。
课后作业:
- 修改
RiderTrick类,添加新的方法来控制双轮足的位姿变化。 - 编写一个脚本,使双轮足执行一个复杂的动作序列,如先向前移动,然后调整姿态,最后进行周期性运动。
通过本课时的学习,学生应该能够掌握如何使用面向对象的方法来控制双轮足的位姿,并理解如何将Python的高级编程技巧应用到实际的项目中。
