ROS学习笔记(6):ros_control

news2024/11/24 7:59:13

1.ros_control简介

ros_control - ROS Wiki

ros_control是为ROS提供的机器人控制包,包含一系列控制器接口、传动装置接口、控制器工具箱等,有效帮助机器人应用功能包快速落地,提高开发效率。

2.ros_control框架

ros_control总体框架:

针对不同类型的机器人(哨兵小车,机械臂等)ros_control提供了多种类型控制器,这些控制器的接口各不相同。ros_control提供了一个硬件抽象层,用来提高代码的复用率,负责机器人硬件资源管理,控制器从抽象层请求资源,不直接接触硬件。

 ros_control的数据流图:

1.控制器管理器(Controller Manager)

每个机器人有一个或多个控制器,控制器管理器提供了通用接口来管理不同的控制器。控制器管理器的输入就是ROS上层应用功能包的输出。

2.控制器(Controller)

控制器可以完成每个joint控制,读取硬件资源接口状态,再发布控制命令,提供PID控制器。

3.硬件资源(Hardware Resource)

为上下两层提供硬件资源接口。

4.机器人硬件抽象(RobotHW)

机器人硬件抽象和硬件资源通信,通过write和read方法完成硬件操作,包含关节约束、力矩转换、状态转换等功能。

5.真实机器人(Real Robot)

真实机器人上需要有自己的嵌入式控制器,将接收到的命令反映到执行器上,例如接收到旋转90°的命令后,就需要让执行器快速、稳定地旋转90°。

3.控制器

ros_controllers功能包提供了许多控制器:

创建自己的控制器:

controller_interface · ros-controls/ros_control Wiki (github.com)

ros_controllers和ros_control之间的多种控制接口:

4.硬件接口 

硬件接口是控制器和RobotHW沟通的接口,基本与控制器的种类相对应:

创建自己的硬件接口:

hardware_interface · ros-controls/ros_control Wiki (github.com)

5.传动系统(Transmission)

 传动系统可以将机器人的关节指令转换成执行器的控制信号。机器人每个需要运动的关节都需要配置相应的传动系统,可以在机器人的URDF模型文件中配置:

urdf/XML/传输 - ROS Wiki

6.关节约束(Joint Limits)

 关节约束是硬件抽象层中的一部分,维护一个关节约束的数据结构,这些约束数据可以从机器人的URDF文件中加载、可以在ROS的参数服务器上加载(需要先用YAML配置文件导入ROS参数服务器),包含了关节速度、位置、加速度、加加速度、力矩等约束,还包含了其安全作用的位置软限位、速度边界(k_v)和位置边界(k_p)等。

URDF文件中设置Joint Limits参数:

joint_limits_interface · ros-controls/ros_control Wiki (github.com)

7.控制器管理器(controller_manager)

控制器管理器提供了一种多控制器控制的机制,实现控制器的加载、运行启动、运行停止、卸载等多种操作。

控制器的状态跳转:

1.命令行工具

1.controller_manager命令格式:
rosrun controller_manager controller_manager <command> <controller_name>

支持的<command>:

·load:加载一个控制器。 

·unload:卸载一个控制器。

·start:启动控制器。

·stop:停止控制器。

·spawn:加载并启动一个控制器。

·kill:停止并卸载一个控制器。

2.查看控制器状态命令:
rosrun controller_manager controller_manager <command>

支持的<command>: 

·list:根据执行顺序列出所有控制器,并显示每个控制器的状态。

·list-types:显示所有控制器的类型。

·reload-libraries:以插件的形式重载所有的控制器的库,不需要重新启动,方便对控制器的开发和测试。

·reload-libraries--restore:以插件的形式重载所有控制器的库,并恢复到初始状态。

3.spawner命令

spawner命令是用于一次控制多个控制器,可以自动加载、启动控制器,加上--stopped参数,控制器就只会被加载,不会运行:

rosrun controller_manager spawner [--stopped] name1 name2 name3
4.unspawner

unspawner命令用于停止一系列控制器,但不需要卸载:

rosrun controller_manager unspawner name1 name2 name3

2.launch工具

