Ros中如何给UR5配置自定义工具 | 在Rviz中给UR5机器人装载定义工具 | UR5配置自定义末端执行器
前言
- 在学习和项目研究的过程中,我需要在Ur5e上装上工具,以对现实场景进行仿真。网上会有一些装载/配置现成的夹爪,例如Robotiq等。但和我们装载自定义工具的场景还有些差异,因此写一篇博客记录,可能有偏差。如果有问题请后来者指正。
建模与URDF文件的导出
- 首先呢,我们在Solidworks中建好我们的模型,标注好坐标系与转轴就可以利用sw2urdf进行导出urdf文件,可以看我这篇博客。
- 这里挑一些重点讲,比如我的插件导出的urdf文件是有一些小问题的
- 比如标签里应该加载的是
dae文件,于是把.stl改为.dae,当然这个dae文件已经提前用MeshLab将.stl转换为.dae了。 - 再比如我将
.STL改为了.stl,大写改小写。

- 比如标签里应该加载的是
做完导出优化之后,这个urdf文件已经可以为我们所用了。
- 我按照习惯,将整个导出的包放到了
工作空间/src目录下,作为一个package供我们使用。
修改ur5的urdf文件
- 一开始我看了这位前辈的文章,因为他使用的是单纯的ur5配置文件,我用的是完整的UR机器人驱动包,所以里面的机器人都是xacro格式的文件,通过宏的方式提升通用性,按照这位前辈的做法可能有点小问题。
- 通过研究发现,宏调用过程的一个关键文件是
ur_macro.xacro,我通过修改这个文件就可以实现修改ur5e的形态

重点概念
-
首先讲两个比较重要的概念,有助于我们理解ur5e的配置文件。因为没有很系统的学习机器人,我对这些概念还很陌生。
- flange:法兰框架,用于将EEF模型连接到机器人主运动链的框架。与tool0相反,此框架将始终根据REP 103进行定向,x +指向前方。这使EEF模型的连接变得笔直,因为无需再旋转即可将EEF模型与机器人法兰连杆对准。请注意,法兰没有分配任何几何图形,它是一个空框架。此框架也不得被编辑。
按我的理解就是,flange可以用来连接我们的自定义工具/末端执行器。在现实生活中,法兰就是用来连接轴与轴的。
- too0:工具框架,与工业控制器定义的默认工具框重合,并且具有相同的方向。其目的是促进将点转换到机器人的笛卡尔工具框架。 tool0框架与未配置的或全零的工具框架匹配。该框架不得被编辑。应将其他工具框架定义为法兰(flange)的子代children(或对于某些机器人,是运动链中最后一个链节的子代)。该框架的某些特定于供应商的名称是_Tool Frame_ (Fanuc), $TOOL (KUKA).
按我自己的理解就是,这个东西在Rviz中就可以体现为规划球 ,也就是我们轨迹规划的末端。
-
对ur5e配置文件的修改依据也是基于此:
1.添加自定义工具的文件位置,并且在flange和自定义工具之间加上轴,关系为fixed(我这里不需要他运动)。
2.在tool0中修改origin的值,以改变 末端(规划球)的位置,使得规划球正好在自定义工具的末端。我这里是根据自己的模型估算的长度。这位大佬利用rosrun tf tf_echo /wrist_3_link /tool0_controller计算两者之间的距离,更加科学,大家可以学习。
3.如果建模的时候没有注意坐标系的问题,此时需要调整标签中origin的数值来调整方向。

<!--请ing记得修改too0的位置--><!-- 我自己加上胶枪模型 --><xacro:include filename="/home/zhangshidi/GitHub/Ros_control/src/ur_attachment/jiaoqiang/urdf/jiaoqiang.urdf"/><xacro:macro name="jiaoqiang"><parent link="${prefix}tool0"/><origin xyz="0 0 0" rpy="0 0 0"/></xacro:macro><joint name="${prefix}too0_jiaoqiang_joint" type="fixed"><origin xyz="0 0 0.001" rpy="-${pi/2.0} 0 0"/><parent link="${prefix}tool0"/><child link="jiaoqiang"/></joint>
</robot>
效果
- 效果如图

