OCS2 入门教程(四)- 机器人示例

news2024/12/24 1:59:14

系列文章目录

 


前言

 

OCS2 包含多个机器人示例。我们在此简要讨论每个示例的主要特点。

System

State Dim.

Input Dim.

Constrained

Caching

Double Integrator

2

1

No

No

Cartpole

4

1

Yes

No

Ballbot

10

3

No

No

Quadrotor

12

4

No

No

Mobile Manipulator

6-13

6-13

Yes

Yes / No

Legged Robot

24

24

Yes

No

对于所有这些机器人示例,有两个独立的软件包:

  • ocs2_<robot>: 提供机器人专用 MPC 实现库。
  • ocs2_<robot>_ros: 用 ROS 封装 MPC 实现,以定义 ROS 节点。

 


 

一、Double Integrator

        双积分器示例是我们最简单的问题。它模拟了一个沿 x 方向移动的一维点质量。模型是线性的,成本函数是二次函数。目标点通过参考管理器模块设置为二次成本。

# Build the example
catkin build ocs2_double_integrator_ros
# Source workspace
# Do not forget to change <...> parts
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash

# Launch the example
roslaunch ocs2_double_integrator_ros double_integrator.launch

4d65ad6ff99145ff80f45613318b1f52.gif 

二、Cartpole 

        推车杆的例子是一个典型的控制问题,一根杆子通过一个无驱动的接头连接到一辆小车上。小车沿着无摩擦轨道移动。目标是在遵守输入限制的前提下,通过沿轨道加速或减速小车,使摆锤从右下方位置开始摆动起来并保持平衡。 

# Build the example
catkin build ocs2_cartpole_ros
# Source workspace
# Do not forget to change <...> parts
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash

# Launch the example
roslaunch ocs2_cartpole_ros cartpole.launch

3941b965730740c49f74cccd613950cf.gif 

三、Ballbot

        Ballbot 是一个 5DoF 系统。该平台是一个扭矩控制的全向机器人,通过三个全向轮在一个球上保持平衡。该系统具有非线性动力学特性,并表现出非最小相位行为。系统动力学以 Ballbot 的前向动力学为基础,通过自动微分计算流量图的线性近似值。任务目标是根据用户指令控制机器人的 XY 位置和偏航。 

# Build the example
catkin build ocs2_ballbot_ros
# Source workspace
# Do not forget to change <...> parts
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash

# Launch the example
roslaunch ocs2_ballbot_ros ballbot.launch

ec8f5d91ede9453bb86fa6bf8861fdd9.gif 

四、Quadrotor

        四旋翼机器人示例是一个 6DoF 系统。平台建模为浮动基座、刚体动力学、三维力矩和机器人法线方向的一维力控制。系统动力学及其导数均由代码生成。本示例旨在跟踪用户指令,该指令定义为四旋翼机器人的三维位置和偏航。 

# Build the example
catkin build ocs2_quadrotor_ros
# Source workspace
# Do not forget to change <...> parts
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash

# Launch the example
roslaunch ocs2_quadrotor_ros quadrotor.launch

81e7c705c1bd47ab9af13f7723723c0c.gif 

五、Mobile Manipulator

        移动机械手示例是一个全运动学问题。模型包括一个 6DOF 机械臂和移动底座的 2D 位置和航向。控制输入为机械臂的 6 个关节速度以及底座的前进速度和旋转速度。任务目标是跟踪 6DoF 末端执行器姿势。关节位置和速度限制包含在最优控制问题的约束条件中。避免自碰撞是根据 URDF 模型中的碰撞体和避免碰撞约束来实现的(参见 ocs2_self_collision)。

