一起来从Solidworks中导出URDF模型

news/2025/2/22 11:24:27

这个博客是用来记录关于【从Solidworks中导出URDF模型】的学习历程:

相关课程链接见:如何从Solidworks导出URDF模型 • 古月 (guyuehome.com)

 下面让我们一起开始吧!!!

1. sw_urdf_exporter插件介绍

插件下载链接:sw_urdf_exporter - ROS Wiki

sw_urdf_exporter插件是一个用于SolidWorks CAD软件的工具,允许用户将SolidWorks模型导出为URDF(统一机器人描述格式)文件。URDF文件是一种XML格式的文件,被广泛用于描述机器人的物理结构和关节,以便于在机器人操作系统(ROS)等平台上进行仿真和控制。

 插件安装完成后,打开SW软件进行查看,任意打开一个装配体模型:

点击:工具 ——> Tools ——> Export as UREDF

发现左边多出来了一个URDF Exporter,说明插件安装成功

2. 如何导出移动机器人URDF模型

        机器人中的每个link之间的关系是通过joint来描述的,首先,先来配置好机器人的核心坐标系以及旋转轴

        先来确定各个link的坐标系,整个移动机器人的底盘有个base_link坐标系,4个轮子有4个轮子的坐标系,控制板和雷达也有2个坐标系。加起来一个有7个坐标系。下面开始创建坐标系:

        点击:参考几何体 ——> 点

首先来确定base_link,点击底板的底面:

在中间会出现一个圆球,这个是默认的中心点位置。确定该位置后,再点击左边的 “ √ ”:

底盘的中心点创建完毕,该点是作为base_link坐标系的原点。

继续使用同样的方式来确定4个轮子坐标系的原点:

下面开始创建雷达和控制板的坐标原点,选择2条线的交点作为控制板的坐标原点:

最后创建雷达的坐标原点,选择圆弧的中心点作为雷达的坐标原点:

接下来我们在这7个点上面来创建7个坐标系,这7个坐标系分别代表7个link的坐标系所在的位置。

下面选择点1后,再点击参考几何体命令,选择坐标系:

我们发现在点1上出现了一个坐标系,ROS中,坐标系是以“右手”坐标系来定义的。

小车往前走,是以x轴正方向运动相对应。所以需要将坐标系的方向进行修改,车的正前方以雷达的端部为准,设置x的坐标轴方向:

 这个截图的坐标系方向与ROS中的方向是匹配的,点击确认。

 可以发现,坐标系1创建完毕。

接下来进行坐标系2的创建,依然确保坐标系的x轴是指向正前方的:

 同理,车轮的坐标系创建依次进行上述同样的操作步骤:

最后,控制板和雷达的坐标系创建也遵循上述要求:

有了手动创建的这7个坐标系之后,接下来在后面的自动导出过程中,就可以选择每一个link它所相对应的坐标系。

坐标系建立完成之后,继续创建旋转轴:

下面继续,在参考几何体的命令中点击基准轴,找到旋转轴的位置:

小车一共有4个轮子,其实只要确定好2个基准轴就OK了,前后的2轮可同轴(公共轴):

坐标系和旋转轴都定义好了之后,下面才能开始利用SW_URDF插件:

--------------------------------------------------------------------------------------------
接下来点击:工具 ——> Tools ——> Export as UREDF

        首先来定义模型的base_link, 选择好零件后,不要忘了坐标系的确定,以及child_links的数量确定:

其中4个轮子都是跟底盘来做连接的,所以小车的底盘有4个child_links,下面来配置4个轮子:

Link_name和Joint_name可以自定义,确定参考坐标系和参考轴,轮子的关节类型选择continuous,最后选择link元件所包含的内容。

下面安装同样的方式来配置其余的3个轮子,直接点击模型树中即可:

 轮子的配置结束后,再配置控制板和雷达,它们都是固定在base_link上的,继续点击base_link:

扩展出2个 child_links,总数变为6个child_links:

设置Link_name和Joint_name,确定参考坐标系和参考轴(None),轮子的关节类型选择fixed,最后选择link元件所包含的内容:

同理,进行雷达的设置:

好了,插件的配置选择到此结束!

