~欢迎关注~

微信公众号:古月居

新浪微博:古月春旭

知乎专栏:古月居

原文链接:古月私房课 | 搭建仿真环境一样玩转ROS机械臂

 

大家好,这里是《ROS机械臂开发:从入门到实战》的第五讲——搭建仿真环境一样玩转ROS机械臂,我是主讲人胡春旭。

幻灯片1

本讲我们将从以下三个部分进行讲解。

幻灯片2

首先是ROS中针对控制器功能的ros_control。

幻灯片3

在应用层面,ROS中有Navigation、SLAM、MoveIt!等众多功能,但这些功能输出的速度、轨迹到底该如何与真实机器人结合,这是很多ROS开发者的疑惑,ros_control就是为实现这里的控制中间件而诞生的。

幻灯片4

ros_control提供了一系列针对控制器的功能,由Controller Manager管理众多控制器,控制器内的主要功能是基于PID的闭环控制。为满足不同硬件的扩展,ros_control还设计了一个硬件抽象层,将软件算法和硬件接口剥离。

幻灯片5

ros_control提供了常用的控制器,如位置控制、速度控制、力控制,还有一个虽然没有控制功能,但依然称为controller的关节状态控制器,完成机器人关节状态的周期反馈。

幻灯片6

将模型放入Gazebo仿真之前,还需要确认或添加以下模块。

幻灯片7

首先检查模型中的每个link是否都添加了惯性参数和碰撞属性。

幻灯片8

然后为每个运动的joint配置传动装置,传动装置可以理解为是电机+减速机,这里我们为机械臂的六个关节配置了位置控制接口的传动装置。

幻灯片9

为了将模型的传动装置转起来,还需要添加gazebo中的控制器插件,具体参数通过后续的讲解添加。

幻灯片10

确认以上内容后,就可以把模型放置到仿真环境中了,使用如下launch文件加载模型到Gazebo中。

幻灯片11

运行仿真环境后,可以看到机械臂已经成功加载到Gazebo中,但此时的机械臂还无法运动。

幻灯片12

第三个部分,我们就来介绍如何让机械臂动起来。

幻灯片13

在动之前,我们应该了解MoveIt!控制机械臂的整体架构,大家可以参考下图,这也是我们系列课程最重要的一页PPT,理解了这张图才能更好的将MoveIt!应用于真实机器人/仿真的开发。

幻灯片14

MoveIt!+Gazebo仿真架构与上图一致,重点是完成控制接口两端的Follow Joint Trajectory、Joint Trajectory Controller、Joint State Controller配置。

幻灯片15

先来配置Gazebo端的Joint Trajectory Controller,这是action通信的server端,其中的关节名称必须要与机器人模型中的joint名称一致,并通过launch文件加载配置参数并启动控制器。

幻灯片16

然后是Joint State Controller的配置,以50Hz的频率发布机器人的关节状态。

幻灯片17

最后是MoveIt!端的Follow Joint Trajectory,作为action通信的client端,将Moveit!规划好的轨迹发给Gazebo。

幻灯片18

以上配置的各种controller,通过如下launch文件一次启动。

幻灯片19

配置完成后,就可以使用如下命令启动仿真系统了,会同时打开Gazebo和MoveIt!界面。

幻灯片20

通过MoveIt!控制机械臂运动规划,Gazebo中的机械臂也将同步运动。

幻灯片21

我们还可以通过话题消息看到MoveIt!规划得到的轨迹数据,轨迹点使用关节空间下的速度、位置、加速度进行描述。

幻灯片22

以上就是本讲的内容概要,详细讲解过程和操作视频请见具体课程。

幻灯片24

更多精彩,欢迎大家关注“古月居”。

幻灯片27

 

更多内容欢迎关注:

微信公众号:古月居 (guyue_home)

新浪微博:古月春旭

知乎专栏:古月居