RMVL  2.5.0-dev
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到

机器人运动学模型、状态发布、轨迹规划等功能扩展 更多...

机器人功能扩展 的协作图:

class  rm::lpss::ctl::ControlLawBase
 【控制律组件】控制律基类,供 RobotController 组合调用 更多...
class  rm::lpss::ctl::UnitTF
 【控制律组件】单位传递函数, \(G(s)=1\) 更多...
class  rm::lpss::ctl::FeedForward
 【控制律组件】离散动态全补偿的前馈环节,适合在已知系统模型或有外部扰动补偿需求时使用 更多...
class  rm::lpss::ctl::PID
 【控制律组件】单环离散比例-积分-微分控制器 更多...
class  rm::lpss::RobotPlanner
 机器人规划模块,提供 URDF 解析、正/逆运动学求解、轨迹规划等运动学功能 更多...
class  rm::lpss::RobotController
 机器人控制模块 更多...
class  rm::lpss::RobotStatePublisher
 机器人状态发布者,周期性发布动态 TF、静态 TF 和 URDF 消息 更多...
class  rm::lpss::async::RobotStatePublisher
 异步机器人状态发布者,基于定时器周期性发布动态 TF、静态 TF 和 URDF 消息 更多...

类型定义

using rm::lpss::ctl::InSampleMapping = void (*)(const msg::JointState &d_in, const msg::JointState &fb_in, std::vector<double> &d_out, std::vector<double> &fb_out) noexcept
 输入采样映射,定义了如何从 JointState 中提取向量供控制律计算使用
using rm::lpss::ctl::OutSampleMapping = void (*)(std::vector<double> cmd_in, msg::JointState &cmd_out) noexcept
 输出采样映射,定义了如何将控制律计算结果写回 JointState 输出

枚举

enum class  rm::lpss::ctl::ControlStatus : uint8_t { rm::lpss::ctl::ControlStatus::Ok = 0 , rm::lpss::ctl::ControlStatus::InvalidInput , rm::lpss::ctl::ControlStatus::Diverged , rm::lpss::ctl::ControlStatus::Failed }
 控制律计算状态 更多...

函数

void rm::lpss::ctl::basic_pos_imapping (const msg::JointState &d_in, const msg::JointState &fb_in, std::vector< double > &d_out, std::vector< double > &fb_out) noexcept
 基础位置采样输入映射,从 position 字段提取
void rm::lpss::ctl::basic_vel_imapping (const msg::JointState &d_in, const msg::JointState &fb_in, std::vector< double > &d_out, std::vector< double > &fb_out) noexcept
 基础速度采样输入映射,从 velocity 字段提取
void rm::lpss::ctl::basic_eff_imapping (const msg::JointState &d_in, const msg::JointState &fb_in, std::vector< double > &d_out, std::vector< double > &fb_out) noexcept
 基础力矩采样输入映射,从 effort 字段提取
void rm::lpss::ctl::basic_pos_omapping (std::vector< double > cmd_in, msg::JointState &cmd_out) noexcept
 基础位置采样输出映射,将结果写回 position 字段
void rm::lpss::ctl::basic_vel_omapping (std::vector< double > cmd_in, msg::JointState &cmd_out) noexcept
 基础速度采样输出映射,将结果写回 velocity 字段
void rm::lpss::ctl::basic_eff_omapping (std::vector< double > cmd_in, msg::JointState &cmd_out) noexcept
 基础力矩采样输出映射,将结果写回 effort 字段

详细描述

机器人运动学模型、状态发布、轨迹规划等功能扩展

该模块提供了

  • 机器人运动学模型规划器 lpss::RobotPlanner ,支持 URDF 解析、正/逆运动学求解、轨迹规划等功能
  • 机器人状态发布者,通过传入 lpss::RobotPlanner 对象和 lpss::Node (或 lpss::async::Node )节点对象周期性发布动态 TF、静态 TF、URDF 和 JointTrajectory 消息,一般在调试时供其他模块订阅使用
  • 相关消息类型转换函数,如四元数乘法、位姿变换、复合 SE(3) 变换等
    机器人功能扩展模块示意图

类型定义说明

◆ InSampleMapping

using rm::lpss::ctl::InSampleMapping = void (*)(const msg::JointState &d_in, const msg::JointState &fb_in, std::vector<double> &d_out, std::vector<double> &fb_out) noexcept

#include <rmvl/lpss/ctl/base.hpp>

输入采样映射,定义了如何从 JointState 中提取向量供控制律计算使用

参数
[in]d_inmsg::JointState 表示的期望值
[in]fb_inmsg::JointState 表示的反馈值
[out]d_outstd::vector 表示的期望值,供控制律计算使用
[out]fb_outstd::vector 表示的反馈值,供控制律计算使用

用户可自定义此类函数实现复杂的提取逻辑,如多字段融合等

◆ OutSampleMapping

using rm::lpss::ctl::OutSampleMapping = void (*)(std::vector<double> cmd_in, msg::JointState &cmd_out) noexcept

#include <rmvl/lpss/ctl/base.hpp>

输出采样映射,定义了如何将控制律计算结果写回 JointState 输出

参数
[in]cmd_instd::vector 表示的控制量,这是控制律的直接输出
[out]cmd_outmsg::JointState 表示的控制量,供用户使用

枚举类型说明

◆ ControlStatus

enum class rm::lpss::ctl::ControlStatus : uint8_t
strong

#include <rmvl/lpss/ctl/base.hpp>

控制律计算状态

枚举值
Ok 

本周期计算成功

InvalidInput 

输入维度或数据非法

Diverged 

计算过程发散

Failed 

其他失败

函数说明

◆ basic_eff_imapping()

void rm::lpss::ctl::basic_eff_imapping ( const msg::JointState & d_in,
const msg::JointState & fb_in,
std::vector< double > & d_out,
std::vector< double > & fb_out )
noexcept

#include <rmvl/lpss/ctl/base.hpp>

基础力矩采样输入映射,从 effort 字段提取

◆ basic_eff_omapping()

void rm::lpss::ctl::basic_eff_omapping ( std::vector< double > cmd_in,
msg::JointState & cmd_out )
noexcept

#include <rmvl/lpss/ctl/base.hpp>

基础力矩采样输出映射,将结果写回 effort 字段

◆ basic_pos_imapping()

void rm::lpss::ctl::basic_pos_imapping ( const msg::JointState & d_in,
const msg::JointState & fb_in,
std::vector< double > & d_out,
std::vector< double > & fb_out )
noexcept

#include <rmvl/lpss/ctl/base.hpp>

基础位置采样输入映射,从 position 字段提取

◆ basic_pos_omapping()

void rm::lpss::ctl::basic_pos_omapping ( std::vector< double > cmd_in,
msg::JointState & cmd_out )
noexcept

#include <rmvl/lpss/ctl/base.hpp>

基础位置采样输出映射,将结果写回 position 字段

◆ basic_vel_imapping()

void rm::lpss::ctl::basic_vel_imapping ( const msg::JointState & d_in,
const msg::JointState & fb_in,
std::vector< double > & d_out,
std::vector< double > & fb_out )
noexcept

#include <rmvl/lpss/ctl/base.hpp>

基础速度采样输入映射,从 velocity 字段提取

◆ basic_vel_omapping()

void rm::lpss::ctl::basic_vel_omapping ( std::vector< double > cmd_in,
msg::JointState & cmd_out )
noexcept

#include <rmvl/lpss/ctl/base.hpp>

基础速度采样输出映射,将结果写回 velocity 字段