ros项目dual_arm_pick-place(urdf文件可视化查看)
前言
一直想写一些项目的讲解,今天(2024.12.05)可以说正式开始了。
dual_arm_pick-place项目,是关于两个机械臂协同传递物品。
正文
这次的话,给大家讲一下里面的urdf文件。

这篇文章主要来看一下项目中的urdf文件,项目里面其实写了很多xacro文件,但是很多都是有问题的。

可视化的话,大家修改具体的xacro路径。
然后运行下面命令就可以看到了。
roslaunch marm_description view_arm.launch
arm.xacro

我通过代码比较,发现arma.xacro和armb.xacro,就只是那些link名称进行了改变。

你去可视化arma.xacro和armb.xacro都没问题。
当你可视化arms1.xarco时候,报错了

src/dual_arm_pick_place/marm_description/urdf/arms1.xacro文件内容很简单。
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="arms"><xacro:include filename="arma.xacro"/><xacro:include filename="armb.xacro"/>
</robot>
就是将两个文件导入过来,然后就提示Black不是unique,因为两个文件都定义了。
如果你要修改的话,需要将一个文件中的相关颜色都删除。
这里我不做任何修改,继续往下看,你就会得出一个结论。
你进行arms2.xarco可视化。
发现还是会报错。

你查看arms1.xacro和arms2.xacro,可以发现差别挺大,但是,看了代码和之前的错误后,我猜测作者因为颜色的多次定义,将两个文件写在了一起,这时候就不会出现颜色的多次定义了。

但是,还是会有一个核心错误
Failed to find root link: Two root links found: [base_linka] and [base_linkb]
这个错误就是不止一个根link。
照理来说,一个项目,应该只有一个根link。
然后我发现,arms2.xacro和arms2a.xacro的内容是一样的。所以这个文件,就不去看了。
arms2b.xacro
针对前面的不止一个根link,作者在这个文件中进行了解决。

可以看到,将之前的根link,也就是base_linka和base_linkb绑定在root_link上,这就解决了。

