urdf ( xacro ) 的 collision碰撞参数设置
目录
- 写在前面的话
- 整体流程
- 1 URDF 文件结构
- 2 查看原始碰撞形状描述
- 3 加入简单碰撞形状描述
- 方法一 Meshlab 自动测量
- 方法二 人为测量
- 4 加入XACRO函数简化描述
- 最终结果展示
- 侧视图
- 正视图
- 碰撞几何体中心点设置不对出现的结果
写在前面的话
本文使用的 URDF 文件是由 solidworks 的 URDF export 插件生成,详情请看上一篇文章:solidworks模型导出urdf(超详细)
整体流程
1 URDF 文件结构
写法跟XML文件格式非常类似,<robot>块包含了所有机器人的描述,<link>块描述了零件的连接,<joint>块描述了单个零件。collision碰撞的描述是在<link>块中,包含<origin>和<geometry>两个属性,<geometry>描述的是碰撞几何体的形状,<origin>描述的是碰撞几何体的姿态,包括中心点的位置和欧拉角(这个地方需要重点关注)

2 查看原始碰撞形状描述
原始的 URDF 文件是直接使用零件的三维模型文件作为碰撞几何体的描述,但是这样在仿真的时候 gazebo 仿真软件需要耗费大量的时间进行碰撞计算,gazebo 会出现加载时间过长和崩溃的情况,所以有必要进行简化这个碰撞形状描述
<collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://car_urdf/meshes/left_front_wheel_Link.STL" /></geometry>
</collision>
3 加入简单碰撞形状描述
需要提前下载meshlab软件,方便后面的碰撞形状参数测量和查看
sudo apt install meshlab
方法一 Meshlab 自动测量
在meshlab界面菜单栏找到 Render > Show Box Corners 可以查看外接矩形的尺寸大小(下图左上角的Size)和该外接矩形中心点的位置(下图左上角的center),这个矩形中心点一般不是零件的原点(可以通过下面第二图的坐标轴看出),因为零件不一定是对称物体,而且零件的原点也跟它保存的三维数据(三维坐标)有关。
注意:这个只能支持拟合外接矩阵


方法二 人为测量
还可以如下图操作,选中菜单栏的正方体,并在右边 Measure Info 设置为 On,进行人为测量,这个人为结果可能会有偏差,但其实影响不大,因为我们在实际设置碰撞几何体的时候经常会预设一定范围的安全空间。

为了得到更加准确的结果,可以选择不同的视图进行查看并测量

- 引入长方体描述整个机器人
box 表示长方体,size分别表示长宽高三个尺寸。
box size = 外接矩形的尺寸大小(下图左上角的Size)
origin xyz = 该外接矩形中心点的位置(下图左上角的center)
<collision><origin rpy="0 0 0" xyz="-0.9 0 0.1"/><geometry><box size="2.9 1.5 1.6"/></geometry></collision>

- 引入长方体描述车轮转向零件
box 表示长方体,size分别表示长宽高三个尺寸。
<collision><origin rpy="0 0 0" xyz="0 -0.03 -0.27"/><geometry><box size="0.34 0.39 0.54"/></geometry></collision>

- 引入圆柱体描述车轮
cylinder 表示圆柱体,length表示圆柱的高,radius表示圆柱的底的半径。
这里要注意的是要设置欧拉角,因为圆柱体默认是竖直的,也就是底部跟地面(xy面)平行,但是车轮是竖直的,所以这里的圆柱需要横滚角(roll角)设为90度,也就是约等于1.57弧度。
<collision><origin rpy="1.5707963267948966 0 0" xyz="0 -0.05 0"/><geometry><cylinder length="0.2" radius="0.3"/></geometry></collision>

