ROS的机器人模型控制——ros_control
ros_control就是ROS为开发者提供的机器人控制中间件,可以在丰富的机器人应用中通用,包含一系列控制器接口、传动装置接口、硬件接口、控制器接口、控制器工具箱等,可以帮助机器人应用功能包快速落地,提高开发效率。
ros_control可以针对不同类型的机器人(移动机器人、机械臂等)提供多种类型的控制器(controller),但是这些控制器的接口各不相同。为了提高代码的复用率,ros_control还提供了一个硬件抽象层,负责机器人硬件资源的管理,处理硬件冲突,而controller从抽象层请求资源即可,并不直接接触硬件。
ros_control每个层次所包含的功能:
控制器管理器(Controller Manager) 每个机器人可能有多个控制器,所以这里有一个控制器管理器的概念,提供一种通用的接口来管理不同的控制器。控制器管理器的输入就是ROS上层应用功能包的输出。
控制器(Controller) 控制器可以完成每个joint的控制,读取硬件资源接口中的状态,再发布控制命令,并且提供PID控制器。
硬件资源(Hardware Resource) 为上下两层提供硬件资源的接口
机器人硬件抽象(RobotHW) 机器人硬件抽象和硬件资源直接打交道,通过write和read方法完成硬件操作,这一层也包含关节约束、力矩转换、状态转换等功能。
真实机器人(Real Robot) 真实机器人上也需要有自己的嵌入式控制器,将接收到的命令反映到执行器上。
控制器管理器的相关命令
controller_manager命令的格式为:
$ rosrun controller_manager controller_manager <command> <controller_name>
支持的<command>如下:
load:加载一个控制器
unload:卸载一个控制器
start:启动控制器
stop:停止控制器
spawn:加载并启动一个控制器
kill:停止并卸载一个控制器
如果想要查看某个控制器的状态,可以使用如下命令:
$ rosrun controller_manager controller_manager <command>
支持的<command>如下:
list:根据执行的顺序列出所有控制器,并显示每个控制器的状态
list-types:显示所有控制器的类型
reload-libraries:以插件的形式重载所有控制器的库,不需要重新启动,方便对控制器的开发和测试
reload-libraries --restore:以插件的形式重载所有控制器的库,并恢复到初始状态
使用以下命令可以一次控制多个控制器,自动加载、启动控制器:
$ rosrun controller_manager spawner [--stopped] name1 name2 name3
注:如果加上--stopped参数,那么控制器则只会加载,但是并不会开始运行
使用以下命令可以停止一系列控制器,但是不会卸载:
$ rosrun rontroller_manager unspawner name1 name2 name3
在launch文件中,同样可以通过运行controller_manager命令,加载和启动一系列控制器:
-
<launch>
-
<node pkg="controller_manager" type="spawner" args="controller_name1 controller_name2" />
-
</launch>
在launch文件中输入以下命令,会只加载而不启动controller:
-
<launch>
-
<node pkg="controller_manager" type="spawner" args="--stopped controller_name1 controller_name2" />
-
</launch>
在controller_manager中还提供了可视化工具rqt_controller_manager,输入以下命令即可打开:
$ rosrun rqt_controller_manager rqt_controller_manager
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgekffe
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01