第七章建模与仿真分为上、中、下三节。

  • 上节讲解机器人相关建模语言URDF和xacro,并用丰富的案例做实践

  • 中节讲解控制器,重点是ros_control

  • 下节主要介绍gazebo,讲解机器人如何在仿真环境中的运动

一、ROS_Control

针对不同机器人,ros_control提供多种类型控制器。控制器接口不相同,所以ros_control提供一个硬件抽象层,专门管理机器人硬件资源。control从抽象层请求资源,并不直接与硬件打交道。

1. 概念

在这里插入图片描述

Controller Manager

提供通用接口来管理不同的控制器。

Controller

使用控制器(比如PID)完成对每个关节的控制。他读取硬件资源接口中的真实状态,再发布控制命令。形成闭环控制。

RobotHW
机器人硬件抽象,通过读写方法直接与机器人硬件打交道。

Real robot

真实机器人上的嵌入式控制器,将接受到的命令传递到执行器。同时机器人身体上的传感器(编码器)将机器人当前状态传递回RobotHW

2. 控制器

在这里插入图片描述

目前功能包提供的控制器包括:

  • effort_controllers: 控制关节的力或者力矩

    • joint_effort_controller:输入为力,输出为力
    • joint_position_controller:输入为位置,输出为力(PID)
    • joint_velocity_controller:输入为速度,输出为力(PID)
  • joint_state_controller: 发布所有注册在RobotHW上的硬件关节状态. 数据格式如下图
    在这里插入图片描述

  • position_controllers: 一次性设置一到多个关节位置

    • joint_position_controller
    • joint_group_position_controller
  • velocity_controllers: 一次性设置一到多个关节的速度

    • joint_velocity_controller
    • joint_group_velocity_controller
  • joint_trajectory_controllers:控制整条轨迹

    • position_controller
    • velocity_controller
    • effort_controller
    • position_velocity_controller
    • position_velocity_acceleration_controller

上述官方提供的控制器不合你意的话,可以自己通过Control manager实现自己的控制器。

3. 硬件接口

在这里插入图片描述

以上说的控制器,在收发命令的时候,需要用到与之对应的硬件接口。通过硬件接口来与RobotHW打交道。官方提供的接口有如下几种,具体就不再细说,