4 加入XACRO函数简化描述
- 先把.urdf文件的后缀加上.xacro
- 在urdf文件头部的
<robot name=“”xxx“”>后面属性加上xmlns:xacro="http://www.ros.org/wiki/xacro"
<robotname="car_urdf" xmlns:xacro="http://www.ros.org/wiki/xacro">
- 因为我的三维模型车轮转向器和车轮都是重复的东西,可以进行统一函数封装,方便函数调用,这个类似函数定义,不细讲,可以去看古月居的视频,或者找几个代码看看。
这里的左右轮和左右轮转向器为什么要分开写?因为他们的中心点是不一样的,这个需要注意一下,这个可能真正的工程试验才会遇到,提醒一下。
<xacro:property name="base_box_size" value="2.9 1.5 1.6"/><xacro:property name="orient_box_size" value="0.34 0.39 0.54"/><xacro:property name="wheel_cylinder_radius" value="0.3"/><xacro:property name="wheel_cylinder_length" value="0.2"/><xacro:macro name='base_collision'><collision><originxyz="-0.9 0 0.1"rpy="0 0 0" /><geometry><box size="${base_box_size}"/></geometry></collision></xacro:macro><xacro:macro name='left_orient_collision'><collision><originxyz="0 -0.03 -0.27"rpy="0 0 0" /><geometry><box size="${orient_box_size}"/></geometry></collision></xacro:macro><xacro:macro name='right_orient_collision'><collision><originxyz="0 0.03 -0.27"rpy="0 0 0" /><geometry><box size="${orient_box_size}"/></geometry></collision></xacro:macro><xacro:macro name='left_wheel_collision'><collision><originxyz="0 -0.05 0"rpy="${pi/2} 0 0" /><geometry><cylinder radius="${wheel_cylinder_radius}" length="${wheel_cylinder_length}"/></geometry></collision></xacro:macro><xacro:macro name='right_wheel_collision'><collision><originxyz="0 0.05 0"rpy="${pi/2} 0 0" /><geometry><cylinder radius="${wheel_cylinder_radius}" length="${wheel_cylinder_length}"/></geometry></collision></xacro:macro>
最终结果展示
侧视图

正视图

碰撞几何体中心点设置不对出现的结果
这是长方体中心点全部默认为 0 ,且车轮圆柱没设置欧拉角的显示结果

