四足机器人应用篇之solidwork导出URDF

 欢迎关注微信公众号 “四足机器人研习社”,本公众号的文章和资料和四足机器人相关,包括行业的经典教材、行业资料手册,同时会涉及到职业知识学习及思考、行业发展、学习方法等一些方面的文章。

 

|1.URDF介绍

图片

一个URDF pakage示例

    urdf是ROS用于描述机器人所有元素的模型文件,采用XML格式书写,全称是United Robotics Description Format,即统一机器人描述格式;而xacro则是升级版的urdf,简化了urdf模型,用于复杂机器人的建模。

    URDF在机器人领域很流行,尤其是在ROS社区中,机器人三维模型可视化主要用的就是URDF。一个URDF文件包就是一个ros的pakage,当你有了URDF包之后,就可以在RVIZ或者gazebo进行可视化或者仿真,当然,很多其他机器人仿真软件也支持URDF文件或者也有相应插件支持转换,如webots虽然不支持urdf文件,但是可以通过一个插件进行转换。

    

        一般来说创建URDF模型的第一步是创建机器人功能包,并在此功能包中创建所需的文件夹结构。一般来说,至少需要以下文件夹:

  • urdf:用于存放机器人模型的URDF文件或xacro文件;

  • config:用于保存rviz配置文件;

  • launch:用于保存相关启动文件;

meshes:用于放置URDF中引用的模型渲染文件,一般可以是stl格式的三维模型文件。

图片

meshs文件夹,存放模型的外观文件

图片

urdf文件夹中的urdf文件示例

    在创建了文件夹结构后,我们需要编写launch文件,调用mbot_base.urdf文件,并在rviz文件夹下放置rviz的配置文件。这样做是为了启动和配置机器人模型。

    

    URDF文件里面有着与XML语言格式。要定义好一个机器人,首先你得知道机器人有什么。一个机器人主要由连杆(link)和关节(joint)组成, URDF具有类似XML树状结构的,比如下面的例子:

图片

URDF文件结构

       上面的 link 与 joint 是 robot 下面的孩子,换句话说 joint 和 link 隶属于 robot 。知道了机器人的基本构成之后还不够,还需要知道基本组成部分的一些物理信息,例如连杆的质量属性,惯量属性,颜色,以及关节的种类,这到底是转动关节还是平动关节。因此 link 和 joint 也要有自己的子分量,比如 inertial 和 visual , visual 下面还可以再次细分 geometry 和 material ,然后 material 下面还可以有自己的子分量,由此往复我们就可以用URDF来充分定义好一个机器人的各个信息。所以一个增加了这些额外信息的URDF文件内容例子如下

图片

    我们定义好了机器人的组成部分以及各个部分所具有的信息,接着还需要有属性描述这些量。比如 robot,link,joint 都有 name属性,一个用来辨识模块的字符串。color 有 rgba 属性,用来定义连杆的外表颜色。添加了相关信息的URDF文件长这个样子:

图片

        在几何结构中,它们是这样子的,连杆link之间以关节joint连接,形成一种树状结构,一般树的根节点就是机器人的基坐标系base_link

图片

    完成了URDF文件的编写,就可以通过ROS(Robot Operating System)进行编译和验证。我们说过,一个URDF文件包就是一个ros的pakage,这样我们可以像正常运行ros pakage一样,新建工作空间并初始化,然后把urdf包放到src文件中,回到工作空间进行编译,编译后的URDF文件可以通过roslaunch命令进行启动和验证。同时,我们还可以使用urdf_to_graphviz工具将URDF文件转换为PDF格式,以便更直观地查看模型的整体结构图。

|2.SW2URDF插件

    大多数时候我们并不需要直接手写URDF文件,我i们可以直接通过三维建模软件建立机器人三维模型后使用插件直接导出为URDF文件,以solidworks为例:

|2.1.sw导出为urdf

