斯坦福四足机器人
项目终止通知
感谢过去5年来大家对这个项目的关注和支持!
我们正在努力开发新版本Pupper v3,因此决定停止对本项目(Pupper v1)的支持。感谢您的理解!Pupper v3将完全开源,其制作说明将在未来几个月内发布。
Pupper v3主要规格
- 强劲的400W GIM4305无刷电机
- 树莓派5
- 开箱即用的强化学习运动策略
- Luxonis SR深度相机
- 用于调试和面部表情的LCD屏幕
- 物料清单约1000美元
概述
本仓库包含斯坦福Pupper和斯坦福Woofer的代码,这两款基于树莓派的四足机器人可以小跑、行走和跳跃。
Pupper运行视频:https://youtu.be/NIjodHA78UE
项目页面:https://stanfordstudentrobotics.org/pupper
文档和制作指南:https://pupper.readthedocs.io/en/latest/
工作原理
主程序是本目录下的run_robot.py
。机器人代码以循环方式运行,由操纵杆接口、控制器和硬件接口协调控制其行为。
操纵杆接口负责从UDP套接字读取操纵杆输入,并将其转换为通用的机器人command
类型。另一个程序joystick.py
发布这些UDP消息,负责通过蓝牙读取PS4控制器的输入。控制器完成大部分工作,在不同状态(小跑、行走、休息等)之间切换并生成舵机位置目标。下图详细展示了控制器模型。代码的第三个组件是硬件接口,它将控制器的位置目标转换为PWM占空比,然后传递给pigpiod
的Python绑定,后者在软件中生成PWM信号并将这些信号发送到连接在树莓派上的电机。
该图展示了机器人控制器的细节。其中包含四个主要组件:步态调度器(也称步态控制器)、支撑控制器、摆动控制器和逆运动学模型。
步态调度器负责规划在任何给定时间哪些足部应该在地面上(支撑),哪些应该向前移动到下一步(摆动)。例如,在小跑时,对角线对的腿同步移动,在支撑和摆动之间交替。如图所示,步态调度器可以被视为每条腿的指挥,随时间推移在支撑和摆动之间切换。
支撑控制器控制地面上的足部,实际上相当简单。它查看期望的机器人速度,然后为这些支撑足生成一个相对于身体的目标速度,方向与期望速度相反。它还包括转向,在这种情况下,它会以与期望身体旋转相反的方向旋转足部。
摆动控制器接管刚刚完成支撑阶段的足部,并将它们带到下一个着地位置。着地位置的选择使得足部在摆动阶段向前移动的距离与在支撑阶段向后移动的距离相同。例如,如果在支撑阶段足部以-0.4m/s的速度向后移动(以实现+0.4m/s的身体速度),且支撑阶段持续0.5秒,那么我们知道足部将向后移动-0.20m。摆动控制器随后将足部向前移动0.20m,使足部回到起始位置。你可以想象,如果摆动控制器只将腿向前移动0.15m,那么每一步足部都会越来越落后于身体-0.05m。
支撑和摆动控制器都会为足部生成相对于身体质心的笛卡尔坐标目标位置。在支撑和摆动规划中使用笛卡尔坐标很方便,但现在我们需要将它们转换为电机角度。这是通过使用逆运动学模型来完成的,该模型在笛卡尔身体坐标和电机角度之间进行映射。这些电机角度,也称为关节角度,然后被填入state
变量并由模型返回。
如何制作Pupper
主要文档:https://pupper.readthedocs.io/en/latest/
你可以在这个网站上找到物料清单、预制套件购买选项、组装说明、软件安装等信息。
帮助
- 欢迎提出问题 (https://github.com/stanfordroboticsclub/StanfordQuadruped/issues/new/choose) 或发邮件至 nathankau [at] stanford [dot] edu
- 我们还建立了一个Google群组:https://groups.google.com/forum/#!forum/stanford-quadrupeds