ROS进阶(五):机械臂项目实战

您所在的位置:网站首页 机械臂的原理图解视频 ROS进阶(五):机械臂项目实战

ROS进阶(五):机械臂项目实战

2024-05-28 14:34| 来源: 网络整理| 查看: 265

声明:ROS进阶教程参考了《ROS机器人开发实践》,由胡春旭老师所著。此系列教程唯一目的是学习与分享,与大家共勉。若感兴趣,请大家购买原版书籍进行学习,侵权删。

本文在Ubuntu18.04 + ROS melodic环境下完成,其他ROS版本类似。

项目github链接:

一、项目介绍

1、项目内容

机械臂是机器人中运用最广泛、成熟的一种,主要应用于工厂自动化环境。机械臂经过几十年的发展,技术相对成熟,包括运动学正逆解、运动轨迹规划、碰撞检测算法等。随着协作机器人的发展,机械臂也逐渐开始走入人们的生活。ROS提供了不少针对机械臂的功能包,这些功能包集成为一个单独的ROS软件——MoveIt!。

MoveIt!为开发者提供了一个易于使用的集成化开发平台,由一系列移动操作的功能包组成,包含运动规划、操作控制、3D感知、运动学、控制与导航算法等,且提供友好的GUI,可以广泛应用于工业、商业、研发和其他领域。

MoveIt!已经支持几十种常用机器人了,也可以非常灵活地应用到自己的机器人上。详情请查看:

2、预期目标

学会使用MoveIt!实现机械臂控制的四个步骤:

组装:在控制之前需要有机器人,可以是真实的机械臂,也可以是仿真的机械臂,但都要创建完整的机器人urdf模型。配置:使用MoveIt!控制机械臂之前,需要根据机器人urdf模型,使用Setup Assistant工具完成自碰撞矩阵、规划组、终端夹具等配置,配置完成后生成一个ROS功能包。驱动:使用ArbotiX或者ros_control功能包中的控制器插件,实现对机械臂关节的驱动。插件的使用方法一般分为两步:首先创建插件的YAML配置文件;然后通过launch文件启动插件并加载配置参数。控制:MoveIt!提供了C++、Python、rviz插件等接口,可以实现机器人关节空间和工作空间下的运动规划,规划过程中会综合考虑场景信息,并实现自主避障的优化控制。二、MoveIt!系统架构

在开始使用MoveIt!之前,我们先来了解一下其主要组成部分。

1、运动组(move_group)

move_group是MoveIt!的核心节点,可以综合其他独立的功能组件为用户提供ROS中的动作指令和服务。

move_group本身并不具备丰富的功能,主要完成各功能包、插件的集成。它通过消息或服务的方式接受机器人发布的点云信息、关节消息状态,以及机器人的TF坐标变换;另外,还需要ROS参数服务器提供机器人的运动学参数,这些参数可根据机器人的urdf模型生成(srdf和配置文件)。

(1)用户接口

MoveIt!提供三种可供调用的接口:

C++:使用move_group_interface包提供的API。Python:使用moveit_commander包提供的API。GUI:使用MoveIt!的rviz插件。

(2)ROS参数服务器

ROS参数服务器需要为move_group提供三种信息:

urdf:从ROS参数服务器中查找robot_description参数,获取机器人模型的描述信息。srdf:从ROS参数服务器中查找robot_description_semantic参数,获取机器人模型的一些配置信息,这些配置信息通过配置工具MoveIt!Setup Assistant生成。config:机器人的其他配置信息,例如关节限位、运动学插件、运动规划插件等。

(3)机器人

move_group和机器人之间通过Topic和Action通信,机器人传感器和机器人状态发布者将机器人的关节信息和坐标变换关系发送给move_group。如果需要加入机器人外部感知能力,还需要通过机器人3D传感器发布点云数据。另外还有一个很重要的模块——机器人控制器,通过Action的形式接收move_group的规划结果,并且将执行情况反馈给move_group。

move_group结构很容易通过插件的形式进行扩展,已



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3