urdf ( xacro ) 的 collision碰撞参数设置

2024-09-07 06:04

本文主要是介绍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,进行人为测量,这个人为结果可能会有偏差,但其实影响不大,因为我们在实际设置碰撞几何体的时候经常会预设一定范围的安全空间。

在这里插入图片描述

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

在这里插入图片描述

  1. 引入长方体描述整个机器人
    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>

在这里插入图片描述

  1. 引入长方体描述车轮转向零件
    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>

在这里插入图片描述

  1. 引入圆柱体描述车轮
    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函数简化描述

  1. 先把.urdf文件的后缀加上.xacro
  2. 在urdf文件头部的<robot name=“”xxx“”>后面属性加上xmlns:xacro="http://www.ros.org/wiki/xacro"
<robotname="car_urdf" xmlns:xacro="http://www.ros.org/wiki/xacro">
  1. 因为我的三维模型车轮转向器和车轮都是重复的东西,可以进行统一函数封装,方便函数调用,这个类似函数定义,不细讲,可以去看古月居的视频,或者找几个代码看看。
    这里的左右轮和左右轮转向器为什么要分开写?因为他们的中心点是不一样的,这个需要注意一下,这个可能真正的工程试验才会遇到,提醒一下。
  <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碰撞参数设置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144261

相关文章

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

Django:Python高级Web框架详解及参数设置

Django是一个高级的Python Web框架,它鼓励快速开发和简洁实用的设计。Django遵循MVC设计模式,提供了一套完整的解决方案,用于构建复杂的、数据库驱动的网站。 Django的主要特点 自动管理数据库:通过ORM(对象关系映射)自动管理数据库。自动生成站点地图:支持搜索引擎优化(SEO)。用户身份认证:内置用户认证系统。中间件支持:强大的中间件支持,可以处理请求和响应。跨站请求伪

solidworks模型导出urdf(超详细)

目录 写在前面的话1 solidworks 文件2 安装sw2urdf插件3 完整步骤3.1 设置基准轴3.2 设置点3.3 设置坐标轴3.4 设置sw2urdf参数3.5 导出可能的问题3.6 ros2 编译3.7 成功结果画面 写在前面的话 刚进组1个月,我的博士研究方向是自动驾驶,还没入门,先看了古月居的ros2框架课程,现在需要开始进行仿真实验,基于实验室现有的车子进行

xacro->urdf->pdf

在ROS 2系统中,要将xacro文件转换为PDF文件,可以按照以下步骤操作: 步骤1:将Xacro文件转换为URDF文件 首先,需要将xacro文件转换为urdf文件。可以使用ROS 2提供的xacro工具来完成这个转换。 ros2 run xacro xacro path_to_xacro_file.xacro -o output.urdf -o等价于> ros2 run xacr

大数据系列之:查看Centos服务器系统日志,排查应用进程oom情况,查看进程堆内存信息,查看进程启动参数设置

大数据系列之:查看Centos服务器系统日志,排查应用进程oom情况,查看进程堆内存信息,查看进程启动参数设置 查看Centos服务器系统日志查看应用进程oom日志查看进程堆内存信息查看进程启动参数设置 查看Centos服务器系统日志 cat /var/log/messages /var/log/messages是一个系统日志文件,用于记录系统的各种消息、事件和错误信息。

OpenGL/GLUT实践:粒子系统,并添加纹理、动态模糊、边界碰撞(电子科技大学信软图形与动画Ⅱ实验)

源码见GitHub:A-UESTCer-s-Code 文章目录 1 运行效果2 实验过程2.1 基本粒子系统2.1.1 定义粒子结构2.1.2 创建粒子并初始化2.1.2.1 创建粒子2.1.2.2 初始化 2.1.3 粒子状态更新与绘制2.1.3.1 绘制2.1.3.2 更新 2.1.4 实现效果 2.2 添加纹理2.2.1 纹理添加2.2.2 渲染粒子2.2.3 实现效果 2.3 运动

护栏碰撞监测系统的发展前景如何?

​    ​护栏碰撞监测系统的发展前景可谓十分广阔,主要体现在以下几个方面:     ​    ​一、交通领域需求持续增长     ​    ​1. 道路建设不断拓展     ​    ​●在全球范围内,公路、高速公路以及城市道路等基础设施持续处于新建与扩建的进程之中。以发展中国家为例,为了大力改善交通基础设施状况,不断投入大量资源,积极推进道路建设。而发达国家也在对老旧道路进行

【网络基础】探讨以太网:封装解包、MTU、MAC地址与碰撞

文章目录 1. 概念2. 帧格式3. 如何解包和封装4. 整体网络思想 谈 跨网络通信5. 碰撞问题① 汇总整体的网络通信过程,发现问题并补充细节 6. 认识MAC地址7. 对比理解MAC地址与IP地址8. 认识MTU① MTU对UDP协议的影响② MTU对TCP协议的影响③ MSS 与 MTU的关系④ 命令 查看硬件地址MAC与MTU⑤ MTU 与 分片 1. 概念 “以太网

flexSlider 图片轮播插件的使用(附参数设置)

前提:下载插件(官网下载地址:http://flexslider.woothemes.com/ 请用IE打开,chrome可能打不开;其他下载地址:点击打开链接),并引入flexslider.css和jquery.flexslider-min.js文件(缺一不可) <link rel="stylesheet" href="../../common/css/flexslider.css" />

基于HTML5和WebGL的碰撞测试

这是公司大神写的一个放官网上给用户学习的例子,我一开始真的不知道这是在干嘛,就只是将三个形状图元组合在一起,然后可以同时旋转、放大缩小这个三个图形,点击“Animate”就能让中间的那一个图元单独绕着某一个点旋转,表单最上方的“Axis”真的完全不知道拿来干嘛用的,觉得好累赘,而且是官网的demo,也没有解释。。。所以我今天得任务就是完全剖析这个例子! 本文例子:http://www.hight