【Moveit2】使用moveit_setup_assistant配置自己的机械臂功能包

【Moveit2】使用moveit_setup_assistant配置自己的机械臂功能包

文章目录

  • 【Moveit2】使用moveit_setup_assistant配置自己的机械臂功能包
    • 1.确保你已经安装了moveit2环境
    • 2.配置机械臂功能包
    • Reference

环境信息:

  • ubuntu 22.04
  • ros2 humble
  • moveit2

1.确保你已经安装了moveit2环境

如果没有配置moveit2环境的,可以参考这篇博客:Ubuntu22.04 + ROS2 Humble配置Moveit2环境

可以使用以下的命令来再次安装,确保自己的环境是正确的

sudo apt install  ros-humble-moveit ros-humble-moveit-setup-assistant -y

2.配置机械臂功能包

首先,我们可以新建一个功能空间命名为arms_ws,创建一个panda_robot作为功能包

mkdir -p arms_ws/src
cd arms_ws/src
mkdir panda_robot
cd ..
cd ..

如果你安装过moveit2_tutorials,你可以在你的功能包中找到这个文件夹.../your_workspace/src/moveit_resources/panda_description ,拷贝这个文件夹panda_descriptionarms_ws/src/panda_robot中。如果你没有使用过moveit2_tutorials,你可以在这里找到这个文件夹:https://github.com/ros-planning/moveit_resources/tree/ros2/panda_description,下载这个文件夹然后放置在arms_ws/src/panda_robot中。放置完毕后记得进行构建,然后source

colcon build
source install/setup.bash

这里一定要记得source,不然后面会导致找不到.urdf文件。

然后我们就可以启动moveit_setup_assistant来进行配置了,这里有两种启动方式,任选一种即可:

ros2 launch moveit_setup_assistant setup_assistant.launch.py
ros2 run moveit_setup_assistant moveit_setup_assistant

启动后的界面如下:

Image

选择Create New Moveit Configuration Package,创建一个新的moveit配置功能包。

然后选中机械臂的描述文件,这里应该选择panda_description/urdf/panda.urdf这个文件,然后选择Load Files,就可以看到右边加载出来了机械臂的模型。

Image

然后我们配置Self-Collisions,这个是配置机械臂关节碰撞矩阵的,我们点击Generate Collision Matrix既可自动生成。

Image

然后我们配置Virtual Joints,这是用于配置虚拟的关节,用于指定我们将机械臂放置在哪里,我们这里直接将机械臂放置在world坐标系中,取名为virtual_joints

Image

然后我们需要添加机械臂的Planning Groups,规划组是用来规划机械臂运动的,这里我们主要分为两个组,一个是我们的机械臂的各个关节部分panda_arm,另一个是我们的夹具部分hand,首先添加panda_arm组,动力学求解器Kinematic Solver选择kdl_kinematics_plugin/KDLKinematicsPlugin,然后默认的规划器Group Default Planner随便选就行。然后点击Add Joints为这个规划组添加关节。

Image

panda_arm的关节: 按住shift可以进行多选,然后点击>进行添加

Image

再添加另一个hand规划组,hand规划组不需要选择动力学求解器和默认规划器,直接选择Add Joints即可

Image

hand规划组:

Image

定义好的规划组如下所示:

Image

然后我们定义Robot Poses,为每个规划组定义一些预设的姿态,首先我们为panda_arm定义一个home位姿态,这个姿态可以随意选择,我的设置如下:

Image

然后我们定义hand规划组的预设位姿,首先需要选中已经给panda_arm预设好的位姿,然后点击Add Pose

Image

然后按照类似的方式,我们给hand规划组设定两个位姿,分别为openclose,如下所示:

Image
Image

最终我们预设了三个位姿,如下所示:

Image

然后我们定义我们的End Effectors,末端执行机构,如果没有末端执行机构这一步可以跳过,末端执行机构的规划组为hand,然后默认连接的parent_linkpanda_link8

Image

然后配置ros2_control URDF Modifications,这里使用默认,然后直接Add interfaces即可。

Image

然后我们配置ROS 2 Controllers,为每个规划组配置控制器,我们点击Auto Add JointTrajectoryController Controllers For Each Planning Group即可,然后修改hand组的控制器如下:

Image

同理,配置Moveit Controllers

Image

然后配置Launch Files,这个使用默认配置即可

Image

然后配置一下作者的信息

Image

