ros_control+Gazebo+controller_manager
ros_control就是ROS为用户提供的应用与机器人之间的中间件,包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等等,可以帮助机器人应用快速落地,提高开发效率。
https://www.ncnynl.com/archives/201708/1932.html
上图是ros_control的数据流图,可以更加清晰的看到每个层次包含的功能:
Controller Manager:每个机器人可能有多个controller,所以这里有一个控制器管理器的概念,提供一种通用的接口来管理不同的controller。controller manager的输入就是ROS上层应用的输出。
Controller:controller可以完成每个joint的控制,请求下层的硬件资源,并且提供了PID控制器,读取硬件资源接口中的状态,在发布控制命令。
Hardware Rescource:为上下两层提供硬件资源的接口。
RobotHW:硬件抽象层和硬件直接打交道,通过write和read方法来完成硬件的操作,这一层也包含关节限位、力矩转换、状态转换等功能。
Real Robot:实际的机器人上也需要有自己的嵌入式控制器,接收到命令后需要反映到执行器上,比如接收到位置1的命令后,那就需要让执行器快速、稳定的到达位置1。
http://wiki.ros.org/ros_control
Transmissions
就是机器人的传动系统
Joint Limits
是硬件抽象层中的一块,维护一个关节限位的数据结构,这些限位数据可以从机器人的URDF文件中加载,也可以ROS的参数服务器上加载(先用YAML配置文件导入ROS parameter server),这些限位数据不仅包含关节速度、位置、加速度、加加速度、力矩等方面的限位,还包含安全作用的位置软限位、速度边界(k_v)和位置边界(k_p)等等。
controller_manager: http://blog.csdn.net/x_r_su/article/details/53300835?utm_source=itdadao&utm_medium=referral
通过硬实时控制环来控制抽象机器人对象hardware_interface::RobotHW,另外支持controller的加载,卸载,启动和停止。当controller_manager加载controller时候会将controller name作为其所有参数的root,及type(决定加载哪个插件)
controller_manager与controller交互命令: $ rosrun controller_manager controller_manager
命令选项:
load: 加载controller(controller构造和初始化)
unload: 卸载controller (析构controller)
start: 启动controller
stop: 停止controller
spawn: 加载并启动controller
kill: 停止并卸载controller
获取controller状态的命令$ rosrun controller_managercontroller_manager
命令选项:
list: 按照controller启动运行顺序给出每个controller的状态
list-types: 列出所有controller_manager管理的controller类型。如果你要使用controller不在该列表你 就不能启动它
reload-libraries: 重载所有controller插件库。插件方式的controller库在开发新的controller是非常便于测试,不需要每次重启robot。这不会重启之前运行的controllers
reload-libraries --restore: 重载所有controller插件并恢复controller到原始状态
添加gazebo_plugins
官网:Using Gazebo plugins with ROS
http://gazebosim.org/tutorials?tut=ros_gzplugins
创客智造:使用gazebo中的插件
https://www.ncnynl.com/archives/201609/862.html
添加joint limit:
urdf或YAML配置文件
https://github.com/ros-controls/ros_control/wiki/joint_limits_interface
添加controller_manager:
http://wiki.ros.org/controller_manager
http://gazebosim.org/tutorials/?tut=ros_control
http://blog.csdn.net/x_r_su/article/details/53300835?utm_source=itdadao&utm_medium=referral