随着机器人技术的快速发展,机械臂在工业自动化、服务机人等领域的应用日益广泛。MoveIt作为ROS生态中功能强大且成熟的机械臂运动规划框架,为机械臂的运动规划、碰撞检测、逆运动学求解等提供了完整这的解决方案。
本节开始,我们将分三期学习实践从零到玩转Moveit机械臂控制,带领读者从零开始,详细讲解如何搭建MoveIt环境,导入机械臂模型,使用Setup Assistant生成MoveIt功能包,并最终实现机械臂的运动控制。通过本教程,读者能够掌握MoveIt的基本使用方法,为后续复杂的机械臂应用打下坚实基础。
摘要
使用URDF导出Moveit功能包
标签
ROS1、moveit、机械臂
仓库
- 导航仓库: https://github.com/agilexrobotics/Agilex-College
- 项目仓库: https://github.com/agilexrobotics/piper/piper_moveit.git
使用环境
系统:ubuntu 20.04
ROS版本:noetic
MoveIt简介
MoveIt 是 ROS1 中最成熟、应用最广泛的机械臂运动规划框架,为机器人提供从模型描述到运动执行的一整套解决方案。
MoveIt 主要解决的问题包括:
- 机械臂运动规划(Motion Planning)
- 碰撞检测(Collision Checking)
- 逆运动学(IK)
- 轨迹生成与执行
- RViz 可视化与交互
Moveit安装
可以直接使用二进制安装;使用以下命令安装和moveit相关的所有组件
sudo apt install ros-noetic-moveit*
下载URDF文件
首先创建一个新的工作空间;并下载URDF 模型
mkdir -p ~/piper_ws/src
cd ~/piper_ws/src
catkin_init_workspace
git clone https://github.com/smalleha/piper_urdf -b noetic
cd ..
catkin_make
编译通过之后,可以使用以下命令在rviz中查看模型
这里以piper_x作例子
cd ~/piper_ws/src
source devel/setup.bash
roslaunch piper_x_description display_xacro.launch
图片
使用Setup Assistant导出Moveit包
启动moveit_setup_assistant
roslaunch moveit_setup_assistant setup_assistant.launch

选择Create New Moveit Configuration Package;创建一个新的Moveit功能包;然后加载机械臂

计算碰撞模型;因为自由一条臂,使用默认参数即可

跳过选择虚拟关节;来到定义规划组;我们这里需要创建两个规划组,机械臂规划组和夹爪规划组;这里先创建机械臂规划组;Group Name设为arm,运动学求解器使用KDL,OMPL Planning 选择RRTstar

设置Kin.Chain

添加规划组的控制关节,选择joint1~joint6,点击>,然后保存

创建gripper的规划组,步骤略有不同;因为夹爪的只有两个关节,所以不需要用到运动学求解器和OMPL

添加规划组的控制关节,选择joint7~joint8,点击>,然后保存

规划组创建完成

设置Robot Pose;在这里可以预先设置好规划组的一些动作;因为是二指夹爪,必须得设置夹爪打开和闭合的动作

先设置机械臂的

设置夹爪闭合状态

设置夹爪张开状态

跳过End Effectors和Passive Joints;设置控制器,这里使用的是position_controllers

Simulation 会生成和gazebo中使用的URDF文件,里面添加了关节的电机属性等物理属性

配置完之后,填上自己的名称以及邮箱

设置功能包名称;然后点击Generate Package输出功能包

启动moveit功能包
cd ~/piper_ws/src
source devel/setup.bash
roslaunch piper_x_moveit_config demo.launch

成功启动之后,就可以拖动悬浮球,预设机械臂的位置,点击Plan & Execute控制机械臂运动了
本文系统介绍了基于MoveIt的机械臂控制流程,从环境搭建、URDF模型导入,到MoveIt功能包的生成与启动,涵盖了机械臂运动规划的关键步骤。通过实践操作,读者不仅熟悉了MoveIt的基本功能,还掌握了如何利用Setup Assistant快速生成适配自己机械臂的配置包。后续可以在此基础上,结合具体应用场景,进一步实现复杂的运动规划、路径优化及与传感器的融合控制。
往期推荐
第一弹:机械臂固定点位录制与播放功能实现
第二弹:机械臂连续轨迹录制与播放功能实现
第三弹:用颜色说话,机械臂如何"看懂"方块与曲线并自动执行?
第四弹:如何用一部手机就能做到!不用遥控器也能控机械臂
第五弹:松灵PIPER机械臂手势识别与位置映射
第六弹:PiPER移植lerobot运动控制优化
第七弹:松灵PIPER机械臂实现Eigen线代库解算正逆运动学
第八弹:松灵Pika数采夹爪遥操任意机械臂的方法
第九弹:从零入门遥操作(UR篇)
第十弹:手柄遥操机械臂直观的机械臂控制新体验
第十一弹:松灵LIMO PRO的实例分割与点云提取实现
第十二弹:基于yolo算法识别的物体抓取
第十三弹:教你使用PiPER RL训练一个简单的任务
第十四弹:手把手教你完成 PiPER 机械臂的手眼标定(附完整命令)
第十五弹:在genesis上完成松灵PIPER单臂仿真与控制
第十六弹:Isaac_Sim 导入松灵PiPER URDF
第十七弹:用LIMO复现一篇IEEE论文