Introduction

OCS2 是一个 MPC 实时求解器 (SLQ/iLQR),依赖 Pinocchio 构建机器人动力学模型,采用 RViz 或者 RaiSim 验证 (Rollout)。

OCP Formulation -> RobotInterface

  • Cost
  • Dynamics
  • Rollout
  • Initialization

MpcRosInterface + MrtRosInterface

{MPC node} -> {MRT Dummy simulator Rollout w/ Visualization}

Demo: Legged Robot

Code Structure

Visulization

ROS Graph

RosReferenceManager 类的作用: Decorates ReferenceManager with ROS subscribers to receive ModeSchedule and TargetTrajectories through ROS messages.

SolverSynchronizedModule 类的作用: A Solver synchronized module is updated once before and once after a problem is solved.

四足机器人运动控制开源框架

mit

即是国内大多数机器人厂商所用方案.

eth

软件包 ocs2_legged_robot 子文件夹的功能模块

子文件夹 功能
command 键盘控制
common 常用功能
constraint 约束类型
cost 代价类型
dynamics 动力学模型 (by Pinocchio)
foot_planner 摆动腿规划
gait 步态设置
initialization 初始化
synchronized_module 优化器参数同步
visualization 可视化
ROS 节点图

Class List

  • LeggedRobotModeSequenceKeyboard: 检测用户指令更新步态改变 Switched Systems 的模式序列 (ModeSequence)
  • EndEffectorLinearConstraint: 足端位置/速度的线性约束
  • FrictionConeConstraint: 触地足端摩擦锥不等式约束
  • NormalVelocityConstraintCppAd: 摆动足端Z向速度(=摆动轨迹规划的Z向速度 LeggedRobotPreComputation::request)等式约束 (CppAd版)
  • ZeroForceConstraint: 摆动足端零地面反作用力等式约束
  • ZeroVelocityConstraintCppAd: 触地足端零速度等式约束 (CppAd版)
  • LeggedRobotStateInputQuadraticCost: 状态与输入的二次代价
  • LeggedRobotDynamicsAD: 动力学约束 (CppAd版)
  • CubicSpline: 三次样条曲线
  • SplineCpg: 左右摆动腿样条曲线 (CPG = Central Pattern Generator?)
  • SwingTrajectoryPlanner: 摆动轨迹规划器
  • GaitReceiver: 步态更新接收器 (A Solver synchronized module is updated once before and once after a problem is solved)
  • GaitSchedule: 步态定义类
  • LeggedRobotInitializer: 初始化类
  • SwitchedModelReferenceManager: Manages the ModeSchedule and the TargetTrajectories for switched systems
  • LeggedRobotVisualizer: 可视化类
  • LeggedRobotInterface: 实际的 MPC 实现接口
  • LeggedRobotPreComputation: Request callback are called before getting the value or approximation