最后我们就可以生成package了,我们需要选择一个生成的位置,建议在src/panda_robot文件路径下放置一个文件夹panda_configure用于存放我们的配置文件,然后选择生成

Image

生成完毕后的文件目录应该为:

.
├── build
├── install
├── log
└── src
    └── panda_robot
        ├── panda_configure
        │   ├── CMakeLists.txt
        │   ├── config
        │   │   ├── initial_positions.yaml
        │   │   ├── joint_limits.yaml
        │   │   ├── kinematics.yaml
        │   │   ├── moveit_controllers.yaml
        │   │   ├── moveit.rviz
        │   │   ├── panda.ros2_control.xacro
        │   │   ├── panda.srdf
        │   │   ├── panda.urdf.xacro
        │   │   ├── pilz_cartesian_limits.yaml
        │   │   ├── ros2_controllers.yaml
        │   │   └── sensors_3d.yaml
        │   ├── launch
        │   │   ├── demo.launch.py
        │   │   ├── move_group.launch.py
        │   │   ├── moveit_rviz.launch.py
        │   │   ├── rsp.launch.py
        │   │   ├── setup_assistant.launch.py
        │   │   ├── spawn_controllers.launch.py
        │   │   ├── static_virtual_joint_tfs.launch.py
        │   │   └── warehouse_db.launch.py
        │   └── package.xml
        └── panda_description

97 directories, 291 files

其中其他文件夹的内容就省略了。然后我们就能对这个功能包进行构建

colcon build --packages-select panda_configure
source install/setup.bash

然后直接运行我们刚才配置好的包

ros2 launch panda_configure demo.launch.py 

可以实现一些运到到预设位姿的功能

Image
Image

Reference

[1]MoveIt Setup Assistant
[2]动手学Moveit2|使用配置助手创建自己机械臂的功能包
[3]【学习笔记】ROS2纯小白 - MoveIt! (humble) 引入新的机器人模型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/576135.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《佩德罗·巴拉莫》炽热的科马拉土地上,游荡的亡魂诉说着一切!

《佩德罗巴拉莫》炽热的科马拉土地上,游荡的亡魂诉说着一切! 胡安鲁尔福(1917-1986),墨西哥作家,代表作有《佩德罗巴拉莫》《燃烧的原野》《金鸡》,和诺奥克塔维奥帕斯、卡洛斯弗恩特斯并称为墨…

Redisson - tryLock 函数参数分析

这里有三个参数: waitTime:等待时间leaseTime:超时施放时间TimeUnit:时间单位 等待时间 如果 ABC… 多个线程去抢夺一把锁,A 成功了,如果设置的是 -1,那么 BCD... 就不等待,直接返…

使用CNN实现新闻文本分类

一、实验目的: 理解卷积神经网络的基本概念和原理;了解卷积神经网络处理文本数据的基本方法;掌握卷积神经网络处理文本数据的实践方法,并实现新闻文本的分类任务。 实验要求: 使用Keras框架定义并训练卷积神经网络模…

防盗链在nginx中如何配置,简单演示403forbidden的效果

一、使用场景: 资源被其他网站无端盗用 服务器压力无端增加 二、实现方法 1.valid_referers指令可以检测被访问资源从哪个地址来 2.通过referer头字段判断 3.若为空,报403错误 nginx的准备工作: 可以看 虚拟机中使用LNMP模拟跨域并结合…

书籍推推荐之二--《生命的色彩》

史钧《生命的色彩》 在生活中,我们会注意到一个有趣的现象:每个人的头发颜色各不相同,有黑色、灰色、黄色、棕红色、银白色等,但就是没有绿色。对于生活在丛林中的早期人类来说,绿色的头发简直就是天然的迷彩服&#x…

基于arcpro3.0.2版的使用深度学习检测对象之椰子树

基于arcpro3.0.2版的使用深度学习检测对象之椰子树 GPU显卡Nivda 1080 训练模型图 (四)检测对象之椰子树 使用深度学习检测对象 打开 detect objects using deep learning,参数 输入栅格为要检测的影像 模型定位为上一步输出的.emd文件 cpu模式Max Overlap Ratio0.4 运行时间…

C++感受6-Hello World 交互版

变量、常量输入、输出、流getline() 函数读入整行输入Hello() 函数复习新定义函数 Input() 实现友好的人机交互还有 “痘痘” 为什么挤不到的分析…… 1. DRY 原则简介 上一节课,我们写了两版“问候”程序。第一版的最大问题是重复的内容比较多,每一次问…