相关文章:
Ros中如何给UR5配置自定义工具 | 在Rviz中给UR5机器人装载定义工具 | UR5配置自定义末端执行器
前言 在学习和项目研究的过程中,我需要在Ur5e上装上工具,以对现实场景进行仿真。网上会有一些装载/配置现成的夹爪,例如Robotiq等。但和我们装载自定义工具的场景还有些差异,因此写一篇博客记录,可能有偏差。如果有问…...
数据库 delete 表数据后,磁盘空间为什么还是被一直占用?
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 最近有个上位机获取下位机上报数据的项目,…...
docker-微服务篇
docker学习笔记1.docker简介1.1为什么会出现docker?1.2docker理念1.3虚拟机(virtual machine)1.4容器虚拟化技术1.5一次构建到处运行2.docker安装2.1前提条件2.2docker基本构成2.3docker安装步骤*2.4测试镜像3.docker常用命令3.1 启动docker3…...
图像优化篇
目录(1)矢量图(2)位图 2.1 分辨率2,图像格式格式选择建议:(1)矢量图 被定义为一个对象,包括颜色,大小,形状,以及屏幕位置等属性&…...
在surface go 2上安装ubuntu 20.04
在surface go 2上安装ubuntu 20.04 1.制作安装盘 下载ubuntu系统的iso文件 使用Rufus软件将u盘制作为ubuntu系统的安装盘 2.在surface go 2上操作 禁用快速启动 在 Windows 中,禁用“电源选项”中的“快速启动”>选择电源按钮的功能 禁用 Bitlocker 在 Wi…...
Java:SpringMVC的使用(1)
目录第一章、SpringMVC基本了解1.1 概述1.2 SpringMVC处理请求原理简图第二章、SpringMVC搭建框架1、搭建SpringMVC框架1.1 创建工程【web工程】1.2 导入jar包1.3 编写配置文件(1) web.xml注册DispatcherServlet(2) springmvc.xml(3) index.html1.4 编写请求处理器【Controller…...
自动化测试岗位求职简历编写规范+注意事项,让你的简历脱颖而出
目录 前言 1.个人信息 2.教育背景(写最高学历) 3.个人技能(按精通/掌握/熟练/了解层次来写) 4.工作经历 5.工作经验/项目经历 6.自我评价 总结 前言 挑选一个阅读舒适度不错的模板 HR和面试官看的简历多,都是快速阅读,舒适度特别重要;…...
C 字符串
在 C 语言中,字符串实际上是使用空字符 \0 结尾的一维字符数组。因此,\0 是用于标记字符串的结束。空字符(Null character)又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符&#…...
【每日一题Day115】LC2335装满杯子需要的最短总时长 | 贪心
装满杯子需要的最短总时长【LC2335】 You have a water dispenser that can dispense cold, warm, and hot water. Every second, you can either fill up 2 cups with different types of water, or 1 cup of any type of water. You are given a 0-indexed integer array amo…...
Flink流计算处理-旁路输出
使用Flink做流数据处理时,除了主流数据输出,还自定义侧流输出即旁路输出,以实现灵活的数据拆分。 定义旁路输出标签 首先需要定义一个OutputTag,代码如下: // 这需要是一个匿名的内部类,以便我们分析类型…...
nginx正向代理的配置和使用
nginx正向代理的配置和使用 nginx正向代理的配置和使用nginx正向代理的配置和使用安装包准备下载nginx安装包下载正向代理模块的包版本与模块对照表部署nginx服务上传nginx包和正向模块包解压,改名安装nginx配置正向代理创建nginx用户检查nginx配置并启动nginx服务所在服务器验…...
Oracle Trace File Analyzer 介绍及简单使用
一、什么是Oracle Trace File Analyzer Oracle Autonomous Health Framework(AHF) 包含 Oracle ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer(TFA). AHF工具包包含了Oracle常用的多种诊断工具,如 ORAchk, Oracle EXAchk, and Oracle Trace File Analyzer…...
面试实战篇 | 快手本地生活,结合项目谈Redis实战项目场景?MySQL InnoDB存储引擎如何工作的?策略模式?
本期是【你好,面试官】系列文章的第21期,持续更新中…。 《你好,面试官》系列目前已经连载20篇了,据说看了这个系列的朋友都拿到了大厂offer~ 你好,面试官 | 你真的理解面向 “对象”?你好,面…...
Hadoop之——WordCount案例与执行本地jar包
目录 一、WordCount代码 (一)WordCount简介 1.wordcount.txt (二)WordCount的java代码 1.WordCountMapper 2.WordCountReduce 3.WordCountDriver (三)IDEA运行结果 (四)Hadoop运行wordcount 1.在HDFS上新建一个文件目录 2.新建一个文件,并上传至该目录下…...
利用git reflog 命令来查看历史提交记录,并使用提交记录恢复已经被删除掉的分支
一.问题描述 当我们在操作中手误删除了某个分支,那该分支中提交的内容也没有了,我们可以利用git reflog这个命令来查看历史提交的记录从而恢复被删除的分支和提交的内容 二.模拟问题 1.创建git仓库,并提交一个文件 [rootcentos7-temp /da…...
【软件测试】大厂测试开发你真的了解吗?测试开发养成记......
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 在一些大公司里&…...
Redis中的hash结构和扩容机制
1.rehash原理 hash包含两个数据结构为字典数组ht[0]和ht[1]。其中ht[0]用来存放数据,ht[1]在rehash时使用。 扩容时,ht[1]的大小为第一个大于等于ht[0].used*2的2的幂次方的数; 收缩时,ht[1]的大小为第一个大于等于ht[0].used的…...
【C++奇技淫巧】前置自增与后置自增的区别(++i,i++)【2023.02.08】
简介 先说i和i的区别,判断语句中if(i)是拿i的值先判断,而后自增;if(i)是先自增i再进行判断。涉及到左值与右值也有点区别,i返回的是右值,i返回的是左值。也就是下面的代码要解释的东西。 #include <iostream>i…...
实战打靶集锦-005-HL
**写在前面:**记录一次曲折的打靶经历。 目录1. 主机发现2. 端口扫描3. 服务枚举4. 服务探查4.1 浏览器访问4.2 目录枚举4.3 探查admin4.4 探查index4.5 探查login5 公共EXP搜索6. 再次目录枚举6.1 探查superadmin.php6.2 查看页面源代码6.3 base64绕过6.4 构建反弹…...
铁路系统各专业介绍(车机工电辆)
目录 1 车务段 1.1 职能简介 1.2 路段名单 1.3 岗位级别 2 机务段 2.1 职能简介 2.2 路段名单 2.3 岗位级别 3 工务段 3.1 职能简介 3.2 路段名单 3.3 岗位级别 4 电务段 4.1 职能简介 4.2 路段名单 4.3 岗位级别 5 车辆段 5.1 职能简介 5.2 路段名单 5.3 …...
ChatGPT越狱指令最新版:原理剖析与安全实践指南
ChatGPT越狱指令最新版:原理剖析与安全实践指南 最近在AI开发者圈子里,关于大语言模型“越狱”的话题又热了起来。所谓“越狱”,就是指通过各种技巧绕过模型内置的安全限制,让它回答一些原本被禁止的问题。作为开发者,…...
学术专著不用愁!AI专著生成工具,高效打造专业学术精品
学术专著的魅力在于其逻辑严谨性,但在写作过程中,逻辑推理常常是最容易出现问题的部分。创作专著需要围绕核心观点进行系统的论证,不仅要对每个论点进行详细阐述,还需要处理不同学派之间的争论,确保整个框架逻辑自洽&a…...
老设备复活指南:使用OpenCore Legacy Patcher实现老款Mac系统升级
老设备复活指南:使用OpenCore Legacy Patcher实现老款Mac系统升级 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果不断推进macOS更新,许多…...
C++ vs .NET 数组原地反转实测:小数组 C++ 碾压,大数组 .NET
C vs .NET 数组原地反转实测:小数组 C 碾压,大数组 .NET 反杀? 前几天看到一篇文章:《将一个序列反序,在C与C#下性能比较》(链接大家可以自行搜索)。作者对比了 C# 的“托管/非托管”实现和 C 的…...
为什么你的Polars清洗比Pandas还慢?3步定位CPU缓存未对齐、SIMD未启用、线程池饥饿这3大隐形杀手
第一章:Polars 2.0 大规模数据清洗技巧 性能调优指南Polars 2.0 引入了全新的执行引擎与内存管理机制,显著提升了大规模数据清洗场景下的吞吐量与低延迟响应能力。相比 Pandas,其在 10GB 数据集上的列式过滤、字符串标准化与缺失值插补操作平…...
云原生应用开发实践:从开发到部署
云原生应用开发实践:从开发到部署 前言 哥们,别整那些花里胡哨的理论。今天直接上硬菜——我在大厂一线开发云原生应用的真实经验总结。作为一个白天写前端、晚上打鼓的硬核工程师,我对云原生开发的追求就像对鼓点节奏的把控一样严格。 背景 …...
USB协议分析不求人:用Wireshark解码设备描述符请求的完整指南
USB协议深度解析:用Wireshark拆解设备描述符请求的实战手册 当你第一次将USB设备插入电脑时,主机与设备之间那场无声的对话就已经开始了。作为开发者,你是否曾好奇过这个看似简单的插拔动作背后,究竟隐藏着怎样的数据交换秘密&…...
包含多体型模板的AI虚拟智能试衣系统源码
温馨提示:文末有资源获取方式在电商竞争日益白热化的今天,商品展示图的质量直接决定了点击率与转化率。对于服装类目而言,传统模特拍摄不仅面临模特、摄影、场地的高昂成本,更受限于漫长的拍摄周期。为了解决这一行业痛点…...
Sora死了
好莱坞杀死了 Sora:传统行业在 AI 浪潮下的无谓挣扎摘要:2026 年 3 月 24 日,OpenAI 宣布关闭 Sora,距离正式发布仅 6 个月。表面看是迪士尼退出授权协议导致的商业失败,实质是传统内容行业对 AI 技术抵制的缩影。本文…...
检测的毕设领域创新的技术实现路径:从选题到系统落地
最近在辅导学弟学妹做毕设时,发现一个挺普遍的现象:很多同学对“检测”这个方向很感兴趣,想做点有创新的东西,比如智能安防、工业质检或者辅助驾驶。但真动手时,往往卡在几个地方:不知道选哪个模型好&#…...
