【Moveit】step或stl文件转urdf,并添加到机械臂上

【Moveit】step或stl文件转urdf,并添加到机械臂上

文章目录

  • 【Moveit】step或stl文件转urdf,并添加到机械臂上
    • 1. 安装sw_urdf_exporter插件
    • 2. 导出urdf
    • 3. 将夹爪连接到机械臂上
    • 4. 使用moveit_setup_assistant配置功能包
    • Reference

ROS专门提供了一种机器人建模方法——URDF,用来描述机器人外观、性能等各方面属性。所以我们需要将别的描述格式转换成URDF,才能在ROS中使用。

1. 安装sw_urdf_exporter插件

参考官方给出的wiki page:sw_urdf_exporter/Tutorials
我们需要给solideworks下载一个插件,插件地址为:SolidWorks to URDF Exporter,其github的release为:https://github.com/ros/solidworks_urdf_exporter/releases

注意solideworks的版本不能过高,这个插件支持solidworks的版本为(2018SP5~2021),我们安装的时候可以直接下载这个.exe可执行文件即可,然后默认安装

Image

2. 导出urdf

具体的操作可以参考这个视频:[ROS] Solidworks导出urdf

然后按照教程中的方式进行导出即可。这里我导出了一个夹爪,如下所示

Image

导出的结果会生成一个ROS的功能包,其目录结果如下

.
├── CMakeLists.txt
├── config
│   └── joint_names_gripper_urdf3.yaml
├── export.log
├── launch
│   ├── display.launch
│   └── gazebo.launch
├── meshes
│   └── base_link.STL
├── package.xml
├── textures
└── urdf
    ├── gripper_urdf3.csv
    └── gripper_urdf3.urdf

5 directories, 9 files

我们可以使用其display.launch来查看模型是否正确,但是首先得使用catkin_make来进行编译一下,我的显示结果如下

roslaunch gripper_urdf display.launch

打开rviz之后,我们需要手动添加RobotModel,添加完毕后即可显示

Image

显示的效果如下:

Image

3. 将夹爪连接到机械臂上

在导出的功能包中最重要的内容是meshs目录中的.stl文件,这是我们夹爪的模型外观,还有就是urdf目录中的gripper_urdf3.urdf文件,这个是根据.stl模型文件生成的ROS下的URDF机器人描述文件,我们可以复制其中的部分,然后将其粘贴到我们的机械臂的URDF中。

值得注意的是,link-joint-link是urdf的基本结构,示意如下

Image

我们在编写joint时,需要指定其类型,一共有这么四种类型可以指定

Image

夹爪的基座相对于机械臂是固定的,所以我们在指定夹爪的基座到机械臂的末端的这个joint的时候,一定要选择fixed类型,具体可以这么写

	<joint name="gripper_joint" type="fixed">
	    <origin rpy="0 0 0" xyz="0 0 0.107" />	#xyz rpy是你的夹爪相对于机械臂的姿态
	    <parent link="wrist3_Link" />	#改为你的机械臂的最后一个link
	    <child link="arm_hand_link0" /> #改为你的gripper的base link
	    <axis xyz="0 0 0" />
	</joint>

在定义完这个joint之后,我们就可以将之前生成的URDF中的内容复制到其中,如下是我生成的内容

    </joint>
    <link name="arm_hand_link0">
        <inertial>
            <origin xyz="-2.12153840077004E-06 9.05398824170634E-05 0.0527906490348432" rpy="0 0 0" />
            <mass value="0.113713405635938" />
            <inertia ixx="5.00996061302902E-05" ixy="3.81710319217012E-10" ixz="2.12328984939388E-10" iyy="5.98637675434999E-05" iyz="-3.29078206892533E-08" izz="6.10777596321381E-05" />
        </inertial>
        <visual>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
                <mesh filename="package://frcobot_description/meshes/fr5/collision/hand_1.STL" />
            </geometry>
            <material name="">
                <color rgba="0.792156862745098 0.819607843137255 0.933333333333333 1" />
            </material>
        </visual>
        <collision>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <geometry>
                <mesh filename="package://frcobot_description/meshes/fr5/collision/hand_1.STL" />
            </geometry>
        </collision>
    </link>
    <transmission name="trans_j1">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="j1">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="j1_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
    <transmission name="trans_j2">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="j2">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="j2_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
    <transmission name="trans_j3">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="j3">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="j3_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
    <transmission name="trans_j4">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="j4">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="j4_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
    <transmission name="trans_j5">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="j5">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="j5_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
    <transmission name="trans_j6">
        <type>transmission_interface/SimpleTransmission</type>
        <joint name="j6">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
        </joint>
        <actuator name="j6_motor">
            <hardwareInterface>hardware_interface/EffortJointInterface</hardwareInterface>
            <mechanicalReduction>1</mechanicalReduction>
        </actuator>
    </transmission>
    <gazebo>
        <plugin name="gazebo_ros_control">
            <robotNamespace>/</robotNamespace>
        </plugin>
    </gazebo>