今日arXiv最热大模型论文:大模型也来看球,还能判断是否犯规

在足球世界,裁判的哨声可谓“千金难买”,因为它能直接决定俱乐部的钱包是鼓是瘪。但球场变化莫测,非常考验裁判的水平。 2022年卡塔尔世界杯上,半自动越位识别技术(SAOT)闪亮登场,通过12台摄像…

高并发场景中DB和Cache的一致性新的方案感想

拜读了: 美团2面:如何保障 MySQL 和 Redis 数据一致性?这样答,虐爆面试官这篇文章后的感想 高并发场景中数据库和缓存的一致性和可用性的感想 1,先更新缓存,再更新数据库1.1,前提1.2,理由1.2.1&…

Echarts-知识图谱

Echarts-知识图谱 demo地址 打开CodePen 效果 思路 1. 生成根节点 2. 根据子节点距离与根节点的角度关系,生成子节点坐标,进而生成子节点 3. 从子节点上按角度生成对应的子节点 4. 递归将根节点与每一层级子节点连线核心代码 定义节点配置 functio…

目标检测——大规模商品数据集

引言 亲爱的读者们,您是否在寻找某个特定的数据集,用于研究或项目实践?欢迎您在评论区留言,或者通过公众号私信告诉我,您想要的数据集的类型主题。小编会竭尽全力为您寻找,并在找到后第一时间与您分享。 …

阿里云企业邮箱API的使用方法?调用限制?

阿里云企业邮箱API性能如何优化?配置邮箱API的优势? 阿里云企业邮箱以其稳定、高效和安全的特点,受到了众多企业的青睐。而阿里云企业邮箱API的开放,更是为企业提供了更加灵活、便捷的管理和操作方式。下面,我AokSend…

新标准日本语初下 课后练习作业

新版标准日本语初下 第二十五課 これは明日会議で使う資料です 第二十五課 これは明日会議で使う資料です 24-04-26 練習25-1-1 例…

uniapp中vue写微信小程序的生命周期差别

根据uniapp官网里的生命周期,感觉不太对劲,就自己测试了几个,发现有所差别。 红字数字 为 实际测试生命周期顺序。 因为需要页面传参 后再 初始化数据,而onLoad(option)接收参数后,就已经过了create()了,所…

绘制等值线地图——以气压等压线为例(Python版)

绘制等值线地图——以气压等压线为例(Python版) - 知乎 1.前期环境配置 本篇博客主要使用了basemap和netCDF4两个库,推荐使用conda新建虚拟环境并安装相关的包 可以参考笔者之前的博客1和博客2完成windows系统上conda的安装在conda完成安装后在anacond…

【牛客网】:链表的回文结构(提升)

🎁个人主页:我们的五年 🔍系列专栏:每日一练 🌷追光的人,终会万丈光芒 目录 🏝问题描述: 🏝问题分析: 步骤一:查找链表的中间节点 步骤二&am…

C++教学——从入门到精通 11.嵌套循环及数组

上次讲到了循环,这次来讲嵌套循环 如果一个人叫你用C来画一个10*10/2cm^2三角形会么? 这就要用到嵌套循环了 来看看结构: for(变量类型1 变量;条件1;返回值1){语句1;for(变量类型 变量2;条件2;返回值2){语句2;}语句3; } 语句1,2,3是依次…

ThingsBoard远程RPC调用设备

使用 RPC 功能 客户端 RPC 从设备发送客户端 RPC 平台处理客户端RPC 服务器端 RPC 服务器端RPC结构 发送服务器端RPC 使用 RPC 功能 ThingsBoard 允许您从服务器端应用程序向设备发送远程过程调用 (RPC),反之亦然。基本上,此功能允许您向设备发送命…

关于discuz论坛网址优化的一些记录(伪静态)

最近网站刚上线,针对SEO做了些操作,为了方便网站网页被收录,特此记录下 1.开启伪静态 按照操作勾选所有项,然后点击查看伪静态规则 2.打开宝塔,找到左侧列表的网站,然后找到相应站点的设置。把discuz自动…

科普:嵌入式代码软件在环(SiL)测试的可靠性

关键词:嵌入式系统、软件在环(SiL)、测试、生命周期 01.简介 当前,嵌入式系统开发的大趋势为通过软件实现大量的硬件功能,这导致软件的复杂程度显著上升——代码开发成本和风险也成倍增加。复用已有系统中的软件组件…
最新文章