第一步:配置机器人模型
link:添加运动学参数
惯性参数
物体的惯性和物体的质量,形状,以及质量分布有关,出于计算复杂性和刚体特征考虑,通常默认质量是均匀分布的。
目标:三个坐标轴的转动惯量
碰撞参数
link:添加gazebo标签
标签 | 功能 |
---|---|
< gazebo > | 设置Gazebo仿真的参数 |
< mu1 >,< mu2 > | 设置摩擦系数 |
< material > | 设置连杆颜色 |
< plugin > | 传感器和机器人状态控制工具 |
< robotNamespace > | 设置在Gazebo中使用的机器人名称 |
< robotSimType > | 设置机器人仿真界面的插件名称 |
joint:转动装置
标签 | 功能 |
---|---|
< transmission > | 设置关节和舵机之间的变量 |
< type > | 设置力的传递方式的形状 |
< joint > | 设置关节信息设置 |
< hardwareInterface > | 设置硬件接口 |
< actuator > | 设置舵机信息 |
< mechanicalReduction > | 设置舵机与关节之间的齿轮比 |
transmission
< transmission >(必须)唯一指定了一个传动的标签,名字自定义,方便起见可以使用与joint name相同的名字。
< type >(出现一次)定义了传动的类型,transmission_interface/SimpleTransmission,完成简单的传输
< joint >(可定义一个或多个)指定这个传动所依赖的关节,拥有如下标签hardwareInterface。
< hardwarelnterface>
在joint下,可定义一个或多个
指定支持的硬件接口空间
用于结合控制器使用硬件接口来向硬件接口发送和接受指令
此标签的值应为hardware_interface / XXX。
< actuator >(定义一个或多个)传动连接的致动器,名字自定义。
< mechanicalReduction >(可选)定义电机/关节减速比。
【减速比=输入转速÷输出转速】
< hardwarelnterface >指定支持的硬件接口空间。
ros_control
1、作用
ros_control就是ROS为用户提供的应用与机器人之间的中间件
包含一系列控制器接口、传动装置接口、硬件接口、控制器工具箱等
可以帮助机器人应用功能包快速落地,提高开发效率
名称 | 作用 |
---|---|
control_toolbox | 包含PID控制器和sine控制器 |
controller_interface | 包含控制机接口的基类 |
controller_manager | 这个包能够加载,卸载,启动和停止控制器 |
controller_manager_msgs | 为控制器管理器提供消息和服务的实现 |
hardware_interface | 硬件接口的基类 |
transmission_interface | 换能接口类,(差速,四杆机构,关节状态,位置,速度) |
2、总体框架
一般使用的硬件接口是:
Joint Command Interface:发送关节信息给硬件
Effort Joint lnterface
Velocity Joint Interface
Position Joint Interface
Joint State lnterface:从激励器的编码器处获得传感信息
标准的ROS控制器有:
joint_position_controller:简单的关节位置控制器
joint_state_controller:控制器,发送joint state消息,监控机器人状态
joint_effort_controller:关节力矩控制器
joint_velocity_controller
3、控制器数据流向
Controller Manager:每个机器人可能有多个controller,所以这里有一个控制器管理器的概念,提供一种通用的接口来管理不同的controller。controller manager的输入就是ROS上层应用的输出。
Controller:controller可以完成每个joint的控制,请求下层的硬件资源,并且提供了PID控制器,读取硬件资源接口中的状态,在发布控制命令。
Hardware Rescource:为上下两层提供硬件资源的接口。
RobotHW:硬件抽象层和硬件直接打交道,通过write和read方法来完成硬件的操作,这一层也包含关节限位、力矩转换、状态转换等功能。
Real Robot:实际的机器人上也需要有自己的嵌入式控制器,接收到命令后需要反映到执行器上,比如接收到位置1的命令后,那就需要让执行器快速、稳定的到达位置1。
4、安装
sudo apt-get install ros-kinetic-ros-control ros-kinetic-ros-controllers
第二步:创建仿真环境
以下内容比较简单,具体的操作可以参照这个:
学习参考
根据之前章节已学习的包操作
启动:
roslaunch mbot_gazebo view_mbot_gazebo_empty_world.launch
方法一:自己构建物理环境
自己可以根据下面的内容操作构建物理环境
如果是自己下载的模型,将模型文件库下载并放置到~/.gazebo/models
被隐藏的文件夹按Ctrl+h可见
方法二:自己编辑物理环境
第三步:开始仿真
还是启动之前已经有的包,启动后可以操控gazebo里面的模型运动
roslaunch mbot_teleop mbot_teleop.launch