注意这里的package://需要更改为你存放这个urdf的包的名字,我这里是将其复制了一份,统一放置在了fr_description这个包中了,请将这里修改为你的放置路径。

4. 使用moveit_setup_assistant配置功能包

修改完毕后,我们就可以使用moveit_setup_assisatant来配置或者修改功能包了,

roslaunch moveit_setup_assistant setup_assistant.launch

如下所示,我们能看到夹爪正确地显示了

Image

Reference

[1]机械臂urdf模型修改及功能包配置

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

clion配置ssh隧道转发 实现远程主机功能

clion配置ssh隧道转发 clion自带的ssh配置只能配置主机和用户名的格式来实现ssh&#xff0c;因此如果需要通过中间设备来访问调试主机的话就无法使用了。 配置ssh隧道的方式有两种&#xff0c;一种是直接配置 ~/.ssh/config 配置文件&#xff0c;一种是使用跳板机工具。clion…

Java邮件客户端设计实现:使用JavaMail向QQ邮箱发邮件

目录 JavaMail 用JavaMail向qq邮箱发消息 ▐ 授权码的获取 JavaMail JavaMail 是一个用于发送和接收电子邮件的 Java API。它提供了一个平台无关和协议无关的框架&#xff0c;允许开发人员通过标准电子邮件协议&#xff08;如 SMTP、POP3 和 IMAP&#xff09;来创建、发送…

【TB作品】MSP430 G2553 单片机口袋板,电风扇模拟控制系统设计

功能 电风扇模拟控制系统设计 基本要求: 用LED/LCD 显示电风扇的工作状态 (1,2,3,4 四档风力), 显示风类:“自然风”、“常风”和“睡眠风”。 设计 “自然风”“常风”和“睡眠风” 三个风类键用于设置风类 设计一个“摇头”键用于控制电机摇头。 设计一个“定时”键&#x…

如何快速理解并掌握Java泛型的概念和使用方法

Java泛型&#xff08;Generics&#xff09;是Java SE 5引入的一种语言特性&#xff0c;旨在增强类型安全性和代码的重用性。泛型允许类、接口和方法操作对象的特定类型&#xff0c;同时在编译时进行类型检查。通过使用泛型&#xff0c;我们可以编写更通用、更灵活的代码&#x…

Linux用docker安装ElasticsearchSpringBoot整合ES

一. 部署Elasticsearch 1. docker查询docker容器中的es docker search elasticsearch 2. 安装&#xff08;PS&#xff1a;查看自己的springBoot的版本号 对应的es版本安装&#xff09; docker pull elasticsearch:7.6.23. 查看已安装的docker镜像 docker images4. 创建挂…

再论Web应用在医学研究中构建数据收集问卷(stremlit_survey包体验)

再论Web应用在医学研究中构建数据收集问卷&#xff08;Streamlit_survey包体验&#xff09; 概述 医学队列研究是临床研究的重要形式&#xff0c;这种研究通过收集临床诊疗过程中产生的数据而阐述疾病相关的因素。在临床数据收集过程中&#xff0c;Web APP体现出了一定的优势…

SpringBoot项目本地运行正常,jar包运行时前端报错403:No mapping for......

SpringBoot项目本地运行正常&#xff0c;jar包运行时前端报错403&#xff1a;No mapping for… 提示&#xff1a;在部署jar包到云服务器上之前&#xff0c;一定要在本地运行jar包&#xff0c;查看前端代码是否运行正常&#xff0c;若报错的话可以节省很多时间 方式&#xff1a;…

Linux命令篇(六):vi/vim专项

&#x1f49d;&#x1f49d;&#x1f49d;首先&#xff0c;欢迎各位来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里不仅可以有所收获&#xff0c;同时也能感受到一份轻松欢乐的氛围&#xff0c;祝您生活愉快&#xff01; 文章目录 一、什么是vim二…

弘君资本:如何看待股价波动?

在股票商场上股价的动摇无疑是投资者最为关怀的话题之一&#xff0c;面临股价的起伏不定投资者往往会感到迷茫和焦虑。对于怎么看待股价动摇&#xff0c;弘君资本下面就为我们具体介绍一下。 股价动摇是股市运转的常态&#xff0c;股市是国民经济的晴雨表&#xff0c;股票价格…

