小龟机器狗Python手册

如何设置姿态?

一个姿态根据四条腿的转动角度表示。

pos(d1=0, d2=0, d3=0, d4=0, dur=0.75, dly=0, ofs=[0, 0, 0, 0], rev=False, inv=False) - 姿态函数

return 一个表示姿态的列表
# 设置一个姿态范例
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()