MoveIt的使用(二)机械臂URDF在ROS中MoveIt的配置和使用

本文档详细介绍了如何在ROS中进行机械臂的可视化操作,包括SOLIDWORKS模型转urdf文件,使用rviz和gazebo进行仿真。同时,还阐述了MoveIt!的配置过程,如自动生成自碰撞矩阵、添加规划组和末端执行器,以及配置3D感知和Gazebo仿真。最后,通过启动rviz实现机械臂的可视化展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、机械臂在ros里面的可视化

在SOLIDWORKS转换成urdf文件之后,生成的文件放在新建的功能包中后,编译(catkin_make),再执行下面代码即可运行可视化文件

roslaunch description dispaly.launch
roslaunch description gazebo.launch

这两个文件是转换成urdf文件里面自动生成的,description是自己命名的solidworks生成的文件,第一个是rviz可视化机械臂,第二个是gazebo仿真环境可视化机械臂。
在这里插入图片描述
运行之后需要把坐标系更改为base_link,在Add里面添加RobotModel,这样就可以显示机械臂了。

二、配置MoveIt!Setup Assistant

安装MoveIt

sudo apt-get install ros-noetic-moveit
source /opt/ros/noetic/setup.bash

这里可以用下面的代码查看是否安装成功,并查看moveit!的版本

moveit_version

然后启动MoveIt!Setup Assistant,这一步需要在新建的工作空间中执行,并且打开rocore ,再source一下,因为下面会需要选择功能包中的urdf文件,不在功能包中会失败。

roscore
source devel/setup.bash
rosrun moveit_setup_assistant moveit_setup_assistant

1.开始配置

在运行上一行代码后,会启动带有两个选择的开始屏幕:创建新的MoveIt配置包(Create New MoveIt Configuration Package)或编辑现有的MoveIt配置包(Edit Existing MoveIt Configuration Package)。

  • 点击“创建新的moveit配置包”按钮。
    在这里插入图片描述

  • 后面的界面,选择功能包中的urdf文件,然后点击Load Files
    在这里插入图片描述

如果遇到

'xarm_description'. Verify this package is inside your ROS workspace
and is a proper ROS package.

1.首先需要确认,roscore是否已经运行。

2.在Workspace的devel文件夹下,打开命令行,并且输入source setup.bash,将文件目录加载到命令行中。

3.再次输入 rosrun moveit_setup_assistant moveit_setup_assistant 打开moveit!Setup assistant工具

2.产生自碰撞矩阵 Self-Collision Matrix

默认自碰撞矩阵生成器在机器人上搜索可以安全禁用碰撞检查的链接对,从而减少了运动计划的处理时间。当这些链接对始终处于碰撞状态,从不碰撞,处于机器人默认位置的碰撞状态或在运动链上彼此相邻时,这些链接对将被禁用。采样密度指定要检查自我碰撞的随机机器人位置的数量。较高的密度需要更多的计算时间,而较低的密度则有可能禁用不应禁用的对。默认值为10,000个冲突检查。并行执行冲突检查以减少处理时间。
在这里插入图片描述

  • 单击左侧的“ 自碰撞”窗格选择器,然后单击“ 生成碰撞矩阵”按钮。在将您的计算结果显示在主表中之前,设置助手将工作几秒钟。
    在这里插入图片描述

3.添加虚拟关节 virtual joint

这一步骤主要是将机械臂连接到其他部件上,这次咱们只用了机械臂,就不进行设置。

4.添加规划组 planning group

moveit通过定义规划组(planning group)来语义上定义机械臂的各个部分(如手臂和末端执行器),这一部分很重要。

  • 点击左侧Planning Groups

  • 点击Add Group
    在这里插入图片描述
    添加手臂规划组arm

  • 输入名称 arm

  • 运动学求解器选择kdl_kinematics_plugin/KDLKinematicsPlugin

  • Kin.parameters file选择solidworks插件生成的config文件夹里面的文件

  • 点击Add Joint ,会出现所有关节,选择属于机械臂的关节,再点击>添加到右侧。
    这个地方要注意是属于机械臂的关节,还是末端执行器的关节。

  • 点击保存
    在这里插入图片描述
    添加末端执行器规划组,步骤跟第一步一样,在选择关节的时候注意选择末端执行器的关节。

5.添加机器人姿态 Robot Poses

moveit允许添加预设的机器人姿态,方便之后使用,例如在后面进行运动规划的时候,一条语句就可以让机械臂运动到,预设的姿态。

  • 选择左侧 Robot Poses
  • 点击规划组arm,右侧会出现各个关节的滑条,拖动设置想要的姿态
  • 点击Save保存
    在这里插入图片描述
    在这里插入图片描述

6.配置末端执行器End Effectors