launch文件运行controller_manager命令,加载、启动控制器:

<launch>
    <node pkg="controller_manager" type="spawner" args="controller_name1 controller_name2"/>
</launch>

加载不启动:

<launch>
    <node pkg="controller_manager" type="spawner" args="--stopped controller_name1 controller_name2"/>
</launch>

3.rqt_controller_manager可视化工具

rosrun rqt_controller_manager rqt_controller_manager

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

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

相关文章

【springboot配置项动态刷新】与【yaml文件转换为java对象】

文章目录 一&#xff0c;序言二&#xff0c;准备工作1. pom.xml引入组件2. 配置文件示例 三&#xff0c;自定义配置项动态刷新编码实现1. 定义自定义配置项对象2. 添加注解实现启动时自动注入3. 实现yml文件监听以及文件变化处理 四&#xff0c;yaml文件转换为java对象1. 无法使…

Go 语言初探:从基础到实战

1.Go概述 程序是一段计算机指令的有序组合。程序算法数据结构。任何程序都可以将模块通过三种基本的控制结构&#xff08;顺序、分支、循环&#xff09;进行组合来实现。 Go&#xff08;也称为Golang&#xff09;是一种由Google开发的开源编程语言。设计目标是使编程更简单、…

配置802.1x本地认证,以识别用户身份的示例

组网图形 图1 802.1x本地认证组网图 规格组网需求操作步骤配置注意事项 规格 适用于所有版本、所有形态的AR路由器。 组网需求 PC1(10.10.10.2/30)直接连接到RouterA的Eth2/0/1端口&#xff0c;RouterA的VLANIF10接口IP地址10.10.10.1/30&#xff08;为PC1上的网关IP地址&a…

基于CLIP的图像分类、语义分割和目标检测

OpenAI CLIP模型是一个创造性的突破&#xff1b; 它以与文本相同的方式处理图像。 令人惊讶的是&#xff0c;如果进行大规模训练&#xff0c;效果非常好。 在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 3D…

一维码和二维码图像优化——提高读码率

1.算子 1.1 decompose3 &#xff08;彩色图像分割算子&#xff09; 算子&#xff1a;decompose3 ——将三通道图像转换为三个图像函数原型&#xff1a;decompose3(MultiChannelImage : Image1, Image2, Image3 : : ) 功能&#xff1a;将3通道图像转换为具有相同定义域&#…

智慧安防:监控防盗两不误的安防视频监控系统是什么样的?

随着社会的不断发展&#xff0c;安全问题越来越受到人们的关注&#xff0c;特别是对于居住在城市里的人们来说&#xff0c;盗窃问题是影响他们生活质量的重要因素之一。因此&#xff0c;根据市场需求&#xff0c;以监控防盗两不误的智慧监控系统得到了广泛的推广和应用。 一般…

不充不行(同时跑三辆车)

欢迎来到程序小院 不充不行 玩法&#xff1a;点击鼠标左键长按充电桩&#xff0c;别让车落回底线&#xff0c;三辆车同时在跑&#xff0c;要控制三个充电桩的电量&#xff0c;电量为0即为游戏结束&#xff0c;看看你能坚持多少秒哦^^。开始游戏https://www.ormcc.com/play/gam…

迅镭激光与江苏中红外激光研究院达成战略合作意向

11月6日&#xff0c;江苏中红外激光研究院院长沈德元、江苏师范大学物电学院系主任韩彩芹、江苏中红外激光研究院技术副总王飞等领导莅临迅镭激光调研指导并进行合作会谈&#xff0c;迅镭激光董事长颜章健热情接待。双方就成果转化、产业合作、专业人才培养等方面进行深入洽谈&…

Centos7下安装-使用K3S

本文主要内容&#xff1a; 1.安装k3s 2.在idea中&#xff0c;编辑yml文件创建pod 3.在k3d中pod基本操作 4.在k3d中Labeles标签基本操作 5.在k3d中容器的基本操作 &#xff08;k3s的操作与k8s操作不同处在于&#xff0c;k3s每次执行命令&#xff0c;前面需要加上k3s&#xff09;…

