三轴机械臂sw文件转urdf

摘要

      文章主要记录一下一个三轴机械臂的sw文件转urdf格式的操作方法,本人是一名大学生,想记录一下自己的学习过程,文章有不对的地方请各位指出,互相学习,这个机械臂的sw文件来自B站:晴晴的机械臂

目录

摘要

准备工作:

安装插件

开始建立机械臂的urdf文件

1.基准轴的建立

2.插入点

3.坐标轴的建立

4.使用SW_URDF工具

5.在Ubuntu中打开(Rviz)


准备工作:

安装必要的软件工具:

软件版本:SolidWorks2021
ROS:ubuntu20.04-ros-noetic版本
插件:sw2urdfSetup2021.exe

插件下载:SolidWorks用户可以通过安装ROS官方提供的sw_urdf_exporter插件实现URDF格式的模型导出。具体操作步骤如下:首先访问wiki.ros.org/sw_urdf_exporter获取sw2urdfSetup.exe安装程序,下载完成后运行安装向导,待安装程序配置完毕后,SolidWorks软件将新增URDF导出功能模块,用户即可直接在SolidWorks环境中将模型转换为ROS适用的URDF格式文件。

安装插件

1.打开网址可以看到Download Installer,点击这个会跳转下一个窗口。

2.选择自己对应的sw版本我的sw是2021版本所以这里我选择了2021版本,如果是2021版本以上的solidwords没有对应的新版本插件那么2021也可以用。

3.下载好之后双击打开,然后选择自己想要安装到的位置(这个安装位置没有要求),之后我们打开SolidWorks,在工具tools中就可以看见插件了。

开始建立机械臂的urdf文件

1.基准轴的建立

用solidworks打开对应的装配体文件

这里我们首先要建立机械臂的基准轴

这样第一个就建立好了

这里特别要主要的地方是需要给建立好的基准轴改名为“joint_1”,这个名称最终会成为urdf里面的名称,所以尽力还是不要用默认的

以此类推建立好三个基准轴

2.插入点

因为要建立坐标系所以我们这里插入一些点(这个点就不用改名了它本身不会导入到urdf里)这里我们用“圆中心”来给底座添加一个点

还是用“圆中心”添加第二个点

“圆中心”添加第三个点

“圆中心”添加第四个点

这样我们整个的辅助点就添加完成了

3.坐标轴的建立

我们上面插入了辅助点,这个辅助点的作用就是用来当作我们坐标的原点,辅助建立坐标系(这里需要特别注意的地方是:我们机械臂的第一个坐标系和最后一个坐标系是最重要的千万不能错,因为将来我们要控制机械臂的时候或者要进行一些运算,所有的位姿都是基于末端这个坐标系,也就是末端坐标系是相对于基坐标系的位姿)

先选择这个点1,然后点击坐标系

让z轴朝上x轴朝前

这样第一个坐标系就建立好了,之所以这样做是因为要和rviz里面的对应

剩下的坐标系都是以此类推,建立好以后就如图所示:

4.使用SW_URDF工具

建立base_link,然后选住我们base_link包含的物件,注意这里选择的坐标系1,因为和base_link固连的是坐标系1

点击这个向上的箭头,可以看出我们的每一轴都是有子级和父级关系的

双击Empty_Link会跳转到这个页面,然后修改名称和选择固件

同理操作第三个

最后一个

检查一下选择的没有问题就点击Preview and Export..

等待完成后会弹出这个窗口

选择joint_1然后给关节限位进行一些参数的设定,转动范围设置到-3.14~3.14(单位是弧度)、力的大小设置200、速度大小设置为20(这些参数都可以根据你实际的进行修改)

这里我们把底座的这个参数改的大一些,因为你要导入到Gazebo里面是物理仿真环境,底座太轻会倒,也可以修改机械臂的颜色RGB最后一个是透明度,然后link_1、link_2、link_3重复上面的步骤就可以了(只有base_link需要修改重量其他不用)没有问题点击右下角

最后会弹出保存文件,这个文件的名称一定一定要修改因为你要是默认名称保存,装配体后缀有个.SLDASM,这个名称会保存到你所有的路径下面,后期你在ros里面使用的时候很不方便

5.在Ubuntu中打开(Rviz)

创建一个工作空间,把生成的文件放到里面,打开到对应目录

打开我们的display.launch文件,修改为True

执行下面的命令:

这里我们点击Add把机器人的模型添加进来

选择机器人模型然后修改Fixed Frame为:base_link

选择base_link

这个时候就可以拖动这个小插件,可以看到机械臂进行了转动