注:本例实现了 MPC 的缓存和非缓存变体,可通过配置文件中的 usePreComputation 标志进行选择。

        系统模型通过解析 URDF 和任务文件确定。目前支持以下系统模型:

  • 默认(值:0): 通过解析 URDF 获得的默认系统模型。
  • 驱动假轮距(值:1): 在从 URDF 解析的模型中添加一个假 XY-Yaw 关节,该关节在整体动力学约束(速度控制)下被驱动。这是一个由 SE(2) 控制底座的移动机械手模型。
  • Unactuated 假浮动基座(值:2): 在从 URDF 解析出的模型中添加一个未驱动的 XYZ-RPY 假关节。
  • 激活的虚拟浮动基点(值:3): 为从 URDF 中解析出的模型添加一个完全致动(速度控制)的 XYZ-RPY 假关节。这是一个用 SE(3) 控制基座的移动机械手模型。

要玩转不同的模型类型,可以更改 task.info 文件中的模型信息。

 

# Build the example
catkin build ocs2_mobile_manipulator_ros
# Source workspace
# Do not forget to change <...> parts
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash

对于几种常见的机器人机械手,我们提供了使用 OCS2 运行它们的示例。这里提供了生成机器人模型文件(URDF)的步骤。

在其中一些示例中,我们通过 task.info 文件中的 model_information.removeJoints 属性固定了 URDF 中的某些关节(如抓手手指关节或车轮关节)。这样就可以简化所构建的 Pinocchio 模型。仅出于 rviz 可视化目的,task.info 文件中 removeJoints 属性下的关节将通过虚拟仿真节点发布在零关节位置。

警告

对于这些示例,可能需要对 MPC 进行额外调整才能在硬件上运行。此外,对于某些示例,需要将碰撞网格简化为原始形状(如圆柱和方框),以便避免碰撞。

我们欢迎社会各界为这些用例做出贡献。

5.1 Mabi-Mobile

roslaunch ocs2_mobile_manipulator_ros manipulator_mabi_mobile.launch

2a5a74eac1b04d91bae2b1623eb6da2a.gif 

5.2 Kinova Jaco2 

# For 6-Dof
roslaunch ocs2_mobile_manipulator_ros manipulator_kinova_j2n6.launch
# For 7-Dof
roslaunch ocs2_mobile_manipulator_ros manipulator_kinova_j2n7.launch

ff555711e1714f48b1c701e796ae17d6.gif

5.3 Franka Panda 

roslaunch ocs2_mobile_manipulator_ros manipulator_franka.launch

ed30c794b3e34c4181b26ed47fcbb083.gif 

5.4 Willow Garage PR2 

roslaunch ocs2_mobile_manipulator_ros manipulator_pr2.launch

d7f0285a3cd34bbe898ace86588afde4.gif 

5.5 Clearpath Ridgeback with UR-5

roslaunch ocs2_mobile_manipulator_ros manipulator_ridgeback_ur5.launch

 47398abd135f418d9d343f6e12a50682.gif

六、Legged Robot  

        腿部机器人示例是一个开关系统问题。它采用 MPC 方法对四足机器人 Anymal 进行运动控制。机器人的步态由用户定义,并可在执行过程中通过解算器同步模块(步态接收器)进行修改。模式序列和目标轨迹通过参考管理器模块(SwitchedModelReferenceManager)进行定义。成本函数为二次罚则,用于跟踪指令的基座位置和偏航,并将机器人的重量平均分配到站立脚上。该问题有几个取决于模式的约束条件,例如摆动脚的力为零,站立脚的速度为零。在接触力上强制执行摩擦锥,为避免脚擦伤,摆动脚在 Z 方向上跟踪预定义的运动。

        系统动力学有两种建模方式,可从配置文件中选择:

  1.  单刚体动力学(SRBD): 该模型假定系统具有恒定惯性,与关节位置无关。
  2.  全中心动力学(FCD): 该模型使用中心动力学,包含机器人四肢的运动。与 SRBD 相似,它考虑了机器人的全运动学。
# Build the example
catkin build ocs2_legged_robot_ros
# Source workspace
# Do not forget to change <...> parts
source <directory_to_ws>/<catkin_ws_name>/devel/setup.bash

# Launch the example for DDP
roslaunch ocs2_legged_robot_ros legged_robot_ddp.launch
# OR launch the example for SQP
roslaunch ocs2_legged_robot_ros legged_robot_sqp.launch

