前言
一直想写一些项目的讲解,今天(2024.12.05)可以说正式开始了。
dual_arm_pick-place
项目,是关于两个机械臂协同传递物品。
正文
这次的话,给大家讲一下里面的urdf文件。
这篇文章主要来看一下项目中的urdf文件,项目里面其实写了很多xacro文件,但是很多都是有问题的。
可视化的话,大家修改具体的xacro
路径。
然后运行下面命令就可以看到了。
bash
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
文件内容很简单。
xml
<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模型。