一个姿态根据四条腿的转动角度表示。
pos(d1=0, d2=0, d3=0, d4=0, dur=0.75, dly=0, ofs=[0, 0, 0, 0], rev=False, inv=False) - 姿态函数
# 设置一个姿态范例
pos1 = pos(60, 60, -60, -60) # 表示姿态
bot.exec({ # 执行
n: [ pos1 ]
})
一个动作可以看作是由多个姿态连接而成。
# 趴下站起动作示例
pos1 = pos(-60, -60, 60, 60) # 姿态1
pos2 = pos(0, 0, 0, 0) # 姿态2
bot.exec({
n: [ pos2, pos1 ]
})
把动作封装成函数
# 趴下站起动作示例
def down_up():
return [
pos(0, 0, 0, 0),
pos(-60, -60, 60, 60)
]
bot.exec({
n: down_up()
})
一个组合动作可以看作是由多个动作连接而成。
def act1(): # 动作1 趴下站起
return [
pos(0, 0, 0, 0),
pos(-60, -60, 60, 60)
]
def act2(): # 动作2 收拢打开
return [
pos(-90, -90, 90, 90),
pos(-60, -60, 60, 60)
]
bot.exec({
n: act1() + act2()
})
# 将机器狗拿起 抬头低头 观察腿部变化
car.motion.start_rpy() # 开启角度积分
while True:
r, p, y = car.motion.rpy() # 获取三轴角度
if abs(p) > 5:
bot.exec({ n:[ pos(-90+p, -90+p, 90+p, 90+p, 0.2) ]}) # 腿部跟随俯仰角变化
else:
bot.exec({ n:[ pos(-90, -90, 90, 90, 0.2) ]})
sleep(0.1)
# 切换姿态示例 低头
bot.exec({
n: [ pos(ofs=ofs_fu) ]
})
内置动作的统一参数 (ofs=ofs_stand, rev=0, inv=0)
# 内置动作使用示例
bot.exec({ n: fuyang() }) # 俯仰
# 前进5步
bot.exec([
{ n: walk(), c:5 }
])
# 带方向修正的前进5步
twalk(5)
# 左转90度
t_walk_left(90)
动作默认是异步执行的,后面执行的动作会覆盖前面执行的动作,如需同步执行可以加上wait=True的参数
# 前进5步 然后俯仰
bot.exec([
{ n: walk(), c:5 }
], wait=True)
sleep(0.1) # 等待
bot.exec([
{ n: fuyang()}
])
# auto(callback, **kwargs) 动作姿态自适应函数
# 不带auto的动作按照默认姿态执行 带auto的动作会根据当前姿态自适应执行
bot.exec([
{ n: auto(walk, k=0.75), c:3 }
])
# bot.stop() 立即停止
# 行走1秒后停止
bot.exec([
{ n: walk(), c:10 }
])
sleep(1)
bot.stop()