218d83dc69f846deb8a366341d06edd2.gif 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1372627.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python基础教程——用Python处理Excel!

Excel是一种常见的电子表格文件格式&#xff0c;广泛用于数据记录和处理。Python提供了多个第三方库&#xff0c;可以方便地对Excel文件进行读写、数据操作和处理。本文将介绍如何使用Python对Excel文件进行处理&#xff0c;并提供相应的代码示例和详细说明。 一、安装第三方库…

FreeRTOS学习——任务通知

一、什么是任务通知 FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能&#xff0c;每个任务都有一个 32 位的通知值。按照 FreeRTOS 官方的说法&#xff0c;使用消息通知比通过二进制信号量方式解除阻塞任务快 45%&#xff0c; 并且更加省内存&#xff08;无需创建队 列&#…

linux内存浅析

内存的基本概念 操作系统内存非常重要且比较复杂&#xff0c;其中有许多知识点仍然需要掌握才能更进一步分析程序问题。由于是初次全面系统地接触OS内存&#xff0c;目的是为了全面且低层次地理解linux内存相关概念&#xff0c;不会深入其中原理&#xff0c;所以本章也会尽量避…

隐患上报二维码:扫码上报隐患,可实时跟踪整改进度

传统的隐患上报方式通常需要员工填写报告单或口头汇报&#xff0c;不仅消耗大量时间&#xff0c;还可能导致信息传递失真、无法及时跟进隐患处理进度等问题。 可以在草料上搭建隐患上报系统&#xff0c;员工扫码即可上报隐患线索&#xff0c;管理人员可实时收到消息提醒&#…

3D Web可视化开发工具包HOOPS Communicator:提供Web端浏览大型模型新方案!

前言&#xff1a;HOOPS Communicator是Tech Soft 3D旗下的主流产品之一&#xff0c;具有强大的、专用的高性能图形内核&#xff0c;专注于基于Web的高级3D工程应用程序。其由HOOPS Server和HOOPS Web Viewer两大部分组成&#xff0c;提供了HOOPS Convertrer、Data Authoring的模…

备战2024美赛数学建模,文末获取历史优秀论文

总说&#xff08;历年美赛优秀论文可获取&#xff09; 数模的题型千变万化&#xff0c;我今天想讲的主要是一些「画图」、「建模」、「写作」和「论文结构」的思路&#xff0c;这些往往是美赛阅卷官最看重的点&#xff0c;突破了这些点&#xff0c;才能真正让你的美赛论文更上…

PACS医学影像报告管理系统源码带CT三维后处理技术

PACS从各种医学影像检查设备中获取、存储、处理影像数据&#xff0c;传输到体检信息系统中&#xff0c;生成图文并茂的体检报告&#xff0c;满足体检中心高水准、高效率影像处理的需要。 自主知识产权&#xff1a;拥有完整知识产权&#xff0c;能够同其他模块无缝对接 国际标准…

基于python热门旅游景点推荐系统+爬虫技术

大数据分析&#xff0c;数据可视化等皆可用。 源码分享。

领域驱动模型之各层实体严格分层处理

为什么要分层处理呢&#xff1f; 在领域驱动模型中&#xff0c;分为应用层&#xff08;application&#xff09;、领域层&#xff08;domain&#xff09;、基础设施层&#xff08;infrastructure&#xff09;。各层只能处理和访问自己所属层的 entity 或者 dto 对象&#xff0…

人工智能在库存管理中的应用

人工智能在库存管理中的应用 目录 人工智能在库存管理中的应用一、什么是库存管理&#xff1f;二、如何利用AI进行智能库存管理&#xff1f;简化整个库存管理流程在仓库中使用基于人工智能的机器人库存管理及配送数据挖掘与处理提供个性化的客户体验 三、利用人工智能改善库存管…

UML期末复习(带习题,选择题,判断题)(持续更新)