运行可视化,也没啥问题了。
总结
按照顺序可视化后,你是不是对其中的文件有了很大的了解。
| 文件 | 是否有用 |
|---|---|
| arm.xacro | 有用 |
| arma.xacro | 有用 |
| armb.xacro | 有用 |
| arms1.xacro | 没用 |
| arms2.xacro | 没用 |
| arms1a.xacro | 没用 |
| arms1b.xacro | 有用 |
其中没用的文件,也不能说没用,我们从中也可以看出作者的思考过程,最后得出一个正确的文件。
如果你以后也要搞多臂的项目,就可以借鉴这个项目的思路,搭建robot模型。
相关文章:
ros项目dual_arm_pick-place(urdf文件可视化查看)
前言 一直想写一些项目的讲解,今天(2024.12.05)可以说正式开始了。 dual_arm_pick-place项目,是关于两个机械臂协同传递物品。 正文 这次的话,给大家讲一下里面的urdf文件。 这篇文章主要来看一下项目中的urdf文件…...
AI-安全-B站
1 需求 百度-林道正-《大模型合规探索》火山引擎-林泽韬-《大模型安全挑战与防护实践》Chamd5-bayuncao-《基于RAG的AI代码审计框架》德国电信咨询有限公司-杨麟-《AI在SOC中的应用发展》360-李亚青-《以模制模,大模型安全的解决之道》金晴云华-富吉祥-《安全大脑在…...
【C#设计模式(19)——备忘录模式(MementoPattern)】
前言 备忘录模式:将想要备份的信息交给备忘录对象来管理。通过设置初始、备份、修改、恢复等状态展示备忘录模式的使用。 代码 //备忘录类 public class Memento {private string state;public string State { get>state;}public Memento(string state){this.st…...
第三部分:进阶概念 8.事件处理 --[JavaScript 新手村:开启编程之旅的第一步]
JavaScript 事件处理是 Web 开发中不可或缺的一部分,它允许开发者响应用户的交互行为(如点击、键盘输入等)或浏览器的行为(如页面加载完成)。通过事件处理,我们可以使网页更加动态和互动。以下是关于 JavaS…...
工具推荐-js爬取工具
现在测试方向都偏向于从js中的接口来入手找到可以进的点,关于快速扫描js文件来发现敏感接口的工具有很多,下面的jjjjs就是其一 项目地址: GitHub - ttstormxx/jjjjjjjjjjjjjs: 爬网站JS文件,自动fuzz api接口,指定api接口&#x…...
Android问题记录 - Inconsistent JVM-target compatibility detected for tasks
文章目录 前言开发环境问题描述问题分析解决方案补充内容最后 前言 前段时间升级Android Studio后修复了一堆问题,详情请看:Android问题记录 - 适配Android Studio Ladybug/Java 21/AGP 8.0(持续更新)。我以为问题已经全部解决了…...
ejb组件(rmi) webservice平台(xml)
springboot bean 在 Spring Boot 中,Bean 是 Spring 框架的核心概念之一,表示由 Spring 容器管理的对象。通过 Bean 或其他注解(如 Component、Service、Repository 等)来定义和管理这些对象。以下是关于 Spring Boot 中 Bean 的…...
【jvm】垃圾回收的重点区域
目录 1. 说明2. 堆(Heap)3. 方法区(Method Area) 1. 说明 1.JVM(Java Virtual Machine)垃圾回收的重点区域主要集中在堆(Heap)和方法区(Method Area)。2.堆是…...
PyQt信号槽实现页面的登录与跳转 #页面进一步优化
将登录框中的取消按钮使用信号和槽的机制,关闭界面。 将登录按钮使用信号和槽连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin",密码是否为"123456",如果账号密码匹配成功,当前界面关…...
谈谈web3
全面解析 Web3:未来互联网的革命性进程 引言:互联网进化的三部曲 互联网的发展经历了三个重要阶段,每一个阶段都深刻地改变了我们的生活方式: Web1(1990-2005):静态互联网时代,人…...
正则表达式实战例子
正则表达式实战例子 1. 验证电子邮件地址 定义一个合理的电子邮件格式,并检查给定的字符串是否符合这个模式。 import redef is_valid_email(email):# 定义电子邮件格式的正则表达式pattern r^[a-zA-Z0-9_.-][a-zA-Z0-9-]\.[a-zA-Z0-9-.]$return bool(re.match(…...
Hadoop不同版本的区别
免费springboot,vue,springcloudalibaba视频,有兴趣可以看看 <!-- springboot,springboot整合redis,整合rocketmq视频: --> https://www.bilibili.com/video/BV1nkmRYSErk/?vd_source14d27ec13a473…...
QtCreator UI界面 菜单栏无法输入中文
如下图红色所示的区域,直接输入是无法输入中文的: 解决方法:在右边的属性值里输入即可 也可以参考这位同学的解决方法:友情链接...
java switch及其新特性
switch是什么 在Java中,switch语句是一种多分支选择结构,它允许程序根据一个表达式的值从多个代码块中选择执行哪一个。switch语句通常比多个if-else语句更清晰、更易读。 Java switch语句的基本语法: switch (expression) {case value1:/…...
E卷-货币单位换算(100分)
货币单位换算 问题描述 在一个多国货币记账本中,记录了若干条不同货币的金额。现在需要将这些金额全部转换成人民币分(fen),并进行汇总。每条记录可能包含单独的元、单独的分,或者元与分的组合。转换时,需要考虑不同货币之间的汇率关系。 要求将这些货币全部换算成人民…...
什么是MMD Maximum Mean Discrepancy 最大均值差异?
9多次在迁移学习看到了,居然还是Bernhard Schlkopf大佬的论文,仔细看看。 一.什么是MMD? 1. MMD要做什么? 判断两个样本(族)是不是来自于同一分布 2.怎么做?(直观上)…...
沐风老师3DMAX摄相机阵列插件使用方法
3DMAX摄相机阵列插件,从网格对象或样条线的顶点法线快速创建摄相机阵列。该插件从网格的顶点或样条线的节点获取每个摄影机的位置和方向。 3DMAX摄相机阵列插件支持目前3dMax主流的物理相机、标准相机、VRay物理相机。 【版本要求】 3dMax 2015及更高版本 【安装方…...
Java Web 开发学习中:过滤器与 Ajax 异步请求
一、过滤器 Filter: 过滤器的概念与用途 在一个庞大的 Web 应用中,有许多资源需要受到保护或进行特定的预处理。过滤器就像是一位智能的守卫,站在资源的入口处,根据预先设定的规则,决定哪些请求可以顺利访问资源&…...
数据结构 (36)各种排序方法的综合比较
一、常见排序方法分类 插入排序类 直接插入排序:通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。希尔排序:是插入排序的一种改进版本,先将整个待排序的记录序列分割成为…...
使用vue搭建不需要打包的前端项目
需求详情:用户不要项目进行打包,开发还是选用vue2,且需要便于上手 项目目录 >api 存放api.js,主要是前端用到的接口 >css >>>fonts 存放页面需要的字体文件 >>>1.css 存放所有css文件 >data 存放echarts…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
