ROS中的控制器插件
ros_control
1、ROS为开发者提供的机器人控制中间件
2、包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等
3、可以帮助机器人应用功能包更快速落地,提高开发效率
一、控制器管理
提供一种通用的接口来管理怒同的控制器
二、控制器
读取硬件状态,发布控制命令,完成每个joint的控制
三、硬件资源
为上下两层提供硬件资源的接口
四、机器人硬件抽象
机器人硬件的抽象和硬件资源直接打交道,通过write和read方法完成硬件操作
五、真实机器人
执行接收到的命令
最常用的控制方法为PID, 通过interface(网线...)传输给仿真软件或者是真实的机器人
控制器(controllers)
1、joint_state_controller(与控制无关,监控机器人的状态)
2、joint_effect_controller
3、joint_position_controller
4、joint_velocity_controller
ros_controller在整个框架中的主要目的是完成应用到机器人仿真或者是真实机器人衔接的中间线。
完善机器人模型
第一步:为link惯性参数和碰撞属性
提示: 在参数部分,质量mass特别小,接近0。其中惯性旋转矩阵设计的比较大,之所以这样设置是因为在gazebo作仿真时,物理参数的影响会十分大,若建模时,所有的参数都是正确的,也可正常导出URDF,但放入gazebo中时,不一定是正常的,机械臂可能会东倒西歪。如果对碰撞、摩擦这些没有很大的要求,就可以依照上面的规则来进行设计,虽然与真实机器之间有差距但可以稳定的进行仿真。
第二步:为joint添加传动装置(描述两个link之间是怎样的运动形式)
第三步:添加gazebo控制器插件
调用ros_controller插件的功能
第一个参数:定义了robotNamespace机器人命名空间(若有多个机器人,机器人在命名上会有区别)
第二个参数:定义了机器人仿真的类型(使用默认的硬件抽象层接口DefaultRobotHWSim,完成上面下发的指令到机器人模型的数据的转化,控制模型运动)
第三个参数主要是为了兼容ROS多个编本之间不断迭代后参数的变化。
在gazebo中加载机器人模型
include部分用于启动gazebo仿真环境
其中robot-description保存模型的路径
通过urdf_spawner节点来产生模型(gazebo提供的功能),主要是将上面的模型添加进gazebo,因此会有如下参数:模型从哪来,模型的类型是什么,模型叫什么。