ubuntu16.04下ROS操作系统学习笔记(九)Moveit(上)

简介: ubuntu16.04下ROS操作系统学习笔记(九)Moveit(上)

Moveit的前身是PR2机器人的机械臂的代码包,之后被集成为一个软件包。它不仅可以实现单个机械臂的控制。而且可以实现两个机械臂的协调控制。而且可以RGB摄像头采集外部障碍物信息,完成自主避障这样的功能。由一系列移动操作的功能包组成,运动规划,操作控制,3D感知,运动学,控制与导航算法。同时提供友好的GUI界面。系统架构如下图所示:

在这里面有一个非常核心的节点,是move_group节点,类似于rosmaster在ros当中的地位。如上图所示,move_group处于中心的这样一个位置,其他的组件跟move_group有一个数据上的交互,它本身并不具备丰富的功能,主要是其他插件的集成,通过消息或者服务的形式来接收机器人发布的一些信息。左边是一系列的插件,能够帮助我们去完成程序编程的接口,还有一些可视化的接口。ROS参数服务器里面主要有机器人的模型参数。URDF:robot_description参数,获取机器人URDF模型的描述信息。SRDF:robot_description_semantic参数获取机器人模型的配置信息。config:机器人的其他配置信息,例如关节限位,运动学插件,运动规划插件等。另外一个很重要的部分就是机器人,通过摄像头或者其他的外部感知设备采取到外部的障碍物信息等,然后将其发布到move_group里面,能够实现自主避障这样的一个功能。机器人的状态信息也可以发布到move_group里面,通过action实现通讯,完成控制。里面含有大量的插件,我们也可以自己设计自己的插件,只要满足插件的形式就可以了。

我们看一下机器人运动规规划器的插件结构,假设我们已经知道了机器人的初始姿态,和目标姿态,和周围环境的模型参数,那我们就可以通过某种算法,找到一条路径,使得机器人能够从初始姿态到达目标姿态,且在路径中不跟周围物体或自己发生碰撞。这种方法就是机械臂的路径规划算法。我们也可以使用双目摄像头,或者单目摄像头来帮助我们实现对周围物体的感知,更好地规划算法。所以运动规划器就是来帮助我们实现运动规划的这样一个插件。

我们实现机器人的运动规划是有一系列的约束条件的,约束条件是通过配置文件来实现的,在规划请求适配器组里面有很多的插件,能够实现很多小功能。比如说一个运动规划请求输入进来,我们发现机器人的初始位姿并不是这样一个初始位姿,然后我们就可以通过适配器来修正初始位姿等这样一些信息。

如果我们需要机器人夹取桌子上的杯子的话,我们就需要把桌子的模型和杯子的模型去告诉我们的moveit。这个就是通过规划场景监听器来实现的,监听器可以监听下图的这些感知信息。

从上诉可知,moveit里面有很多插件,能够帮助我们实现相应的功能。Moveil使用步骤:

1.组装:创建机器人URDF模型

2.配置:使用Moveil!Setup Assistant工具生成配置文件

3.驱动:添加机器人控制器插件(controller)

4.控制:Moveit!控制机器人运动(算法仿真、物理仿真)。

那么我们如何来创建机器人的模型呢?可以在视频的源码包里面找到相关的源码,视频里面也有对模型做相关的解释。launch文件如下,主要是加载模型,发布节点信息,运行可视化界面/

功能包编译完成之后,我们使用以下命令来查看一下:

roslaunch marm_description view_arm.launch

我们已经创建了一个机械臂,接下来我们需要创建配置文件,这个配置文件的生成我们需要使用moveit里面的工具,Moveit Setup Assistant。可以帮助我们通过可视化的形式完成一系列的配置工作,这个工具可以通过以下命令启动。

 roscore
 rosrun moveit_setup_assistant moveit_setup_assistant

启动之后会弹出如下的界面:

主界面里面有两个选项,一个是创建一个新的包,一个是编译已有的包。

这里我们选择创建一个新的功能包,

接下来我们需要去找到我们的配置文件,选中我们的模型文件,然后点击右下角的加载模型按钮:

这样的话我们的第一步加载机器人模型就创建好了。

第二步我们需要去点击左边列表的第二个选项,主要是采样一系列的检测点,去检测机械臂的各各关节在运动的过程当中是否会发生碰撞,在这一步我们只需要去点击Generate Collision Matrix按钮就能够自动地去完成采样和计算,通过这样一系列的数据,我们在后面去做运动规划的时候,就可以提高运算的效率。

第三个步骤是虚拟关节,这个虚拟关节我们这里用不到,比如说我们需要将机械臂固定到一个底盘上面。这里的话我们直接跳过这里,到第四个步骤,运动规划组。