猫罐头什么牌子好?2023营养又美味的猫主食罐头推荐!

亲爱的猫咪主人&#xff0c;你是否为你家小猫咪的挑食问题感到困扰&#xff1f;作为一位在宠物店工作了七年&#xff0c;负责喂养三十多只猫咪的店长&#xff0c;我对许多品牌的猫罐头都非常熟悉了。对于猫罐头哪个牌子好这个问题&#xff0c;我想借此机会分享一些见解。 在本…

linux基础:3.linux基础环境开发工具和配置。

linux基础环境开发工具和配置 一.学习yum工具进行软件安装&#xff1a;1.什么是yum&#xff1a;2.查看软件包&#xff1a;3.安装和删除&#xff1a;4.yum生态&#xff1a; 二.vim的使用&#xff1a;一.快速介绍一下vim二.vim正常模式&#xff1a;2-1&#xff1a;命令模式1.光标…

HarmonyOS应用开发-ArkTS基础知识

作者&#xff1a;杨亮Jerry 作为多年的大前端程序开发工作者&#xff0c;就目前的形式&#xff0c;个人浅见&#xff0c;在未来3-5年&#xff0c;移动端依旧是Android系统和iOS系统的天下。不过基于鸿蒙系统的应用开发还是值得我们去花点时间去了解下的&#xff0c;阅读并实践官…

一杯子三变:揭秘vue单页应用(spa)与内容动态加载的奥秘

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、什…

找不到x3daudio1_7.dll怎么办?五种解决方法帮你解决x3daudio1_7.dll问题

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“X3DAudio1_7.dll丢失”。这个错误通常会导致音频播放异常或无法正常工作。为了解决这个问题&#xff0c;本文将介绍5种修复X3DAudio1_7.dll丢失的方法&#xff0c;帮助大家快速恢复X3DAudi…

Redis的三种特殊数据类型

文章目录 一、Redis geospatial 地理位置二、Redis Hyperloglog 基数统计的算法三、Redis Bitmaps 位存储&#xff08;0、1&#xff09;总结 一、Redis geospatial 地理位置 1.geoadd&#xff1a;将指定的地理空间位置&#xff08;纬度、经度、名称&#xff09;添加到指定的ke…

vue中 process.env 对象为空对象问题

问题&#xff1a;今天在处理vue项目环境问题的时候&#xff0c;发现直接打印 process 对象和打印 process.env 时 env 对象输出结果是不一样的&#xff0c;如下图所示&#xff1a; 在网上搜索了一番后发现还是有挺多朋友对此感到疑惑的&#xff0c;询问了同事&#xff0c;同…

VINS-Mono-后端优化 (一:预积分残差计算-IMU预积分约束)

这里先回顾一下预积分是怎么来的 VINS-Mono-IMU预积分 &#xff08;三&#xff1a;为什么要预积分预积分推导&#xff09; 这里贴出预积分的公式 具体含义解释看对对应的文章 整个误差函数如下 预积分 α \alpha α β \beta β γ \gamma γ 是用 IMU 预积分获得的增量&a…

Xtrabackup将本地数据迁移上云

本机和云端服务器安装xtrabackup #为了防止每次yum操作都会自动更新&#xff0c;卸载这个软件 yum -y remove mysql57-community-release-el7-10.noarch#下载XtraBackup yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm#激活该yum仓库 percon…

vue使用Echarts5实现词云图

先上官网 词云图有些特殊&#xff0c;它属于Echarts 的扩展&#xff0c;需要额外安装Echarts-wordcloud包。 Echarts 官网 Echarts-wordcloud 词云图官网 先安装 npm install echarts-wordcloud npm install echarts echarts-wordcloud再引入 echarts选一个引入就行&#xff…

Unity 利用UGUI制作圆形进度条

在Unity中使用Image和Text组件就可以制作简单的进度条。 1、首先准备好一张环状的PNG图&#xff0c;如下图。 2、把该图导入Unity中并转换成精灵。 3、在场景中创建Image和Text组件&#xff0c;并把上图中的精灵拖到Image的Source Image中&#xff0c;其中Image组件中的Image …