MoveIt中会给末端执行器一个专门的标签-End Effectors。之前我们已经为末端执行器添加了规划组,这里我们要将其标记为End Effector

  • 选择左侧End Effectors
  • 点击Add End Effector
  • End Effector Name设置为hand
  • End Effector Group选择之前添加的末端执行器规划组
  • 父关节选择为机械臂与末端执行器连接的关节
  • 父规划组选择留空白
    在这里插入图片描述

7.添加被动关节Passive Joints

如果机器人中有被动的关节(不是主动控制的关节),需要将其添加为被动关节,这样可以告诉MoveIt在规划运动的时候这些关节是无法主动控制的。
我们机械臂中没有被动关节,跳过这一步。
在这里插入图片描述

8.设置3D感知 3D Perception

这里可以为机械臂添加传感器,如kinetic。
参数配置参考tutorial

如没有传感器,设置为None
在这里插入图片描述

9.Gazebo仿真

如果需要在Gazebo中仿真,可以在这里生成需要的URDF文件。(不需要可以跳过)

生成URDF后,通过如下步骤在Gazebo中生成仿真

  • 建立一个空的world
roslaunch gazebo_ros empty_world.launch paused:=true use_sim_time:=false gui:=true throttled:=false recording:=false debug:=true
  • 加载模型
rosrun gazebo_ros spawn_model -file </path_to_new_urdf/file_name.urdf> -urdf -x 0 -y 0 -z 1 -model panda

10.添加作者信息

可以把自己的信息填入,之后发布的时候需要

  • 选择Author Information
  • 输入名字和邮箱
    在这里插入图片描述

11.生成配置文件

  • 选择左侧Configuration Files,点击Browse选择一个合适的位置,
    在这里插入图片描述

三、启动rivz可视化

roslaunch marm_moveit_config demo.launch

关于这个时候的rviz以及moveit编程控制,下一个文章会详细讲解一下。

### MATLAB 中使用 MoveIt2 进行机器人路径规划 在 MATLAB 中利用 MoveIt2 实现机器人路径规划涉及多个方面,包括配置环境、编写脚本以及调用特定功能来完成任务。为了更好地理解操作这一过程,下面提供了详细的指南。 #### 配置 ROS2 MoveIt2 环境 首先,在 MATLAB 中启动 ROS2 节点之前,需确保已安装好 ROS2 并正确设置了环境变量。接着按照官方文档指示下载并编译 MoveIt2 工作区[^3]。一旦完成了这些准备工作,则可以在 MATLAB 内部初始化 ROS2 客户端: ```matlab rosinit('http://localhost:11311'); ``` 此命令会建立到本地运行的 ROS 主节点连接;如果是在远程计算机上部署的服务,则应替换 URL 参数为实际地址。 #### 加载 MoveIt2 插件 为了让 MATLAB 支持 MoveIt2 的高级特性,比如复杂的碰撞检测或是优化后的轨迹生成等功能,需要加载相应的插件库文件。通常情况下,这类资源会被打包成 `.mex` 文件形式分发给用户,并放置于指定目录下以便被识别加载。 ```matlab addpath('/opt/ros/foxy/lib/matlab/moveit'); % 根据实际情况调整路径 moveit_load(); ``` 上述代码片段展示了怎样向当前 session 添加外部库的位置信息,并激活 MoveIt2 功能模块。 #### 创建与管理 Planning Scene 场景 Planning scene 是指描述环境中静态物体集合的数据结构,它对于确保所计算出来的运动方案安全可行至关重要。通过 `planningScene` 对象可方便地构建此类模型,并将其传递给后续用于求解具体问题的方法中去。 ```matlab scene = planningScene; % Add objects into the scene... show(scene); % 可视化显示整个场景布局情况 ``` 这里简单介绍了如何实例化一个空白 canvas 来容纳更多元素,同时也给出了查看最终成果的方式方法。 #### 设定目标姿态并请求路径解决方案 当一切准备就绪之后就可以着手定义期望达到的目标状态了——无论是末端效应器的具体方位还是其他任何有意义的关键点都可以作为输入参数传入。随后借助内置函数发起查询请求以获取满足条件的一系列中间过渡姿势序列。 ```matlab group_name = 'manipulator'; % 替换成自己的组名 target_pose = trvec2tform([0.7, -0.2, 0.5]); % XYZ坐标转换为齐次变换矩阵表示法 plan_request(group_name,target_pose); ``` 以上示例假设读者正在处理的是六自由度串联型机械(即所谓的“manipulator”),并且设定了一个位于 (0.7,-0.2,0.5)m 处的理想终点位置。当然也可以根据项目需求灵活更改这部分设定。 #### 执行计划好的动作指令集 最后一步就是把前面得到的结果付诸实施啦!这往往意味着要把一系列离散化的关节角度变化量发送出去供物理硬件遵照执行。幸运的是,MATLAB 提供了一套简洁易懂 API 接口使得这一切变得轻而易举起来。 ```matlab execute_plan(plan_result); ``` 只需一行简单的语句就能触发整个流程运转起来了呢!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anthony-36

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值