关于大模型是否开源的分析

引言 随着科技的迅速发展&#xff0c;大模型技术成为推动人工智能前沿的引擎&#xff0c;而开源与闭源之争成为这场技术风暴中的一道独特风景。特斯拉CEO马斯克的言论将开源的旗帜高高举起&#xff0c;宣示着技术的共享和合作的时代已经来临。然而&#xff0c;在数字化时代&am…

机器视觉检测--光源

一&#xff0c;环形光源 较为常见的LED光源之一&#xff0c;提供基本的照明作用。 随着光源距离产品的工作距离LWD变化而产生的亮度分布&#xff0c;如下图暖色表示亮&#xff1b;冷色表示暗。 同时该图示是针对特定一款大小的环形光源的数据&#xff08;下同&#xff09;。 二…

【二进制部署k8s-1.29.4】八、worker端安装kubelet和cotainerd

文章目录 简介 一.安装containerd1.1.安装containerd1.2.生成containerd配置文件并启动 二.安装kubelet并配置启动文件2.1.准备kubelet配置文件及证书2.2.安装kubelet2.3.配置启动脚步 三.将node节点加入集群注意事项 简介 本章节主要讲解安装containerd和kubelet,containerd主…

【Android】使用EventBus进行线程间通讯

EventBus 简介 EventBus&#xff1a;github EventBus是Android和Java的发布/订阅事件总线。 简化组件之间的通信 解耦事件发送者和接收者 在 Activities, Fragments, background threads中表现良好 避免复杂且容易出错的依赖关系和生命周期问题 Publisher使用post发出…

什么是公有云?与私有云的区别

公有云是指第三方提供商通过公共Internet为用户提供的云服务&#xff0c;用户可以通过Internet访问云并享受各类服务&#xff0c;包括并不限于计算、存储、网络等。公有云服务的模式可以是免费或按量付费。 微 思 | 好 课 推 荐 &#xff08;全国直播&#xff09; 【公有云】华…

Nginx企业级负载均衡:技术详解系列(18)—— 作为上传服务器

你好&#xff0c;我是赵兴晨&#xff0c;97年文科程序员。 在上一期的技术分享中&#xff0c;我们探讨了如何高效搭建Nginx下载服务器&#xff0c;并讨论了长连接优化策略。那么今天&#xff0c;咱们进一步了解Nginx的另一面——作为上传服务器的配置技巧。 作为上传服务器&a…

Ollama 如何排除故障

Ollama 日志 Mac 有时&#xff0c;Ollama 可能无法如你所愿运行。解决问题的一个好方法是查看日志。在 Mac 上&#xff0c;你可以通过运行以下命令来查看日志&#xff1a; cat ~/.ollama/logs/server.logLinux 在使用 systemd 的 Linux 系统上&#xff0c;可以用这个命令查…

Elastic Security 在 AV-Comparatives 的恶意软件防护测试中表现出色

作者&#xff1a;Jamie Hynds, Tamarian Del Conte, Roxana Gheorghe 针对真实恶意软件提供 100% 防护&#xff0c;零误报 Elastic Security 在最近的 AV-Comparatives 恶意软件防护测试中取得了显著的成绩&#xff0c;防护率达到 100%&#xff0c;且对真实恶意软件样本无误报…

Proteus 安装报错There is a problem with this Windows lnstaller package

Proteus 安装常见问题 1.安装秘钥(许可证)的时候报错 报错信息如下所示&#xff1a; There is a problem with this Windows lnstaller package. A program required for this instalt to compiete coutd notbe run,contact your support personnet or packagevendor. 这个是…

通用代码生成器应用场景六,为完善的应用系统收集需求

通用代码生成器应用场景六&#xff0c;为完善的应用系统收集需求 使用急就章功能可以开发一个简单的应用先凑和着使用。此应用系统也可以成为完善的应用系统的原型和祖先。如果您新规划一个完善的应用系统&#xff0c;您可以先使用通用代码生成器生成一个临时使用的系统&#x…

【VAE-base】VAE最简单代码实现(纯全连接层实现变分自编码机)

VAE &#xff08;Variational Autoencoder&#xff09; 代码&#xff1a;https://github.com/AntixK/PyTorch-VAE/blob/master/models/vanilla_vae.py 论文&#xff1a;Auto-Encoding Variational Bayes 核心参考1 https://github.com/lyeoni/pytorch-mnist-VAE/blob/master/p…