相关文章:
urdf ( xacro ) 的 collision碰撞参数设置
目录 写在前面的话整体流程1 URDF 文件结构2 查看原始碰撞形状描述3 加入简单碰撞形状描述方法一 Meshlab 自动测量方法二 人为测量 4 加入XACRO函数简化描述 最终结果展示侧视图正视图碰撞几何体中心点设置不对出现的结果 写在前面的话 本文使用的 URDF 文件是由 solidworks …...
iOS——方法交换Method Swizzing
什么是方法交换 Method Swizzing是发生在运行时的,主要用于在运行时将两个Method进行交换,我们可以将Method Swizzling代码写到任何地方,但是只有在这段Method Swilzzling代码执行完毕之后互换才起作用。 利用Objective-C Runtimee的动态绑定…...
【有啥问啥】大模型应用中的哈希链推理任务
大模型应用中的哈希链推理任务 随着人工智能技术的快速发展,尤其是大模型(如GPT、BERT、Vision Transformer等)的广泛应用,确保数据处理和模型推理的透明性与安全性变得愈发重要。哈希链推理任务作为一种技术手段,能够…...
DevExpress WinForms v24.1新版亮点:功能区、数据编辑器全新升级
DevExpress WinForms拥有180组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜…...
FreeRTOS内部机制学习01(任务创建的细节以及任务调度的内部机制)
文章目录 前言:首先要谢谢韦东山老师的无私奉献,让我学到了很多东西,我做这个笔记是害怕我会忘记,所以就记录了下来,希望对大家有帮助!关于寄存器CPU内部的寄存器这些寄存器到底要保存一些什么?…...
CANoe突然出现Trace窗口筛选项无法显示的问题
原因:和最近window的推送的补丁包有关 同事通过网上的操作,一顿操作猛如虎,卸载掉了这个插件,结果电脑文件夹无法打开和闪退。 IT的同事通过cmd命令也无法恢复。 dism /online /cleanup-image /scanhealth dism /online /cleanu…...
Linux日志-sar日志
作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 Linux 系统中的日志是记录系统活动和事件的重要工具,它们可以帮助管理员监视系统状态、调查问题以及了解系统运行…...
全国计算机二级考试C语言篇3——选择题
C语言部分——C语言概述 1.程序模块化的优点 程序模块化的优点在于它可以使程序的开发、维护和复用变得更简单。下面是一些主要的优点: 降低复杂度:模块化可以将复杂的问题分解成更小的、更易管理的部分。 可维护性:模块化使得代码更易于维护…...
Python实现混合蛙跳算法
博客目录 引言 什么是混合蛙跳算法(Shuffled Frog Leaping Algorithm, SFLA)?混合蛙跳算法的应用场景为什么使用混合蛙跳算法? 混合蛙跳算法的原理 混合蛙跳算法的基本概念蛙群分组与局部搜索全局混洗与更新混合蛙跳算法的流程 …...
印度再现超级大片,豪华阵容加顶级特效
最近,印度影坛再次掀起了风潮,一部名为《毗湿奴降临》的神话大片强势登陆各大影院,上映首周票房就飙升至105亿卢比,成功占据了票房榜首的位置。之后,这部电影也在北美上映,海外市场的表现同样不俗ÿ…...
Git使用经验总结6-删除远端历史记录
删除远端的历史记录但是不影响最新的仓库内容是笔者一直想实现的功能,有两个很不错的用处: 有的历史提交不慎包含了比较敏感的信息,提交的时候没注意,过了一段时间才发现。这个时候已经有了很多新的历史提交,无法再回…...
Linux 下查找运行中的 Java 进程及 .jar 文件位置
在 Linux 环境中,有时我们需要查找正在运行的 Java 进程以及它们对应的 .jar 文件位置。本文将介绍如何使用命令行工具来实现这一目标。 前言 在 Linux 系统中,我们经常需要监控正在运行的应用程序,特别是在出现问题时,了解应用程…...
Openwrt 安装 AX210 无线网卡
安装 TTYD 我安装的是官方原版的 Openwrt,首先需要安装 YYTD 来从网页控制 Openwrt。 安装驱动 参考这个链接,跟着做。 iwlwifi-firmware-ax210 不要直接拷贝粘贴,CSDN 复制文字最后面有网站添加的信息。 lspci opkg update opkg instal…...
在VitePress中进行页面链接:最佳实践与实例
在使用VitePress构建静态网站时,页面之间的链接是必不可少的。本文将介绍如何在VitePress中正确链接页面,包括内部页面和外部非VitePress页面的链接方法,并通过实例代码进行详细解释。 一、链接VitePress内部页面 在VitePress中,…...
Qt/C++百度地图/高德地图/天地图/腾讯地图/谷歌地图/加载绘图工具栏
一、前言说明 在地图中提供一个绘图工具栏,可以便捷的在地图上添加各种覆盖物,比如折线、多边形、矩形、圆形等,然后可以获取这些覆盖物的路径以及中心点等属性。这里有几个小插曲,比如百度地图gl版本默认不提供这个功能…...
Vue2 与 Vue3 的区别有哪些
Vue 2 和 Vue 3 在许多方面都有显著的区别,包括性能、API 设计、功能特性等。以下是它们主要的区别: 1. 响应式系统 Vue 2: 基于 Object.defineProperty: Vue 2 使用 Object.defineProperty 来实现响应式数据。这种方法在处理对象属性时有一定的局限性…...
加锁造成的线程优先级反转
优先级反转(Priority Inversion),也称优先级翻转,一般是在优先级不同的多线程环境中发生。在桌面操作系统中,线程的优先级不是太重要,因此较少见优先级反转的现象。但是,优先级反转是实时操作系统(RTOS)中一个常见的问题,特别是在采用优先级调度算法的系统中。这个问…...
【日常记录-Java】SpringBoot中使用无返回值的异步方法
Author:赵志乾 Date:2024-09-05 Declaration:All Right Reserved!!! 1. 简介 在SpringBoot中,使用Async注解可以很方便地标记一个方法为异步执行。好处是调用者无需等待这些方法完成便可继续执…...
【深度学习】多层感知机的从零开始实现与简洁实现
可以说,到现在我们才真正接触到深度网络。最简单的深度网络称为多层感知机。 多层感知机由多层神经元组成,每一层与它的上一层相连,从中接收输入;同时每一层也与它的下一层相连,影响当前层的神经元。 和以前相同&…...
4、Django Admin对自定义的计算字段进行排序
通常,Django会为模型属性字段,自动添加排序功能。当你添加计算字段时,Django不知道如何执行order_by,因此它不会在该字段上添加排序功能。 如果要在计算字段上添加排序,则必须告诉Django需要排序的内容。你可以通过在…...
信创运维避坑指南:统信UOS服务器离线安装软件,这些细节你注意了吗?
信创运维实战:统信UOS服务器离线部署全流程精解 在信创产业快速发展的背景下,越来越多的企业开始将业务系统迁移到国产操作系统平台。统信UOS作为国产操作系统的代表之一,其服务器版本在政务、金融等关键领域得到广泛应用。然而,…...
RVC与So-VITS-SVC对比:轻量级vs高保真,选型决策指南
RVC与So-VITS-SVC对比:轻量级vs高保真,选型决策指南 想用AI给自己的声音换个风格,或者让喜欢的歌手“唱”一首新歌,却发现工具太多,不知道选哪个好?RVC和So-VITS-SVC是目前最火的两个开源语音转换模型&…...
第一部分:低代码诞生的背景
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
提示词工程精要:从角色设定到边界约束的完整设计框架
设计提示词(Prompt)是决定大语言模型回答质量的关键环节。好的提示词能让模型准确理解意图、输出符合预期的内容;糟糕的提示词则可能导致答非所问、格式混乱甚至“幻觉”。结合本研究的实践经验以及当前提示工程的主流方法,设计提…...
多组学联合分析揭示转录因子调控网络:ATAC-seq与RNA-seq的协同应用
1. 多组学联合分析的技术基础 在基因组学研究领域,ATAC-seq和RNA-seq已经成为揭示基因调控网络的两大核心技术。ATAC-seq全称是转座酶可及性染色质测序,它能够精准定位基因组中开放的染色质区域。想象一下,DNA就像一条紧密缠绕的毛线…...
猫抓浏览器资源嗅探扩展完全指南:从新手到高手的蜕变之路
猫抓浏览器资源嗅探扩展完全指南:从新手到高手的蜕变之路 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 网络上丰富的视频、音频和图片…...
终极Cubism.js部署指南:从开发到生产环境的完整实践方案
终极Cubism.js部署指南:从开发到生产环境的完整实践方案 【免费下载链接】cubism Cubism.js: A JavaScript library for time series visualization. 项目地址: https://gitcode.com/gh_mirrors/cu/cubism Cubism.js是一款强大的JavaScript时间序列可视化库&…...
Windows环境下突破性macOS恢复盘制作终极指南:无需Mac设备也能创建官方纯净镜像
Windows环境下突破性macOS恢复盘制作终极指南:无需Mac设备也能创建官方纯净镜像 【免费下载链接】gibMacOS Py2/py3 script that can download macOS components direct from Apple 项目地址: https://gitcode.com/gh_mirrors/gi/gibMacOS 还在为没有Mac设备…...
基于springboot+vue高校课堂管理系统hx0546FEZB
文章目录详细视频演示技术介绍功能介绍核心代码系统效果图源码获取详细视频演示 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 技术介绍 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomca…...
华为FusionCompute存储虚拟化实战:VIMS心跳与分布式锁的5个关键配置细节
华为FusionCompute存储虚拟化实战:VIMS心跳与分布式锁的5个关键配置细节 在虚拟化环境中,存储系统的稳定性和性能直接影响整个云平台的可靠性。华为FusionCompute作为企业级虚拟化解决方案,其VIMS(Virtual Infrastructure Manage…...
