ROS-机械臂——从零构建机器人模型

URDF建模

在这里插入图片描述

URDF

URDF,全称为 Unified Robot Description Format(统一机器人描述格式),是一种用于描述机器人几何结构和运动学属性的标准文件格式。URDF 文件通常用于机器人模拟、路径规划、控制算法开发和可视化等领域,特别是在 ROS(Robot Operating System)环境中非常常见。

URDF 建模主要关注以下方面:

Link(链接):表示机器人中的刚体部分,如机器人的手臂、腿或任何静态部件。每个链接都有自己的惯性属性,如质量和转动惯量,以及几何形状,如碰撞体(colliders)和视觉表示(visuals)。
Joint(关节):描述链接之间的连接方式,包括关节类型(如revolute旋转关节、prismatic直线关节等)、关节轴线、限制条件(如关节限位)和动力学属性(如摩擦力)。
Inertial(惯性):描述链接的质量和转动惯量等物理属性。
Collision(碰撞):用于物理模拟和碰撞检测的几何形状,通常较为简单。
Visual(视觉):用于渲染和可视化的几何形状,可能比碰撞形状更复杂,以提供更真实的外观。
Material(材质):定义颜色和纹理,用于视觉表示。
Actuator(执行器):描述驱动关节的设备,如电机或液压缸的属性。
Transmissions(传动装置):定义执行器如何影响关节的运动。
Gazebo Plugins(Gazebo 插件):用于在 Gazebo 模拟器中扩展机器人的行为,如传感器模型。
URDF 建模过程涉及创建和配置上述组件,以准确地反映机器人的结构和动力学。URDF 文件通常是 XML 格式的,可以通过文本编辑器手动编写,也可以使用工具辅助生成。

URDF 与 DH 参数(Denavit-Hartenberg 参数)有联系,DH 参数用于描述关节间的相对位置和方向,而 URDF 可以基于这些参数来构建机器人的结构模型。然而,URDF 提供了更为丰富和详细的描述,包括几何形状、物理属性和传感器信息等。

机器人组成

在这里插入图片描述

内部关系

在这里插入图片描述

Links 与 Joints

在这里插入图片描述

Links

在这里插入图片描述

Joint

在这里插入图片描述

UDRF建模弊端

在这里插入图片描述

xacro模型文件

在这里插入图片描述

常量定义与使用

在这里插入图片描述

数学计算

在这里插入图片描述

宏定义、宏调用

在这里插入图片描述

文件包含

在这里插入图片描述

定义排版

在这里插入图片描述

launch文件

在这里插入图片描述
#三维模型导出URDF

网上找到UR3机械臂的资源,把 “.step” 后缀结尾的文件,在solidwork中打开如图

在这里插入图片描述

link和joint的配置

在这里插入图片描述

生成模型功能包

在这里插入图片描述

测试修改bug

在这里插入图片描述

结果展示

在这里插入图片描述

solid works

SolidWorks 是一款广泛使用的三维 CAD 软件,主要用于机械设计。要将 SolidWorks 的模型转换为 URDF(Unified Robot Description Format)格式,用于机器人仿真和控制,你需要一个插件或者工具来辅助这个过程。虽然 SolidWorks 本身并不直接支持 URDF 格式,但有一些第三方插件可以实现这一功能,比如 sw2urdf。

选择哪一款 SolidWorks 版本对于 URDF 转换而言,主要取决于以下几点:

插件兼容性:确保你所选择的 SolidWorks 版本与你打算使用的 URDF 插件兼容。不同的插件可能支持不同版本的 SolidWorks。
功能需求:如果你的模型非常复杂,可能需要使用更高版本的 SolidWorks,因为较新版本往往包含更多功能和改进的性能,这可以帮助你更高效地创建和管理复杂的装配体。
硬件要求:SolidWorks 的高版本通常需要更强的硬件配置。如果您的计算机硬件不够强大,可能会影响软件运行的流畅性和稳定性。
许可成本:SolidWorks 不同版本的价格不同,且功能也有差异。你需要评估成本效益,选择最适合你预算和需求的版本。
技术支持:较新的 SolidWorks 版本通常会获得更好的技术支持和更新。
用户熟悉度:如果你已经熟悉某个版本的 SolidWorks,除非有特别的功能需求,否则继续使用熟悉的版本可能会更加高效。
对于 URDF 导出而言,关键在于找到一个稳定且功能全面的插件,它能够准确地将你的 SolidWorks 模型转换为 URDF 文件。sw2urdf 插件能够处理 SolidWorks 的零件和装配体,自动识别关节类型、变换和轴,这对于 URDF 建模是非常重要的。

目录架构

在这里插入图片描述

相关文件

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.3)project(UR3)find_package(catkin REQUIRED)catkin_package()find_package(roslaunch)foreach(dir config launch meshes urdf)install(DIRECTORY ${dir}/DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/${dir})
endforeach(dir)