UML期末复习 UML简介UML模型图的构成UML事物UML包含4种事物&#xff1a;构件事物&#xff1a; UML模型的静态部分&#xff0c;描述概念或物理元素行为事物&#xff1a;UML模型图的动态部分&#xff0c;描述跨越空间和时间的行为分组事物&#xff1a; UML模型图的组织部分&#…

1 快速前端开发

1 前端开发 目的&#xff1a;开发一个平台&#xff08;网站&#xff09;- 前端开发&#xff1a;HTML、CSS、JavaScript- Web框架&#xff1a;接收请求并处理- MySQL数据库&#xff1a;存储数据地方快速上手&#xff1a;基于Flask Web框架让你快速搭建一个网站出来。1.快速开发…

您的计算机已被.LIVE勒索病毒感染?恢复您的数据的方法在这里!

引言&#xff1a; 在数字时代&#xff0c;.LIVE勒索病毒如暗夜中的黑暗调&#xff0c;威胁着个人和企业的数字安全。本文将深入介绍.LIVE勒索病毒的特征&#xff0c;提供解密数据的方法&#xff0c;并讨论预防措施&#xff0c;让我们共同筑起数字世界的防护之墙。数据的重要性…

12.1SPI驱动框架

SPI硬件基础 总线拓扑结构 引脚含义 DO(MOSI)&#xff1a;Master Output, Slave Input&#xff0c; SPI主控用来发出数据&#xff0c;SPI从设备用来接收数据 DI(MISO) &#xff1a;Master Input, Slave Output&#xff0c; SPI主控用来发出数据&#xff0c;SPI从设备用来接收…

【设计模式】创建型模式之单例模式(Golang实现)

定义 一个类只允许创建一个对象或实例&#xff0c;而且自行实例化并向整个系统提供该实例&#xff0c;这个类就是一个单例类&#xff0c;它提供全局访问的方法。这种设计模式叫单例设计模式&#xff0c;简称单例模式。 单例模式的要点&#xff1a; 某个类只能有一个实例必须…

家用洗地机怎么选?家用洗地机排名

现代很多年轻人常常为家庭卫生问题而感到头痛。一整天的工作之后&#xff0c;回到家中还得花费大量时间来处理地面的清理工作&#xff0c;包括吸尘和拖地等繁琐的任务。这些任务让人感到相当烦躁&#xff0c;尤其是对于有小孩的家庭来说&#xff0c;地板上的油污和食物残渣经常…

一键修复所有dll缺失的工具,dll修复工具下载使用教程

在计算机使用过程中&#xff0c;我们经常会遇到各种软件或系统错误提示&#xff0c;其中最常见的就是“找不到指定的模块”或“无法找到某某.dll文件”。Dll是动态链接库的缩写&#xff0c;它是Windows操作系统中的重要组成部分&#xff0c;负责提供各种功能和资源给应用程序使…

自学Python,需要注意哪些?

为什么要学习Python&#xff1f; 在学习Python之前&#xff0c;你不要担心自己没基础或“脑子笨”&#xff0c;我始终认为&#xff0c;只要你想学并为之努力&#xff0c;就能学好&#xff0c;就能用Python去做很多事情。在这个喧嚣的时代&#xff0c;很多技术或概念会不断兴起…

骑砍战团MOD开发(37)-module_skin.py皮肤系统

一.脸谱代码 与地形代码类似,骑砍引擎将人物头部模型采用脸谱代码制作,以实现不同脸谱的动态拼接以及捏脸等功能。 在人物捏脸界面CtrlE可编辑脸谱代码,可配置肤色,发型,年龄等相关参数.在module_troops.py可实现不同兵种脸谱. #第12 13个参数进行脸谱参数配置 # Each troop …

C++内存管理机制(侯捷)笔记1

C内存管理机制&#xff08;侯捷&#xff09; 本文是学习笔记&#xff0c;仅供个人学习使用。如有侵权&#xff0c;请联系删除。 参考链接 Youtube: 侯捷-C内存管理机制 Github课程视频、PPT和源代码: https://github.com/ZachL1/Bilibili-plus 第一讲primitives的笔记 截至…