内容概要:本文主要介绍了MySQL元数据的概念及其获取方式。MySQL元数据是关于数据库和其对象(如表、列、索引等)的信息,存储在系统表中,这些表位于information_schema数据库中。文章详细列举了多种常用的MySQL元数据查询命令,如查看所有数据库(SHOW DATABASES)、选择数据库(USE database_name)、查看数据库中的所有表(SHOW TABLES)、查看表的结构(DESC table_name)、查看表的索引(SHOW INDEX FROM table_name)、查看表的创建语句(SHOW CREATE TABLE table_name)、查看表的行数(SELECT COUNT(*) FROM table_name)、查看列的信息以及查看外键信息等。此外,还介绍了information_schema数据库中的多个表,包括SCHEMATA表、TABLES表、COLUMNS表、STATISTICS表、KEY_COLUMN_USAGE表和REFERENTIAL_CONSTRAINTS表,这些表提供了丰富的元数据信息,可用于查询数据库结构、表信息、列信息、索引信息等。最后,文章还给出了获取查询语句影响的记录数的Perl和PHP实例,以及获取数据库和数据表列表的方法。 适合人群:对MySQL数据库有一定了解,想要深入学习MySQL元数据获取和使用的数据库管理员或开发人员。 使用场景及目标:①帮助用户掌握MySQL元数据的获取方法,以便更好地管理和维护数据库;②通过查询information_schema数据库中的系统表,深入了解数据库结构、表信息、列信息、索引信息等;③提供Perl和PHP实例,方便用户在不同编程环境中获取查询语句影响的记录数和数据库及数据表列表。 其他说明:在使用上述SQL语句时,请注意将查询中的'your_database_name'和'your_table_name'替换为实际的数据库名和表名。此外,在获取数据库和数据表列表时,如果没有足够的权限,结果将返回null。
经验模态分解(Empirical Mode Decomposition,EMD)是一种基于数据的信号处理技术,由Nigel Robert Hocking在1998年提出,主要用于分析非线性、非平稳信号。它能够将复杂的信号自适应地分解为若干个本征模态函数(Intrinsic Mode Function,IMF),每个IMF代表信号中不同的频率成分和动态特征。在MATLAB环境下实现EMD去噪,通常包括以下步骤: 信号预处理:对原始信号进行预处理,例如平滑处理或去除异常值,以提高后续分解的准确性。 EMD分解:利用EMD算法对预处理后的信号进行分解,将其拆分为多个IMF和一个残余项。每个IMF对应信号的一个内在频率成分,而残余项通常包含低频或直流成分。 希尔伯特变换:对每个IMF进行希尔伯特变换,计算其瞬时幅度和相位,形成希尔伯特谱,从而更直观地分析信号的时频特性。 去噪策略:常见的去噪策略有两种。一种是根据IMF的频率特性,选择保留低频或高频部分,去除噪声;另一种是利用IMF的Hurst指数,噪声IMF的Hurst指数通常较低,因此可以去除Hurst指数低于阈值的IMF。 重构信号:根据保留的IMF和残余项,通过逆希尔伯特变换和累加,重构出去噪后的信号。 Hurst分析:Hurst指数是评估时间序列长期依赖性的指标,用于区分随机性和自相似性。在EMD去噪中,Hurst分析有助于识别噪声IMF,从而提升去噪效果。 在提供的压缩包中,“license.txt”可能是软件的许可协议文件,用户需遵循其条款使用代码。“EMD-DFA”可能是包含EMD去噪和去趋势波动分析(Detrended Fluctuation Analysis,DFA)的MATLAB代码。DFA是一种用于计算信号长期自相关的统计方法,常与EMD结合,进一步分析信号的分形特征,帮助识别噪声并优化去噪效果。该MATLA
### 关于机械URDF文件配置 对于机械,在ROS环境中创建和配置URDF(统一机器人描述格式)文件是一项基础工作。URDF是一种XML格式,用于定义机器人的物理属性以及关节连接方式。 #### 定义链接与关节 为了构建一个简单的机械模型,需要明确定义各个部分之间的关系。通常情况下,机械由基座(base_link),个旋关节(joint_1, joint_2, joint_3)及其对应的连杆(link_1, link_2, link_3)组成[^1]。 ```xml <robot name="three_axis_robot"> <!-- Base Link --> <link name="base_link"/> <!-- First Joint and Link --> <joint name="joint_1" type="revolute"> <parent link="base_link"/> <child link="link_1"/> <origin xyz="0 0 0.1" rpy="0 0 0"/> <axis xyz="0 0 1"/> </joint> <link name="link_1"> <visual> <geometry> <cylinder length="0.1" radius="0.02"/> </geometry> </visual> </link> <!-- Second Joint and Link --> <joint name="joint_2" type="revolute"> <parent link="link_1"/> <child link="link_2"/> <origin xyz="0 0 0.1" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <link name="link_2"> <visual> <geometry> <box size="0.1 0.05 0.05"/> </geometry> </visual> </link> <!-- Third Joint and End Effector --> <joint name="joint_3" type="revolute"> <parent link="link_2"/> <child link="end_effector"/> <origin xyz="0 0 0.075" rpy="0 0 0"/> <axis xyz="1 0 0"/> </joint> <link name="end_effector"> <visual> <geometry> <sphere radius="0.025"/> </geometry> </visual> </link> </robot> ``` 上述代码片段展示了如何通过指定父节点(parent)、子节点(child)来建立各部件间的父子关系;并通过`<origin>`标签设置相对位置和姿态,利用`<axis>`设定动方向[^1]。 #### 使用Xacro简化复杂结构 当面对更复杂的多自由度机械时,可以考虑采用Xacro宏语言扩展功能,从而减少重复性的编码劳动并提高可读性和维护性。例如: ```xml <xacro:macro name="create_joint_and_link" params="*prefix *xyz *rpy *axis"> <joint name="${prefix}_joint" type="continuous"> <parent link="${prefix}_prev"/> <child link="${prefix}_link"/> <origin xyz="${xyz}" rpy="${rpy}"/> <axis xyz="${axis}"/> </joint> <link name="${prefix}_link"> ... </link> </xacro:macro> ``` 此模板允许快速生成多个相似特征的关节及关联链节,只需调整参数即可实现个性化定制[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值