ROS学习总结九:ros_control

ROS中提供了非常多的机器人功能,比如说机器人的导航、机器人的定位、机械臂的运动规划等功能,但是这些功能包都是停留在机器人上层应用的功能包,也就是说怎么把这些功能包最终实现到真实的机器人上面去,中间需要一个连接 。
ros_control功能包作为一个机器人控制中间件,它包含一系列控制器接口、传动装置接口、硬件接口、控制器工具等等。可以帮助机器人应用包快速的实现到硬件上面去,提高开发效率。它的总体框架如下:
ROS学习总结九:ros_control_第1张图片
所有的硬件与硬件抽象层做交互,将控制跟硬件逻辑区别开,让控制逻辑不依赖于某一种硬件,而是可以通用于多种硬件之间,硬件抽象层来完成所有跟硬件上的资源上的一些管理工作。
ros_control的数据流程图如下:
ROS学习总结九:ros_control_第2张图片
左侧为机器人的上层应用,上层应用完成后会将一些数据传送到controller插件,这些插件负责机器人的各个部分。控制器的输出数据通过跟硬件资源的接口发布到硬件抽象层,硬件抽象层需要根据机器人的一些约束完成一些逻辑上的处理,例如机器人关节上的约束,最后将数据转化成控制量输出,例如电机的转矩等。同时controller还要把下层的一些数据反馈给上层的控制器所使用。
它的驱动分为write以及read两种,write把上层数据写到底层硬件,read从底层读取数据发送到上层。
同时,ros_control不仅可以控制实际机器人也可以控制仿真机器人:
ROS学习总结九:ros_control_第3张图片
例如在Gazebo中仿真,我们可以使用ros_control中的一些控制器,来帮助我们实现机器人的控制。类似于上一章中arbotix中的差速控制器,只是ros_control功能更加强大,可以满足各种需求。
ros_control的功能主要通过controller来实现的
ROS学习总结九:ros_control_第4张图片
主要有上述四种控制器:一般就是力控制、位置控制、速度控制以及关节状态控制器。

你可能感兴趣的:(Ubuntu,ROS)