假设你已经建立好了机器人三维模型,那么接下来只需要按照以下步骤即可获得urdf文件:

  1. 下载安装插件:地址如下:
    sw2urdf插件链接地址:ROS/solidworks_urdf_exporter (github.com)

    如果上不了github的朋友可以通过百度云下载:

    链接:https://pan.baidu.com/s/1TfldLXv0vVJJb2GtSVpfGg?pwd=1024,提取码:1024

    图片

  2. 打开solidworks并打开所需要转换的三维文件


依次在各个关节建立坐标轴和坐标系,如下图

图片

在个关节建立坐标轴和坐标系

图片

建立坐标系

然后点击工具——tools——找到插件,点击插件,如下图

图片

1这里命名连杆——2选择坐标系——3选择相应零件——4这里点击👆👇可以增加或者减少子连杆,如下图

图片

        同理设置第二个连杆:1——设置连杆名字——2设置关节名字——3选择关节坐标系——4选择关节轴——5选择关节类型,其中revolute是有关节限位的,是一般的机器人关节类型,而continous是无限旋转的,如车轮关节,prismatic是平移关节,fixed固定连接,如激光雷达固连在机器人身上——6依次选择连杆的零件——7设置子连杆数量,如下图

图片

设置步骤

图片

几种关节类型

        接着导出,选择Preview and Export..,之后界面如下:这里可以检查以下相关设置,如坐标系,旋转轴旋转方向(0是不转,1是旋转),关节限位大小等,如下图

图片

        然后点击next,如果没问题可以点击导出了;点击Export URDF and Meshes,这样会同时生成stl文件,作为其三维外观,如下图

图片

        稍等一会儿,大功告成!如下图:

图片

图片

        导出完成后可以检查一下.urdf文件,再次检查有没有错误。然后就可以使用URDF文件包在ros环境或者其他支持URDF文件的环境仿真了!!!

参考:

[1]URDF学习(一)什么是URDF以及怎么理解一个URDF文件-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ABAP MESSAGE 常用的类型

类型文本描述A终止处理终止,用户必须重启事务X退出与消息类型A 类似,但带有程序崩溃 MESSAGE_TYPE_XE错误处理受到干扰,用户必须修正输入条目,左下角提示!W警告处理受到干扰,用户可以修正输入条目,左下角提示!I信息处理受到干扰&a…

数据库讲解---(数据更新、视图、数据控制)【MySQL版本】

目录 前言 一.数据更新 1.1插入数据 1.1.1插入单个元组 1.1.2将一个新学生记录(学号:091530,姓名:夏雨,性别:男,籍:海南,出生年份:1999,学院:计算机)插入到学生表中 1.1.3插入子查询结果 1.1.4有一个表“DEPT”(SDEPT CHAR(20),AVG_AGE SMALLINT)表示每个学院的学生的平…

网络安全-自学笔记

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员(以编程为基础的学习)再开始学习 我在之前的回答中,我都一再强调不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,而…

【力扣TOP100热题图解】T1.两数之和

题目链接点这里—— 力扣(LeetCode)​​​​​​ 法一:暴力枚举 最容易想到的方法是枚举数组中的每一个数 x,寻找数组中是否存在 target - x。 当我们使用遍历整个数组的方式寻找 target - x 时,需要注意到每一个位…

【Linux】磁盘管理和文件系统

目录 一、硬盘 1.硬盘结构 2.结构类型 二、MBR与磁盘分区 1.MBR主引导记录 2.磁盘分区结构 三、文件系统类型 四、linux系统添加并使用新硬盘的步骤 1.添加新的硬盘 2.刷新识别 3.进行分区 4.格式化,创建文件系统 5.挂载使用 一、硬盘 1.硬盘结构…

SpringBoot整合消息中间件(ActiveMQ,RabbitMQ,RocketMQ,Kafka)

消息中间件 消息消息队列JMS AMQPMQTTKafka Spring整合消息队列模拟消息队列的工作流程Spring整合ActiveMQSpring整合RabbitMQ直连交换机模式主题交换机模式 Spring整合RocketMQSpring整合kafka 消息 消息的发送方:生产者 消息的接收方:消费者 同步消息…