package.xml

<package format="2"><name>UR3</name><version>1.0.0</version><description><p>URDF Description package for UR3</p><p>This package contains configuration data, 3D models and launch files
for UR3 robot</p></description><author>TODO</author><maintainer email="TODO@email.com" /><license>BSD</license><buildtool_depend>catkin</buildtool_depend><depend>roslaunch</depend><depend>robot_state_publisher</depend><depend>rviz</depend><depend>joint_state_publisher_gui</depend><depend>gazebo</depend><export><architecture_independent /></export>
</package>

display.launch

<launch><argname="model" /><paramname="robot_description"textfile="$(find UR3)/urdf/UR3.urdf" /><nodename="joint_state_publisher_gui"pkg="joint_state_publisher_gui"type="joint_state_publisher_gui" /><nodename="robot_state_publisher"pkg="robot_state_publisher"type="robot_state_publisher" /><nodename="rviz"pkg="rviz"type="rviz"args="-d $(find UR3)/urdf.rviz" />
</launch>

gazebo.launch

<launch><includefile="$(find gazebo_ros)/launch/empty_world.launch" /><nodename="tf_footprint_base"pkg="tf"type="static_transform_publisher"args="0 0 0 0 0 0 base_link base_footprint 40" /><nodename="spawn_model"pkg="gazebo_ros"type="spawn_model"args="-file $(find UR3)/urdf/UR3.urdf -urdf -model UR3"output="screen" /><nodename="fake_joint_calibration"pkg="rostopic"type="rostopic"args="pub /calibrated std_msgs/Bool true" />
</launch>

ur3.urdf

<?xml version="1.0" encoding="utf-8"?>
<!-- This URDF was automatically created by SolidWorks to URDF Exporter! Originally created by Stephen Brawner (brawner@gmail.com) Commit Version: 1.6.0-4-g7f85cfe  Build Version: 1.6.7995.38578For more information, please see http://wiki.ros.org/sw_urdf_exporter -->
<robotname="UR3"><linkname="base_link"><inertial><originxyz="2.105E-05 0.098059 -0.0036545"rpy="0 0 0" /><massvalue="1.371" /><inertiaixx="0.0018288"ixy="4.4582E-07"ixz="-2.0556E-07"iyy="0.0019082"iyz="0.00013405"izz="0.0017646" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/base_link.STL" />    </geometry><materialname=""><colorrgba="0.89804 0.91765 0.92941 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/base_link.STL" /></geometry></collision></link><linkname="link1"><inertial><originxyz="-6.5885E-06 0.055927 0.0072937"rpy="0 0 0" /><massvalue="0.75521" /><inertiaixx="0.0010675"ixy="-9.4953E-08"ixz="1.0255E-07"iyy="0.00090525"iyz="-0.00013058"izz="0.00099003" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link1.STL" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link1.STL" /></geometry></collision></link><jointname="joint1"type="revolute"><originxyz="0 0 0.0844"rpy="1.5708 0 -3.1416" /><parentlink="base_link" /><childlink="link1" /><axisxyz="1 0 0" /><limitlower="-3.14"upper="3.14"effort="100"velocity="1" /></joint><linkname="link2"><inertial><originxyz="-2.6778E-06 0.060634 0.09327"rpy="0 0 0" /><massvalue="1.6559" /><inertiaixx="0.0025822"ixy="-8.909E-08"ixz="1.019E-07"iyy="0.002419"iyz="-9.301E-05"izz="0.0016021" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link2.STL" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link2.STL" /></geometry></collision></link><jointname="joint2"type="revolute"><originxyz="0 0.0675 0.05235"rpy="1.5708 0 -3.1416" /><parentlink="link1" /><childlink="link2" /><axisxyz="1 0 0" /><limitlower="-3.14"upper="3.14"effort="100"velocity="1" /></joint><linkname="link3"><inertial><originxyz="-0.0050453 -0.11121 3.4154E-06"rpy="0 0 0" /><massvalue="0.96204" /><inertiaixx="0.0010146"ixy="4.5981E-05"ixz="6.2628E-08"iyy="0.00054242"iyz="-4.3697E-08"izz="0.0010724" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link3.STL" /></geometry><materialname=""><colorrgba="1 1 1 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link3.STL" /></geometry></collision></link><jointname="joint3"type="revolute"><originxyz="0 -0.02535 0.24365"rpy="-1.5708 0 -1.5708" /><parentlink="link2" /><childlink="link3" /><axisxyz="1 0 0" /><limitlower="-3.14"upper="3.14"effort="100"velocity="1" /></joint><linkname="link4"><inertial><originxyz="0.0059208 -0.0007977 2.6694E-07"rpy="0 0 0" /><massvalue="0.32519" /><inertiaixx="0.00019459"ixy="1.8337E-05"ixz="1.3898E-10"iyy="0.00019909"iyz="1.2329E-09"izz="0.00022621" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link4.STL" /></geometry><materialname=""><colorrgba="1 1 1 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link4.STL" /></geometry></collision></link><jointname="joint4"type="revolute"><originxyz="-0.0834 -0.213 0"rpy="-3.1416 0 0" /><parentlink="link3" /><childlink="link4" /><axisxyz="1 0 0" /><limitlower="-3.14"upper="3.14"effort="100"velocity="1" /></joint><linkname="link5"><inertial><originxyz="0.0059208 0.00079771 -2.3761E-07"rpy="0 0 0" /><massvalue="0.32519" /><inertiaixx="0.00019459"ixy="-1.8338E-05"ixz="-2.0382E-10"iyy="0.00019909"iyz="1.211E-09"izz="0.00022621" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link5.STL" /></geometry><materialname=""><colorrgba="1 1 1 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link5.STL" /></geometry></collision></link><jointname="joint5"type="revolute"><originxyz="0 0.0834 0"rpy="0 0 -1.5708" /><parentlink="link4" /><childlink="link5" /><axisxyz="1 0 0" /><limitlower="-3.14"upper="3.14"effort="100"velocity="1" /></joint><linkname="link6"><inertial><originxyz="4.7334E-10 0.00010334 -0.021073"rpy="0 0 0" /><massvalue="0.11536" /><inertiaixx="4.2469E-05"ixy="1.5688E-12"ixz="1.7329E-12"iyy="4.2681E-05"iyz="1.0324E-07"izz="5.9067E-05" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link6.STL" /></geometry><materialname=""><colorrgba="1 1 1 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://UR3/meshes/link6.STL" /></geometry></collision></link><jointname="joint6"type="revolute"><originxyz="0 -0.0409 0"rpy="1.5708 0.2207 3.1416" /><parentlink="link5" /><childlink="link6" /><axisxyz="1 0 0" /><limitlower="-3.14"upper="3.14"effort="100"velocity="1" /></joint>
</robot>

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

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

