ROS学习笔记(5):ros_control
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
相关文章:
ROS学习笔记(5):ros_control
1.ros_control简介 ros_control - ROS Wiki ros_control是为ROS提供的机器人控制包,包含一系列控制器接口、传动装置接口、控制器工具箱等,有效帮助机器人应用功能包快速落地,提高开发效率。 2.ros_control框架 ros_control总体框架: 针对…...
《008.Springboot+vue之自习室选座系统》
[火]《008.Springbootvue之自习室选座系统》 项目简介 [1]本系统涉及到的技术主要如下: 推荐环境配置:DEA jdk1.8 Maven MySQL 前后端分离; 后台:SpringBootMybatisredis; 前台:vueElementUI; [2]功能模块展示: 前端…...
道可云元宇宙每日资讯|5G数智新时代元宇宙发展论坛在厦门举办
道可云元宇宙每日简报(2023年11月6日)讯,今日元宇宙新鲜事有: 5G数智新时代元宇宙发展论坛在厦门举办 3日,由2023年中国金鸡百花电影节执委会主办、厦门电影节有限公司协办的“5G数智新时代元宇宙发展论坛暨‘中国白德…...
使用 Go 写入文件
在本教程中,我们将学习如何使用 Go 将数据写入文件。我们还将学习如何同时写入文件。 本教程有以下部分 将字符串写入文件将字节写入文件逐行将数据写入文件附加到文件同时写入文件 由于 Playground 不支持文件操作,请在本地系统中运行本教程的所有程…...
调用DeleteLocalRef的正确姿势
做安卓jni相关开发的总会在涉及到jni变量释放时怀疑人生,what? where? when? who? why? how? how much? 最近碰到一个比较奇怪的问题,有一个jni方法的耗时在随着调用次数的增加而上涨,但是没有明显的内存泄漏,经过我缜密分…...
抖音小店从0到1起店流程,实操经验分享!
我是电商珠珠 很多人在开店之后,并不知道怎么做。往往会有人跑来问我说,开店之后怎么做啊,流程方面我还不是很熟悉啊等等。 这份起店流程备好了,将来对你有用。 第一步,店铺基础设置 在店铺开好之后,不…...
MySQL权限
权限 MySQL 允许客户端用户连接到服务器并访问服务器管理数据,MySQL 用户权限系统的主要功能是对给定主机连接的用户进行身份验证,并将该用户与数据库的权限相关联。 在 MySQL8 之前,授权表使用 MyISAM 并且是非事务性的,在 MyS…...
Nginx服务器安装证书并启用SSL(acme.sh)
前提 您已购置vps服务器,例如阿里云全球站ecs、AWS EC2、Azure VM、GCP Compute等安全组已开启80、443端口,且访问源设置为0.0.0.0/0域名已设置A记录指向当前操作服务器,若您使用aws ec2,有公有 IPv4 DNS,可供使用 安…...
c++实现观察者模式
前言 我觉得这是最有意思的模式,其中一个动,另外的自动跟着动。发布-订阅,我觉得很巧妙。 代码 头文件 #pragma once #include<vector> #include<string> #include<iostream>// 抽象观察者 class Aobserver { public:v…...
C 语言左移位操作在kernel驱动子系统中的特殊用途
文章目录 前言一、C语言左移位操作介绍1. 左移位二、左移位操作在kernel 驱动子系统中的应用1. 左移位操作在 V4L2, Media 子系统中的应用实例2.左移位操作在 DRM 子系统中的应用实例2.1 左移位操作在struct drm_crtc 中的应用2.2 左移位操作在struct drm_encoder 中的应用总结…...
kafka3.6.0集群部署
环境准备 机器环境 系统主机名IP地址centos7.9kafka01192.168.200.51centos7.9kafka02192.168.200.52centos7.9kafka03192.168.200.53 所需软件 jdk-8u171-linux-x64.tar.gzapache-zookeeper-3.8.3-bin.tar.gz https://dlcdn.apache.org/zookeeper/zookeeper-3.8.3/apache-zook…...
JAVA客户端使用账号密码调用influxdb2报错:{“code“:“unauthorized“,“message“:“Unauthorized“}
问题:JAVA客户端访问influxdb2报错 说明:当前influxdb版本:2.6.1 使用依赖: <dependency><groupId>org.influxdb</groupId><artifactId>influxdb-java</artifactId><version>2.10</vers…...
Mysql查询今天到期、n天即将到期、还有n天过期相关sql
超级治愈的一段话 其实你已经很幸福了,吃饱穿暖,没病没灾,隔三岔五还能吃顿好的,偶尔还能睡到自然醒,肥嘟嘟的一身福气。人这一辈子,要是能够逃过天灾,躲过战乱,不遇歹人,不生大病,就已经是非常幸运了,要是还能家庭和谐,收人稳定,三五知己,那更是天大的福泽。 -…...
【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证 1.5、深度利用1、反弹Shell 说明内容漏洞编号CVE-2017-5645漏洞名称Log4j Server …...
【江协科技-用0.96寸OLED播放知名艺人打篮球视频】
Python进行视频图像处理,通过串口发送给stm32,stm32接收数据,刷新OLED进行显示。 步骤: 1.按照接线图连接好硬件 2.把Keil工程的代码下载到STM32中 3.运行Python代码,通过串口把处理后的数据发送给STM32进行显示 …...
CATIA环境编辑器用不了时创建项目快捷方式
CATIA环境编辑器用不了时创建项目快捷方式 一、参考适用情况示例二、 解决步骤(一) 先正确放置winb_64部署包(二) 添加环境文件(三) 修改加入的环境文件(四) 复制本机CATIA快捷方式后重命名(五) 修改快捷方式目标的值 一、参考适用情况示例 二、 解决步骤 (一) 先正确放置winb…...
java泛型的深入 泛型还可以在很多地方进行定义 泛型类 泛型方法 泛型接口 泛型的继承和通配符 泛型类练习
文章目录 泛型的深入泛型还可以在很多地方进行定义泛型类泛型方法泛型接口 泛型的继承和通配符泛型类练习总结 泛型的深入 public static void main(String[] args) {//在没有泛型的时候怎么存储数据ArrayList listnew ArrayList();list.add(1);list.add("abc");//遍…...
持续交付的好处
在软件领域,持续交付就是这样一种开发实践,它为所有利益相关者带来好处:开发、运营、测试人员和业务团队。持续交付适用于每个由软件驱动的组织;很难想象企业不使用软件。 它使人们受益,并需要人们做出改变才能更好地…...
APP开发:用途与未来前景|软件定制开发|网站小程序建设
APP开发:用途与未来前景|软件定制开发|网站小程序建设 APP开发已成为现代科技趋势的一部分,无论是日常生活还是商业领域,都有它的身影。通过开发APP,我们可以将想法、功能和内容转化为直观、易用的移动设备应用程序,满…...
图论——并查集
参考内容: 图论——并查集(详细版) 并查集(Disjoint-set)是一种精巧的树形数据结构,它主要用于处理一些不相交集合的合并及查询问题。一些常见用途,比如求联通子图、求最小生成树的 Kruskal 算法和求最近公共祖先&…...
应用升级/灾备测试时使用guarantee 闪回点迅速回退
1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间, 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点,不需要开启数据库闪回。…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2
每日一言 今天的每一份坚持,都是在为未来积攒底气。 案例:OLED显示一个A 这边观察到一个点,怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 : 如果代码里信号切换太快(比如 SDA 刚变,SCL 立刻变&#…...
浪潮交换机配置track检测实现高速公路收费网络主备切换NQA
浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求,本次涉及的主要是收费汇聚交换机的配置,浪潮网络设备在高速项目很少,通…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...








