OCS2 求解器入门
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 systemsLeggedRobotVisualizer
: 可视化类LeggedRobotInterface
: 实际的 MPC 实现接口LeggedRobotPreComputation
: Request callback are called before getting the value or approximation