在这里我们可以去添加几个规划组,我们的控制都是通过规划组来控制的。比如说我们的机器人,我们可以将其分开成两个部分,一个是六轴机械臂的部分,另外还有一个就是夹爪的部分。那么我们可以将这两个部分分开,去配置相关的规划组。我们可以通过点击右下角的按钮来对其进行添加。第参数是规划组的名称、运动学求解器是什么、运动学求解器的基本参数。

接下来点击Add Kin. Chain来做配置,

按照上图将其配置完成,之后点击save

我们还要配置夹爪,点击右下角的Add Group,然后填写名称,由于夹爪是直线运动,并不需要运动学的求解器,我们也不用去添加串行的链条,我们点击Add Joints来添加手指。

相关实践学习
Docker镜像管理快速入门
本教程将介绍如何使用Docker构建镜像,并通过阿里云镜像服务分发到ECS服务器,运行该镜像。
阿里云资源编排ROS使用教程
资源编排(Resource Orchestration)是一种简单易用的云计算资源管理和自动化运维服务。用户通过模板描述多个云计算资源的依赖关系、配置等,并自动完成所有资源的创建和配置,以达到自动化部署、运维等目的。编排模板同时也是一种标准化的资源和应用交付方式,并且可以随时编辑修改,使基础设施即代码(Infrastructure as Code)成为可能。 产品详情:https://www.aliyun.com/product/ros/
相关文章
|
1月前
|
存储 Ubuntu 网络安全
|
6月前
|
Ubuntu 应用服务中间件 nginx
如何在 Ubuntu 操作系统上重新启动 Nginx?
如何在 Ubuntu 操作系统上重新启动 Nginx?
312 0
如何在 Ubuntu 操作系统上重新启动 Nginx?
|
3月前
|
Ubuntu Unix Linux
Linux 学习笔记一: 常见操作系统相关概念
Linux 学习笔记一: 常见操作系统相关概念
Linux 学习笔记一: 常见操作系统相关概念
|
4月前
|
Ubuntu Linux 开发工具
Linux操作系统Ubuntu 22.04配置Visual Studio Code与C++代码开发环境的方法
Linux操作系统Ubuntu 22.04配置Visual Studio Code与C++代码开发环境的方法
129 1
|
4月前
|
存储 Ubuntu Linux
虚拟机VMware Workstation Pro中配置Linux操作系统Ubuntu的方法
虚拟机VMware Workstation Pro中配置Linux操作系统Ubuntu的方法
|
4月前
|
程序员 Linux
不愧是华为内部的“操作系统学习笔记”,一篇说细节,一篇讲哲学
当然重要,身为程序员的我们,那更应该深刻理解和掌握操作系统,虽然我们日常 CURD 的工作中,即使不熟悉它们,也不妨碍我们写代码,但是当出现问题时,没有这些基础知识,你是无厘头的,根本没有思路下手,这时候和别人差距就显现出来了,可以说是程序员之间的分水岭。
|
5月前
|
传感器 机器人 C++
机器人操作系统ROS 编程开发--详细总结
最近工作涉及到自动驾驶的,需要学习ROS,学习中总结了一些知识点,分享给大家。 机器人操作系统ROS,是一种分布式处理框架(又名Nodes),ROS常用C++和python编程语言开发;(这里项目开发采用C++ 11版本)。ROS的点对点设计以及服务和节点管理器等机制,可以分散由计算机视觉和语音识别等功能带来的实时计算压力,能够适应多机器人遇到的挑战。ROS免费并且开源。
326 0
|
7月前
|
Ubuntu Linux 数据安全/隐私保护
安装Ubuntu Linux 操作系统(以Ubuntu20.04为例)方法1
安装Ubuntu Linux 操作系统(以Ubuntu20.04为例)方法1
367 1
|
7月前
|
编译器 调度 C语言
【学习笔记】小 O 带你掌握操作系统的心跳 - OneOS 内核启动
一、简介 内核启动介绍了整个系统从硬件上电如何一步步进入用户程序的过程。一般情况下,启动过程分为硬件上电,首先运行和体系架构相关的启动汇编文件,进行一些最基本硬件的初始化 (例如 CPU 配置,时钟,栈地址,RAM 等),为内核运行铺垫好环境,然后初始化内核各模块 (例如调度器,定时器等),接着创建系统任务 (例如空闲任务) 和用户任务,最后启动调度和运行用户程序。
84 0
|
7月前
|
Ubuntu Linux iOS开发
ROS与操作系统版本对应关系
ROS与操作系统版本对应关系
841 0

热门文章

最新文章