检查一遍上面的设置是否正确,确认无误后,点击:Preview and Export...

 插件生成完成后,会弹出下面的界面,用来进一步检查,确认无误后,点击右下角的Next:

 弹出第二个窗口,是用来确定link的配置:

会发现每一个link会自动产生它的质量以及惯性矩阵,真是太妙了!

最后确认无误后,点击右下角的:Export URDF and Meshes

自定义文件名后再点击保存,确定保持到对应的文件夹中即可:

完成了保存之后,返回SW的操作界面,会发现最后多出来了一个URDF Export:

 保存SW文件:Ctrl + S

下次打开依然点击:工具 ——> Tools ——> Export as UREDF

注意:可以发现先前创建的URDF设置还在,但是坐标系的设置改变了,后续需要修改模型的配置那就只能重新配置坐标系。

 -----------------------------------------------------------------------------------------

下面我们来找到之前生成的ares_description功能包:

        这些自动产生的文件与ROS是一致的,整个文件夹本身就是一个功能包,后面是可以直接来运行的。以上的这些文件不用做太多的修改,就可以结合ROS来做进一步的开发与仿真。

补充:其中的textures文件夹是用来放模型的纹理;meshes文件夹是用来放置STL文件;config文件夹是用来放置joint名字的配置文件,方便后续的仿真。

-----------------------------------------------------------------------------------------

下面将上面自动生成的URDF文件移动至Ubuntu20.04系统中,做进一步的编译:


http://www.niftyadmin.cn/n/5466151.html

相关文章

期末考试必备-----数据结构---栈的模拟(初始化,Push,Pop),栈的运用(转换进制)

数据结构专栏:数据结构_脑子不好的小菜鸟的博客-CSDN博客 /*栈的相关操作*/#define ok 1 #define error 0 #define overflow -2typedef int selemtype; typedef int status;#define InitSize 100 #define AddSize 50typedef struct Stack {selemtype* base;selemtyp…

RK3568 学习笔记 : 独立修改与编译 u-boot

前言 开发板:【正点原子】ATomPi-CA1 开发板,配置:RK3568,4GB DDRAM 64GB emmc 开发板资料给了 u-boot 与 Linux kernel 源码,尝试手动编译。 本篇记录 收到编译 RK3568 平台 u-boot 的方法 环境搭建 由于 RK 平台…

Golang数据库事务实践

事务是很多业务的基础,本文介绍了如何在Golang里实现数据库事务操作,并以一个用户注册场景给出了完整实现。原文: Transactions in Go application Go 是一种年轻而强大的语言,专为编写小型、简单的服务而创建。但随着时间推移,越…

江苏开放大学2024年春《大学英语(D) 060108》第二次过程性考核作业参考答案

答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 答案:更多答案,请关注【电大搜题】微信公众号 单选题 1从选项中选出翻译最为准确的一项。 We cannot help …

动态规划——计数类dp

例题&#xff1a;acwing900整数划分 完全背包解法 #include <iostream> #include <algorithm>using namespace std;const int N 1010, mod 1e9 7;int n; int f[N];int main() {cin >> n;f[0] 1;for (int i 1; i < n; i )for (int j i; j < n; …

Web自动化测试框架详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 实施过了web系统的UI自动化&#xff0c;回顾梳理下&#xff0c;想到什么写什么&#xff0c;随时…

2024年重庆交通大学第十五届蓝桥杯测试赛2题解Java版

A. 两双鞋换着穿 题目描述: 小蓝有两双不同的鞋,可以换着穿,一双鞋,可以穿1天就换另一双,也可以连续穿2天再换另一双,但同一双鞋不能连续穿3天。用这两双鞋搭配穿n天,总共有多少种不同的方案。两种方案,只要有一天穿的鞋子不一样,就认为是不同的方案。用A、B代表这两…

【Linux】进程管理(2):进程控制

一、进程创建&#xff1a;fork函数 我们在命令行中输入man fork 即可得到fork函数的函数接口的函数的使用方法。 我们可以看到&#xff0c;fork函数位于man手册的第2部分&#xff0c;由于第2部分通常是用于描述系统调用和库函数&#xff0c;所以我们可以了解到fork函数实际是一…