基于SSM项目高校在线请假与审批系统

采用技术 基于SpringBoot框架实现的web的智慧社区系统的设计与实现~ 开发语言:Java 数据库:MySQL 技术:SpringMVCMyBatis 工具:IDEA/Ecilpse、Navicat、Maven 简介 本系统实现了管理员,教师,学生三个模…

OSPF动态路由实验(华为)

思科设备参考:OSPF动态路由实验(思科) 一,技术简介 OSPF(Open Shortest Path First)是一种内部网关协议,主要用于在单一自治系统内决策路由。它是一种基于链路状态的路由协议,通过…

Linux下SPI设备驱动实验:实现SPI发送/接收数据的函数

一. 简介 前面文章介绍了SPI设备数据收发处理流程,后面几篇文章实现了SPI设备驱动框架,加入了字符设备驱动框架代码。文章如下: SPI 设备驱动编写流程:SPI 设备数据收发处理流程中涉及的结构体与函数-CSDN博客 SPI 设备驱动编写…

【洛谷 P8802】[蓝桥杯 2022 国 B] 出差 题解(带权无向图+单源最短路+Dijkstra算法+链式前向星+最小堆)

[蓝桥杯 2022 国 B] 出差 题目描述 A \mathrm{A} A 国有 N N N 个城市,编号为 1 … N 1 \ldots N 1…N 小明是编号为 1 1 1 的城市中一家公司的员工,今天突然接到了上级通知需要去编号为 N N N 的城市出差。 由于疫情原因,很多直达的交…

MXXE利用XXE漏洞快速获取服务器敏感文件工具

https://github.com/MartinxMax/MXXE 关于 MXXEV1.2升级版,快速获取服务器敏感文件 获取Windows服务器敏感文件 把数据包复制到payload.txt进行自动注入 $ python3 MXXE.py -lh 10.10.16.5 -user Daniel -server windows 幸运的是我们找到了服务器的私匙 获取Linux服务器敏感…

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】

LeetCode-706. 设计哈希映射【设计 数组 哈希表 链表 哈希函数】 题目描述:解题思路一:超大数组解题思路二:拉链法解题思路三: 题目描述: 不使用任何内建的哈希表库设计一个哈希映射(HashMap)。…

数字孪生与企业

数字孪生技术,简而言之,就是创造一个物理实体的数字双胞胎,在虚拟世界中精确模拟现实世界的行为、过程和系统。这种技术的核心在于,它允许我们在数字环境中实时地监控、分析和优化其物理对应物的性能和效率。数字孪生的应用场景极…

【深入理解】width 的默认值,2024年最新面试复盘

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

Win 运维 | Windows Server 系统事件日志浅析与日志审计实践

[ 重剑无锋,大巧不工。] 大家好,我是【WeiyiGeek/唯一极客】一个正在向全栈工程师(SecDevOps)前进的技术爱好者 作者微信:WeiyiGeeker 公众号/知识星球:全栈工程师修炼指南 主页博客: 【 https://weiyigeek.top 】- 为者常成&…

leetcode代码记录(Z 字形变换

目录 1. 题目:2. 我的代码:小结: 1. 题目: 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:…

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出,包含如下功能: 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制,超过则自动分文件&#xf…

Unity笔记之下拉刷新列表

这样的效果; 代码: using System; using System.Collections; using System.Collections.Generic; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI;public class ScrollRectUpdateView : Mon…

NLP中的Transformer,一文掌握

Transformer变压器模型的出现 2017 年,Vaswani 等人在关键论文“Attention is All You Need”中介绍了 Transformer 模型,它标志着与以前占主导地位的基于递归神经网络的模型(如 LSTM(长短期记忆)和 GRU(门…

北京大学快手发布统一的图文视频生成大模型Video-LaVIT

随着多模态大语言模型(LLMs)的新发展,人们越来越关注如何将它们从图像-文本数据扩展到更具信息量的真实世界视频。与静态图像相比,视频为有效的大规模预训练带来了独特的挑战,因为需要对其时空动态进行建模。 针对视频…