相关文章

React学习笔记03-----手动创建和运行

一、项目创建与运行【手动】 react-scripts集成了webpack、bable、提供测试服务器 1.目录结构 public是静态目录&#xff0c;提供可以供外部直接访问的文件&#xff0c;存放不需要webpack打包的文件&#xff0c;比如静态图片、CSS、JS src存放源码 &#xff08;1&#xff09…

十大经典排序算法(1)——冒泡排序

一、算法简述 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单直观的暴力枚举式排序算法。它重复地遍历要排序数组&#xff0c;每次比较两个相邻元素&#xff0c;如果顺序错误就把他们交换过来。直到数组已经按照顺序排列&#xff0c;冒泡算法之所以叫做“冒泡”&…

公司想无偿裁员,同事赖着不走

关注卢松松&#xff0c;会经常给你分享一些我的经验和观点。 这招好像也不错! 事情是这样的&#xff1a;某公司准备把成本高的员工都裁掉&#xff0c;主要包含研发部和程序员&#xff0c;总共18个人&#xff0c;准备裁掉10人&#xff0c;因为他们工资开的太高了&#xff0c;…

HTML+CSS+JS井字棋(来自动下棋)

井字棋 自动下棋 玩家先下&#xff0c;计算机后下 源码在图片后面 点赞❤️收藏⭐️关注&#x1f60d; 效果图 源代码 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>Tic Tac Toe Game</tit…

释放DOE的能量,快速确定最佳工艺设置,节省时间、成本和资源

您是否希望降低成本、提高生产效率&#xff0c;并最大限度地减少行业对环境的影响&#xff1f; 所有行业&#xff0c;尤其是钢铁、铝、水泥和石化等能源密集型行业&#xff0c;都面临着应对这些挑战的持续压力。供应链压力、可持续发展、严格的监管环境、日益增长的消费者预期…

【Linux】权限的管理和Linux上的一些工具

文章目录 权限管理chgrpchownumaskfile指令sudo指令 目录权限粘滞位Linux中的工具1.软件包管理器yum2.rzsz Linux开发工具vim 总结 权限管理 chgrp 功能&#xff1a;修改文件或目录的所属组 格式&#xff1a;chgrp [参数] 用户组名 文件名 常用选项&#xff1a;-R 递归修改文…

股指期货与股票抛空机制的区别是什么?

在投资的世界里&#xff0c;有两种看似相似&#xff0c;实则大有不同的玩法&#xff1a;股指期货和股票抛空。让我们用通俗易懂的话来搞清楚这两者的区别。 股票抛空&#xff1a;借来卖出&#xff0c;期待低价买回 想象一下&#xff0c;你看到市场上有只股票&#xff0c;觉得…

基于STM32设计的超声波测距仪(微信小程序)(186)

