# 1.Moveit2介绍与安装 你可能不知道,你平时用的微波炉、冰箱等家电其实是机器人生产的。目前世界上运用最广的机器人其实并不是轮式的,而是工业机器人,也就是你常听说的机械臂。 因为机械臂可以像人的手一样到达空间中的各种姿态,并且可以实现很高(亚毫米)的精度,因此其应用非常的广泛。 机械臂一般是由多个关节(像人手一样)组成的,每个关节里面其实就是一个个电机。如图1-1所示,这是一个常见的六轴机械臂,关节虽小,五脏俱全,图1-2是关节的组成结构。 图1-1 ![图片](1.Moveit2介绍与安装/imgs/640-16566733496432.png) 图1-2 ![图片](1.Moveit2介绍与安装/imgs/640.png) 一般机械臂的关节都会提供位置控制、力控制或速度控制接口给我们使用,拿图1-1的六轴机械臂来说,假如我们可以改变每一个关节的角度,那么就可以让机械臂的末端到达各种姿态。 但随之而来的问题就来了,如何让机械臂末端以我们想要的速度、想要的轨迹到达我们想要的位置,有问题就有解决方案,基于ROS2的机械臂运动规划、感知、运动学、控制和导航的Moveit2就被设计出来解决这一类问题。 Moveit2的前身是Moveit,Moveit2继承了Moveit的优点结合ROS2带来的新特性,实现了一个更加强大的机械臂控制框架,所以从本章开始,我将带你一起学习和使用Moveit,并带你将自己的机械臂模型适配Moveit2。 ## Moveit2介绍 MoveIt2是基于ROS2的机器人操作平台,其集成了运动规划,操作,3D感知,运动学,控制和导航方面的最新技术与一体。 ### 架构介绍 接着我们来简单看下Moveit2的框架如图1-3所示 ![img](1.Moveit2介绍与安装/imgs/moveit_pipeline.png) 简单的可以将图1-3拆分为以下几个部分: ```mermaid graph LR 环境信息--地图等-->B A[控制接口]--指令-->B[规划流水线] B--运动轨迹-->D[轨迹执行管理器] D-->机械臂 ``` 其中规划流水线,通过调用规划接口产生轨迹,之后进行碰撞检测,若不通过则继续规划,直到产生一条无碰撞的轨迹。 #### 规划接口 Moveit2提供三个默认的规划流水线的实现。 - 基于开源运动规划库的规划器OMPL - 基于搜索的规划器SBPL - 基于梯度轨迹优化的协变哈密顿量优化规划器CHOMP #### 碰撞检测 Moveit2提供了两种实现 - 基于FCL库实现的碰撞检测。 - 基于