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

系列文章目录

 


前言

 

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.mzph.cn/news/606476.shtml

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

相关文章

逻辑回归(Logistic Regression)

什么是机器学习 逻辑回归&#xff08;Logistic Regression&#xff09;虽然名字中包含"回归"一词&#xff0c;但实际上是一种用于解决分类问题的统计学习方法&#xff0c;而不是回归问题。它是一种线性模型&#xff0c;常用于二分类问题&#xff0c;也可以扩展到多分…

【亲测】申请腾讯云免费服务器流程,2024新版教程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM&#xff0c;轻量配置可选2核2G3M、2核8G7M和4核8G12M&#xff0c;CVM云服务器可选2核2G3M和2核4G3M配置&#xff0c;腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

vue3 修饰符大全(近万字长文)

系列文章目录 TypeScript 从入门到进阶专栏 文章目录 系列文章目录前言一、事件修饰符&#xff08;Event Modifiers&#xff09;1、.stop&#xff08;阻止事件冒泡&#xff09;2、.prevent&#xff08;阻止事件的默认行为&#xff09;3、.capture&#xff08;使用事件捕获模式…

如何优雅的搭建一个轻量化的网站

本地网页 这里我找到了一个带有简单的悬停变色效果的个人博客网站模板。用来演示这次的轻量化网站搭建。你可以复制这段代码到一个txt文件中&#xff0c;修改文件后缀名为html即可得到一个最简单的静态网页文件。在没有搭建网站服务器时&#xff0c;本机可以通过直接双击该文件…

YOLOv5改进之---EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU

本文主要针对yolov5的iou损失函数进行改进,主要涵盖EIoU,SIoU,AlphaIoU,FocalEIoU,Wise-IoU这几种损失。 一、首先会对这几种损失进行介绍: 1、背景 由于EIOU是在CIOU的基础上改进的,为方便理解,此处贴出CIOU的计算公式,其他GIOU、DIOU不作介绍。 CIOU公式如下所示: b ,…

C++ 中的指针和引用有什么区别?

C 中的指针和引用有什么区别&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#…

alibabacloud学习笔记02(小滴课堂)

什么是注册中心和常见的注册中心有哪些 介绍什么是Nacos和搭建实战 启动Nacos 使用前要先安装jdk。 linux学习专栏笔记中有&#xff0c;大家可以去看。 关闭nacos: 这样我们就登录了nacos。 项目集成Nacos实现服务直接的调用 每个子模块都去添加。 给每个子模块配置nacos配…

C++力扣题目--94,144,145二叉树非递归(迭代)遍历

为什么可以用迭代法&#xff08;非递归的方式&#xff09;来实现二叉树的前后中序遍历呢&#xff1f; 我们在栈与队列&#xff1a;匹配问题都是栈的强项 (opens new window)中提到了&#xff0c;递归的实现就是&#xff1a;每一次递归调用都会把函数的局部变量、参数值和返回地…

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend‘”

【python】使用fitz包读取PDF文件报错“ModuleNotFoundError: No module named ‘frontend’” 正确解决过程 在读取PDF文件时&#xff0c;我使用了fitz包&#xff0c;当使用代码import fitz导入该包时&#xff0c;出现了报错&#xff1a; 于是我直接使用以下代码安装fronten…

每天刷两道题——第十天

1.1和为k的子数组 给你一个整数数组 n u m s nums nums 和一个整数 k k k &#xff0c;请你统计并返回 该数组中和为 k k k 的子数组的个数 。子数组是数组中元素的连续非空序列。 输入&#xff1a;nums [1,2,3], k 3 输出&#xff1a;2 前缀和 1.2如何使用 前缀和的…

stable diffusion 人物高级提示词(五)场景、特效、拍摄手法、风格