基于STM32设计的超声波测距仪(微信小程序)(186) 文章目录 一、前言1.1 项目介绍【1】项目功能介绍【2】项目硬件模块组成1.2 设计思路【1】整体设计思路【2】ESP8266工作模式配置1.3 项目开发背景【1】选题的意义【2】可行性分析【3】参考文献1.4 开发工具的选择1.5 系统框架图…

Latte: Latent Diffusion Transformer for Video Generation

文章目录 AbstractIntroductionMethodology潜在扩散模型的初步研究Latte的模型变体Latte的实验验证潜在视频片段的patch embeddingTimestep-class information injectionTemporal positional embedding通过学习策略增强视频生成 Experiments Abstract Latte首先从输入的视频提…

成像光谱遥感技术中的AI革命:ChatGPT

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力&#xff0c;ChatGPT在遥感中的应用&#xff0c;人工智能在…

太速科技-FMC207-基于FMC 两路QSFP+光纤收发子卡

FMC207-基于FMC 两路QSFP光纤收发子卡 一、板卡概述 本卡是一个FPGA夹层卡&#xff08;FMC&#xff09;模块&#xff0c;可提供高达2个QSFP / QSFP 模块接口&#xff0c;直接插入千兆位级收发器&#xff08;MGT&#xff09;的赛灵思FPGA。支持利用Spartan-6、Virtex-6、Kin…

PTA - 接收n个关键字参数

接收n个以关键字形式传入的参数&#xff0c;按格式输出。 函数接口定义&#xff1a; def print_info (**keyargs) 提示&#xff1a;keyargs为可变参数&#xff0c;其可接受若干个关键字形式的实参值&#xff0c;并将接收到的值组装为一个字典。 裁判测试程序样例&#xff1…

数据库:redis练习题

1、安装redis&#xff0c;启动客户端、验证。 redis-server redis-cli 2、string类型数据的命令操作&#xff1a; &#xff08;1&#xff09; 设置键值&#xff1a; set mykey "haha" &#xff08;2&#xff09; 读取键值&#xff1a; get mykey &#xff08;3&…

MSSQL Server运维常用SQL命令

1、数据库连接数 select name, state, state_desc from sys.databases; 查询结果&#xff1a; 2、数据库状态 select name, state, state_desc from sys.databases; 查询结果&#xff1a; 3、数据文件状态 select a.name, b.physical_name, b.state, b.state_desc from sy…

03MFC画笔/画刷/画椭圆/圆/(延时)文字

文章目录 画实心矩形自定义画布设计及使用连续画线及自定义定义变量扇形画椭圆/圆输出颜色文本定时器与定时事件画实心矩形 自定义画布设计及使用 连续画线及自定义定义变量 扇形 画椭圆/圆 输出颜色文本

尚品汇-(十六)

目录 商品详情功能开发 &#xff08;1&#xff09;搭建service-item &#xff08;2&#xff09;获取sku基本信息与图片信息 &#xff08;3&#xff09;获取分类信息&#xff08;查看三级分类&#xff09; 商品详情功能开发 &#xff08;1&#xff09;搭建service-item 点…

状态管理的艺术:探索Flutter的Provider库

状态管理的艺术&#xff1a;探索Flutter的Provider库 前言 上一篇文章中&#xff0c;我们详细介绍了 Flutter 应用中的状态管理&#xff0c;以及 StatefulWidget 和 setState 的使用。 本篇我们继续介绍另一个实现状态管理的方式&#xff1a;Provider。 Provider优缺点 基…

笔记 2 : 课本第 3 章开始,记录 arm 的汇编指令的格式

&#xff08;13&#xff09; 介绍 arm 中的第一个汇编指令的用法 mov &#xff1a; &#xff08;14&#xff09;立即数的概念&#xff1a; &#xff08;15&#xff09; 汇编中的移位写法&#xff1a; 举例 &#xff1a; &#xff08;16&#xff09; 学习一个新的指令 cmp &a…

芯课堂 | Synwit_UI_Creator(ugui)平台之PC端界面设计篇

​今天小编给大家介绍的是华芯微特面向小尺寸TFT-LCD屏驱市场量身打造的Synwit_UI_Creator&#xff08;ugui&#xff09;自研开发套件。 UI_Creator&#xff08;ugui&#xff09;开发套件分为上位机和下位机&#xff0c;以下如无特指&#xff0c;上位机即为PC端设计器/仿真器&…

虚拟机及其Debian(kali)安装

本机电脑为Windows10系统专业版&#xff0c;在此基础上安装VMware和系统&#xff08;Kali&#xff09; 步骤如下 一、安装 VMware Workstation Pro v16.2.4 安装步骤可参照网上博客&#xff0c;该步骤较简单&#xff0c;此处不做讲解。文件中共计两个&#xff0c;其中一个是激活…