~欢迎关注~
微信公众号:古月居
新浪微博:古月春旭
知乎专栏:古月居
大家好,这里是《ROS机械臂开发:从入门到实战》的第五讲——搭建仿真环境一样玩转ROS机械臂,我是主讲人胡春旭。
本讲我们将从以下三个部分进行讲解。
首先是ROS中针对控制器功能的ros_control。
在应用层面,ROS中有Navigation、SLAM、MoveIt!等众多功能,但这些功能输出的速度、轨迹到底该如何与真实机器人结合,这是很多ROS开发者的疑惑,ros_control就是为实现这里的控制中间件而诞生的。
ros_control提供了一系列针对控制器的功能,由Controller Manager管理众多控制器,控制器内的主要功能是基于PID的闭环控制。为满足不同硬件的扩展,ros_control还设计了一个硬件抽象层,将软件算法和硬件接口剥离。
ros_control提供了常用的控制器,如位置控制、速度控制、力控制,还有一个虽然没有控制功能,但依然称为controller的关节状态控制器,完成机器人关节状态的周期反馈。
将模型放入Gazebo仿真之前,还需要确认或添加以下模块。
首先检查模型中的每个link是否都添加了惯性参数和碰撞属性。
然后为每个运动的joint配置传动装置,传动装置可以理解为是电机+减速机,这里我们为机械臂的六个关节配置了位置控制接口的传动装置。
为了将模型的传动装置转起来,还需要添加gazebo中的控制器插件,具体参数通过后续的讲解添加。
确认以上内容后,就可以把模型放置到仿真环境中了,使用如下launch文件加载模型到Gazebo中。
运行仿真环境后,可以看到机械臂已经成功加载到Gazebo中,但此时的机械臂还无法运动。
第三个部分,我们就来介绍如何让机械臂动起来。
在动之前,我们应该了解MoveIt!控制机械臂的整体架构,大家可以参考下图,这也是我们系列课程最重要的一页PPT,理解了这张图才能更好的将MoveIt!应用于真实机器人/仿真的开发。
MoveIt!+Gazebo仿真架构与上图一致,重点是完成控制接口两端的Follow Joint Trajectory、Joint Trajectory Controller、Joint State Controller配置。
先来配置Gazebo端的Joint Trajectory Controller,这是action通信的server端,其中的关节名称必须要与机器人模型中的joint名称一致,并通过launch文件加载配置参数并启动控制器。
然后是Joint State Controller的配置,以50Hz的频率发布机器人的关节状态。
最后是MoveIt!端的Follow Joint Trajectory,作为action通信的client端,将Moveit!规划好的轨迹发给Gazebo。
以上配置的各种controller,通过如下launch文件一次启动。
配置完成后,就可以使用如下命令启动仿真系统了,会同时打开Gazebo和MoveIt!界面。
通过MoveIt!控制机械臂运动规划,Gazebo中的机械臂也将同步运动。
我们还可以通过话题消息看到MoveIt!规划得到的轨迹数据,轨迹点使用关节空间下的速度、位置、加速度进行描述。
以上就是本讲的内容概要,详细讲解过程和操作视频请见具体课程。
更多精彩,欢迎大家关注“古月居”。
更多内容欢迎关注:
微信公众号:古月居 (guyue_home)
新浪微博:古月春旭
知乎专栏:古月居