一、场景 场景Promptindoor室内outdoor室外cityscape城市景色countryside乡村beach海滩forest森林mountain山脉snowfield雪原skyscraper摩天大楼ancient monument古代遗迹cathedral大教堂library图书馆museum博物馆office building办公大楼restaurant餐厅street market街头市场…

使用openssl 生成pfx格式证书时报错:unable to load certificates

问题现象包如下&#xff1a; 之前在centos上使用openssl部署证书服务器以及颁发证书的时候遇到的问题&#xff0c;在进行个人证书生成之后需要形成pfx格式证书&#xff0c;结果过程中报错了。网上类似资料比较少&#xff0c;做个记录。 生成pfx格式证书的命令&#xff1a; o…

7 种常见的前端安全攻击

文章目录 七种常见的前端攻击1.跨站脚本&#xff08;XSS&#xff09;2.依赖性风险3.跨站请求伪造&#xff08;CSRF&#xff09;4.点击劫持5.CDN篡改6. HTTPS 降级7.中间人攻击 随着 Web 应用程序对业务运营变得越来越重要&#xff0c;它们也成为更有吸引力的网络攻击目标。但不…

想要复制图片的文案要哪些方法呢

从图片中提取文字的需求越来越普遍。无论是从扫描文档、社交媒体截图还是广告海报中提取文字&#xff0c;都能够帮助我们快速获取信息并提高工作效率。为了满足这一需求&#xff0c;市面上涌现出了众多图片文字提取工具。本文将为你介绍一些实用的工具&#xff0c;帮助你快速完…

ENZO LIFE SCIENCE:MEGACD40L®蛋白

MEGACD40L是一种高活性蛋白&#xff0c;其中的两个三聚体CD40配体分子通过Adiponectin&#xff08;脂联素&#xff09;/ACRP30/AdipoQ的胶原结构域人工连接。该蛋白质非常有效地模拟了在体内自然条件下&#xff0c;CD40L的膜辅助聚集&#xff0c;为[CD40L增强剂]的组合&#xf…

RT-Thread 线程管理

线程管理 在日常生活中&#xff0c;我们要完成一个大任务&#xff0c;一般会将它分解成多个简单、容易解决的小问题&#xff0c;小问题逐个被解决&#xff0c;大问题也就随之解决了。 在多线程操作系统中&#xff0c;也同样需要开发人员把一个复杂的应用分解成多个小的、可调…

Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域,Kotlin(2)

Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域&#xff0c;Kotlin&#xff08;2&#xff09; 在 Android Canvas图层saveLayer剪切clipRect原图对应Rect区域&#xff0c;Kotlin&#xff08;1&#xff09;-CSDN博客 的基础上&#xff0c;把矩形切图&a…

3.9 EXERCISES

矩阵加法需要两个输入矩阵A和B&#xff0c;并产生一个输出矩阵C。输出矩阵C的每个元素都是输入矩阵A和B的相应元素的总和&#xff0c;即C[i][j] A[i][j] B[i][j]。为了简单起见&#xff0c;我们将只处理元素为单精度浮点数的平方矩阵。编写一个矩阵加法内核和主机stub函数&am…

强化学习的数学原理学习笔记 - RL基础知识

文章目录 Roadmap&#x1f7e1;基础概念贝尔曼方程&#xff08;Bellman Equation&#xff09;基本形式矩阵-向量形式迭代求解状态值 vs. 动作值 &#x1f7e1;贝尔曼最优方程&#xff08;Bellman Optimality Equation&#xff0c;BOE&#xff09;基本形式迭代求解 本系列文章介…

DSP2335的时钟PLL配置

PLL模块框图 xclkin是直接进来的外部时钟&#xff1b; 而下面的是振荡器&#xff08;晶振出来&#xff09;的时钟 PLLSTS 锁相环状态寄存器 PLLCR 锁相环控制寄存器 PLLSTS【oscoff】 决定着外部时钟的输入 PLLSTS【plloff】 锁相器关闭位 0使能PLL 锁相环控制寄存器…