kuka协作机器人LBR系列 issy15R930导入到ros2_rviz(带外观文件)

     kuka协作机器人LBR系列 issy15R930导入到ros2_rviz(带外观文件)外观文件未调整好,外观仍需进一步研究,外观文件dae与轮廓(碰撞)文件STL并未完全对应起来。在blender里面看了一下UR机器人的文件,是对应的,本人导出的两种文件总是存在各中角度差。需要进一步研究。

    本文参考了以下两篇文章,和UR的包,本文未详细论述的地方,也可以按参考文章中的相关章节进行操作。

【ROS2机器人入门到实战】RVIZ2可视化移动机器人模型_rviz移动模型-CSDN博客

Solidworks模型转换到URDF格式并配置Moveit的详细教程_sw_urdf_exporter将soildwork的模型导为urdf文件怎么安装-CSDN博客 如何下载kuka机器人模型,可以在xpert上注册账号下载,也可以联系本人帮忙下载。

1.solidworks安装sw2urdf插件

Releases · ros/solidworks_urdf_exporter · GitHub

我用的solidworks是2023版SP5,经过验证,该sw2urdf插件是完全可以使用的。

 安装好后,还不太好找在哪里,具体位置如上图

2.solidworks安装导出dae文件的插件

Simlab 3D Plugins - Collada exporter for SolidWorks

 这个插件要收费,不过可以试用一个月。安装好后如下图

3.建立机器人模型的轴和坐标系

在建立坐标系的时候可以先隐藏相关的组件,按下图建立六个轴的基准轴和坐标系,底座也要建立一个坐标系。

    可以使用两点生成轴,也可以通过一个圆心点和那个圆面生成。效果都差不多。我都是建在凹坑里面,建到凸台上也是可以的。 建好后如下图

4.sw2urdf插件配置

这些个都要写,不要搞成自动生成,差别太大,不行的。

 

 

 

load configuration..是指你导出后,在urdf文件中有个CSV文件,可以选用上次的配置。因为每次进来都是自动生成轴,想修改很麻烦,每次都点击这么多。

点击Preview and export..按钮,导出前进行确认和配置,关键类型选择有限旋转的这个。如果不配置角度的话,rviz中轴操作无法进行。怎么配置这个角度,可以参考下一节。

 这里面的颜色就保持默认就好,好像改了也没有太大效果。点击导出urdf和meshes文件即可。

导出后大概就是这样的,如下图。 

 

5.轴关节限值配置

在kuka xpert上下载MA_LBR_iisy_zh.pdf这个文件,不会下载的可以找我要。在目录里面找到issy15R930轴数据。

把这个相关的角度计算成弧度,第一个185就是185/360*3.14=1.61,其他的类似。

第四步导出模型的时候要跟这个图片的零点位置差不多,这些角度就是上图的姿态为零点的。

6.建立ros2编译文件工程

 6.1建pyhton格式的文件工程

ros2 pkg create issy15r930 --build-type ament_python 

 

 在生成的工程目录里面复制meshes和urdf文件从第四步得到的那个文件,launch文件夹是自己建的,可以用命令,也可以界面上直接操作,怎么方便怎么来。

6.2 lauch文件说明

 就搞了这么一个launch文件,里面比较重要的就是urdf_name这一条,主要要跟urdf中的对应。

import os
from launch import LaunchDescription
from launch.substitutions import LaunchConfiguration
from launch_ros.actions import Node
from launch_ros.substitutions import FindPackageSharedef generate_launch_description():package_name = 'issy15r930'urdf_name = "issy15r930.urdf"ld = LaunchDescription()pkg_share = FindPackageShare(package=package_name).find(package_name) urdf_model_path = os.path.join(pkg_share, f'urdf/{urdf_name}')robot_state_publisher_node = Node(package='robot_state_publisher',executable='robot_state_publisher',arguments=[urdf_model_path])joint_state_publisher_node = Node(package='joint_state_publisher_gui',executable='joint_state_publisher_gui',name='joint_state_publisher_gui',arguments=[urdf_model_path])rviz2_node = Node(package='rviz2',executable='rviz2',name='rviz2',output='screen',)ld.add_action(robot_state_publisher_node)ld.add_action(joint_state_publisher_node)ld.add_action(rviz2_node)return ld

6.3 meshes文件说明

dae文件怎么导出,见第7节说明,和STL放一个文件夹就行。不用太费事。主要是urdf文件中要写对文件地址就好。

6.4 urdf文件说明

这个名字要和launch文件里面对应。

<?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="issy15r930"><linkname="base_link"><inertial><originxyz="3.7076E-05 -0.018098 0.082416"rpy="0 0 0" /><massvalue="7.2283" /><inertiaixx="0.052936"ixy="2.5994E-05"ixz="-5.0195E-05"iyy="0.040376"iyz="0.0027943"izz="0.051987" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/base_link.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/base_link.STL" /></geometry></collision></link><linkname="link1"><inertial><originxyz="0.0082771 -0.010407 0.10376"rpy="0 0 0" /><massvalue="6.0436" /><inertiaixx="0.034011"ixy="0.00069966"ixz="-0.0020617"iyy="0.033685"iyz="0.0026113"izz="0.030166" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link1.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link1.STL" /></geometry></collision></link><jointname="joint1"type="revolute"><originxyz="0 0 0.172"rpy="0 0 0" /><parentlink="base_link" /><childlink="link1" /><axisxyz="0 0 1" /><limitlower="-1.61"upper="1.61"effort="0"velocity="0" /></joint><linkname="link2"><inertial><originxyz="-0.035772 0.16784 0.08072"rpy="0 0 0" /><massvalue="10.123" /><inertiaixx="0.26037"ixy="0.048481"ixz="0.0009505"iyy="0.043052"iyz="-0.0044562"izz="0.27629" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link2.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link2.STL" /></geometry></collision></link><jointname="joint2"type="revolute"><originxyz="0.058615 -0.074125 0.126"rpy="1.5708 0 0.66908" /><parentlink="link1" /><childlink="link2" /><axisxyz="0 0 1" /><limitlower="-2"upper="0.43"effort="0"velocity="0" /></joint><linkname="link3"><inertial><originxyz="0.020571 -0.0055652 0.093536"rpy="0 0 0" /><massvalue="4.3819" /><inertiaixx="0.018095"ixy="0.0010427"ixz="-0.0029257"iyy="0.021705"iyz="0.00078561"izz="0.018661" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link3.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link3.STL" /></geometry></collision></link><jointname="joint3"type="revolute"><originxyz="-0.080235 0.37655 0.0255"rpy="3.1416 0 0" /><parentlink="link2" /><childlink="link3" /><axisxyz="0 0 1" /><limitlower="-1.3"upper="1.3"effort="0"velocity="0" /></joint><linkname="link4"><inertial><originxyz="-0.0527 0.0075768 0.11883"rpy="0 0 0" /><massvalue="4.3253" /><inertiaixx="0.031922"ixy="0.001207"ixz="0.012121"iyy="0.040091"iyz="-0.0017531"izz="0.019873" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link4.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link4.STL" /></geometry></collision></link><jointname="joint4"type="revolute"><originxyz="0.10722 -0.028729 0.12"rpy="1.5708 1.2545 1.309" /><parentlink="link3" /><childlink="link4" /><axisxyz="0 0 1" /><limitlower="-1.57"upper="1.57"effort="0"velocity="0" /></joint><linkname="link5"><inertial><originxyz="0.012242 0.00015735 0.07472"rpy="0 0 0" /><massvalue="2.4287" /><inertiaixx="0.0066893"ixy="-1.3173E-05"ixz="-0.00073951"iyy="0.007692"iyz="-9.693E-06"izz="0.0069254" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link5.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link5.STL" /></geometry></collision></link><jointname="joint5"type="revolute"><originxyz="-0.086604 0.012492 0.256"rpy="1.5708 -1.4484 1.4275" /><parentlink="link4" /><childlink="link5" /><axisxyz="0 0 1" /><limitlower="-0.95"upper="0.95"effort="0"velocity="0" /></joint><linkname="link6"><inertial><originxyz="0.0099764 0.0026101 0.050237"rpy="0 0 0" /><massvalue="1.366" /><inertiaixx="0.0022647"ixy="-0.00025613"ixz="-0.00021904"iyy="0.0031711"iyz="-5.7372E-05"izz="0.0035946" /></inertial><visual><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link6.dae" /></geometry><materialname=""><colorrgba="0.79216 0.81961 0.93333 1" /></material></visual><collision><originxyz="0 0 0"rpy="0 0 0" /><geometry><meshfilename="package://issy15r930/meshes/link6.STL" /></geometry></collision></link><jointname="joint6"type="revolute"><originxyz="0.080493 0.0010481 0.0875"rpy="-1.5708 -1.5554 -1.5578" /><parentlink="link5" /><childlink="link6" /><axisxyz="0 0 1" /><limitlower="-1.91"upper="1.91"effort="0"velocity="0" /></joint></robot>

这个文件里面啊,视觉这块,要跟dae对应meshes文件里面的文件。其他的提示找不到的时候都要检查要对应的。7个link里面都是要修改过来的。 

6.5 setup文件说明

增加4跟5中的内容

from setuptools import find_packages, setup
from glob import glob
import ospackage_name = 'issy15r930'setup(name=package_name,version='0.0.0',packages=find_packages(exclude=['test']),data_files=[('share/ament_index/resource_index/packages',['resource/' + package_name]),('share/' + package_name, ['package.xml']),(os.path.join('share', package_name, 'launch'), glob('launch/*.launch.py')),(os.path.join('share', package_name, 'urdf'), glob('urdf/**')),(os.path.join('share', package_name, 'meshes'), glob('meshes/**')),],install_requires=['setuptools'],zip_safe=True,maintainer='cheni',maintainer_email='cheni@todo.todo',description='TODO: Package description',license='TODO: License declaration',tests_require=['pytest'],entry_points={'console_scripts': [],},
)

7.导出dae文件

需要单独打开某个零件,一个一个导出成dae格式,如下图。这个地方可能就是外观和轮廓模型不能对应一致的问题所在。urdf插件肯定处理了什么,这边不知道怎么对应。

 文件导出到urdf导出的meshes文件中即可,一起复制到虚拟机的工程目录中即可。

8.编译调试

用这个命令编译

这个命令去引用

这个命令去加载 

效果如下:

这个就是只有外观的模型,没太在一起,完全可以控制来回转。

 这个是这个碰撞的模型,这个urdf插件导出来的,是可以的,没有任何问题。

 两个一起显示就是这样的,外观文件没有对其碰撞文件

9.问题分析

打开ur机器人的dae文件和STL文件,是可以对应的,在blender里面,这个距离是我拉开的,导入是完全重合的。

 对比我导入的dae和stl模型,两者就不太对应。还需要进一步研究。

 测试了移动原点也是不行的,通过这个插件搞了一下工件中心的原点对齐,也是不行的。还需要进一步确认原因。

xpert下载一次5元icon-default.png?t=N7T8https://item.taobao.com/item.htm?app=chrome&bxsign=scdqor6QWU28XNc9OWfCSkU-CHUI-AJuCDWIGWPTosGsbY2Hq5KZcxkBJDupu_V5lItJnPJnOciY07uys5r9R9Ywfte7ZaUVQ7ACg7y6MYkfdzRmk6S9w1zIPPabV-As4cP&cpp=1&id=769766514957&price=5&shareUniqueId=25609527507&share_crt_v=1&shareurl=true&short_name=h.5FtsLWRmcGNYWrz&sourceType=item,item&sp_abtk=gray_1_code_simpleAndroid2&sp_tk=UUdTcFdsMlhXRlQ=&spm=a2159r.13376460.0.0&suid=9815284f-7724-4861-b99f-05be8c53f351&tbSocialPopKey=shareItem&tk=QGSpWl2XWFT&un=8e550dfe9bde5d682040bd82ddc2e1ea&un_site=0&ut_sk=1.ZQ%20rL9czjnsDANpS6QQfKorD_21646297_1708938056189.Copy.1 

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

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

相关文章

【博士每天一篇文献-综述】A Modified Echo State Network Model Using Non-Random Topology

阅读时间&#xff1a;2023-11-23 1 介绍 年份&#xff1a;2023 作者&#xff1a; Arroyo, Diana Carolina Roca&#xff0c;数学与计算机科学研究所&#xff08;ICMC&#xff09;圣保罗大学 (USP) 期刊&#xff1a; 博士论文 引用量&#xff1a;0 这篇论文是一篇博士论文&am…

主从复制实现Redis集群

主从复制实现Redis集群实验 (一主二从): 实验环境: 使用Docker 搭建 Redis 版本 5.0.5 打开一个终端窗口&#xff0c;在其中运行如下命令创建一个名为redis-master的Redis容器。注意&#xff0c;它的端口是6379 (本地的端口:映射到容器的端口) docker run -itd--name redis-m…

能碳双控| AIRIOT智慧能碳管理解决方案

在当前全球气候变化和可持续发展的背景下&#xff0c;建设能碳管理平台成为组织迎接挑战、提升可持续性的重要一环&#xff0c;有助于组织实现可持续发展目标&#xff0c;提高社会责任形象&#xff0c;同时适应未来碳排放管理的挑战。能碳管理是一个涉及跟踪、报告和减少组织碳…

【51单片机】红外遥控红外遥控电机调速(江科大)

1.红外遥控简介 红外遥控是利用红外光进行通信的设备,由红外LED将调制后的信号发出,由专用的红外接收头进行解调输出 通信方式:单工,异步 红外LED波长:940nm 通信协议标准:NEC标准 2.硬件电路 红外发送部分 IN高电平时&#xff0c;LED不亮&#xff0c;IN低电平时&…

Linux Nginx SSL 证书配置正确,扔展示不安全

Nginx SSL 配置 首先我能够确定自己的Nginx SSL是配置正确的&#xff1a; 问题展示 通过浏览器访问自己域名&#xff0c;点击不安全后查看证书&#xff0c;展示的证书并不是自己所配置的证书&#xff0c;如下&#xff1a; 通过curl -vvv https://域名访问返回的证书是过期…

笔记本hp6930p启用UEFI安装Win10

老本hp6930p使用n多年&#xff0c;一直以为古董级的东西&#xff0c;近日折腾时&#xff0c;居然发现支持UEFI&#xff0c;于是尝试使用UEFI安装Win10&#xff0c;过程很简单&#xff0c;现做以记录。 1、BIOS中开启UEFI 2、GUID格式进行硬盘分区 3、WinPE安装Win10 一、BIOS中…

yolov8学习笔记(三)添加注意力机制+源码简单了解

目录 一、前言 二、注意力机制添加 三、源码简单了解 1、YOLO类中的——私有Model类 2、在哪来初始化的网络模型 3、注释版下载 4、笔记下载 一、前言 因为我没有学过pytorch&#xff0c;所以看源码也是一头雾水&#xff0c;不过大概看懂的是yolo是对pytorch的再次封装&a…

光谱数据处理:1.特征波长优选的不同方法与Python实现

首先&#xff0c;我们要理解为什么要对“光谱数据进行特征波长优选”以及这是在干嘛&#xff0c;光谱数据可以想象成一长串的彩色条纹&#xff0c;每种颜色对应一个波长&#xff0c;就像彩虹一样。这些颜色的条纹代表了从某种物质&#xff08;比如植物、矿石或是食品&#xff0…

31-k8s集群svc的代理模式-iptables修改为ipvs

一、概述 学到这里&#xff0c;我们都知道&#xff0c;k8s集群的外部网络分发&#xff0c;借助kube-proxy组件来完成&#xff1b; 问题&#xff1a;我们为什么要将代理模式修改为ipvs而不继续使用iptables呐&#xff1f; 因为&#xff1a; 1&#xff0c;iptables底层使用四表五…

读人工不智能:计算机如何误解世界笔记04_数据新闻学

1. 计算化和数据化的变革 1.1. 每一个领域都在进行计算化和数据化的变革 1.1.1. 出现了计算社会科学、计算生物学、计算化学或其他数字人文学科 1.1.2. 生活已走向计算化&#xff0c;人们却一点也没有变 1.2. 在如今的计算化和数据化世界中&#xff0c;调查性新闻的实践必须…

jdk21本地执行flink出现不兼容问题

环境说明&#xff1a;换电脑尝尝鲜&#xff0c;jdk&#xff0c;flink都是最新的&#xff0c;千辛万苦把之前的项目编译通过&#xff0c;跑一下之前的flink项目发现启动失败&#xff0c;啥都不说了上异常 Exception in thread "main" java.lang.IllegalAccessError: …

Scrapy实战

代码&#xff1a; Spider import scrapy from urllib.parse import urljoin from scrapy import Requestclass JiaSpider(scrapy.Spider):name "jia"allowed_domains ["desk.zol.com.cn"]start_urls ["https://desk.zol.com.cn/dongman/"]d…

jeesite用字典项配置二级下拉选

1、配置字典项 2、html代码&#xff1a;修改下拉选项框 <div class"col-xs-6"><div class"form-group"><label class"control-label col-sm-4" title""><span class"required">*</span> ${…

ZYNQ:串口-CAN协议转换

前言 目前已经实现zynq的PS-CAN和PL-CAN功能。串口-CAN协议转换是实现以太网-CAN功能的过渡&#xff0c;通过这个流程能够减少后期以太网工程出现问题的频率。阶段性功能目标如下&#xff1a; 实现数据在CAN调试助手和串口调试助手之间的来回转换&#xff0c;从而了解中断机制…

华为云软件开发生产线CodeArts前端DevOps实践

原文链接&#xff1a;CodeArts前端DevOps实践_软件开发生产线 CodeArts_理论实践_DevOps概览 本文主要以CodeArts产品自身为背景&#xff0c;简要介绍一些在前端性能优化方面的优秀实践方法和常见问题。 在开始本文的内容之前&#xff0c;先简单介绍一下华为云CodeArts。Code…

html中的meta 元信息

html中的meta 元信息 1. 配置字符编码 <meta charset"utf-8">2. 针对 IE 浏览器的兼容性配置。 <meta http-equiv"X-UA-Compatible" content"IEedge">3. 针对移动端的配置 <meta name"viewport" content"widt…

MySQL进阶篇2-索引的创建和使用以及SQL的性能优化

索引 mkdir mysql tar -xvf mysqlxxxxx.tar -c myql cd mysql rpm -ivh .....rpm yum install openssl-devel ​ systemctl start mysqld ​ gerp temporary password /var/log/mysqld.log ​ mysql -u root -p mysql> show variables like validate_password.% set glob…

【Flink精讲】Flink状态及Checkpoint调优

RocksDB大状态调优 RocksDB 是基于 LSM Tree 实现的&#xff08;类似 HBase&#xff09; &#xff0c;写数据都是先缓存到内存中&#xff0c; 所以 RocksDB 的写请求效率比较高。 RocksDB 使用内存结合磁盘的方式来存储数据&#xff0c;每 次获取数据时&#xff0c;先从内存中 …

睿尔曼超轻量仿人机械臂—远程文件传输工具使用说明

一、介绍 由于很多开发人员是在Linux下进行开发&#xff0c;但文件资料大多是保存在Windows下&#xff0c;进行文件传输很不方便&#xff0c;所以可通过远程文件传输的方式进行跨系统传输。此类方法有很多&#xff0c;这里讲述的是使用WinSCP工具进行文件远程传输。 WinSCP 是…

Go的CSP并发模型实现M, P, G简介

GMP概念简介 G: goroutine&#xff08;协程&#xff0c;也叫用户态线程&#xff09; M: 工作线程(内核态线程) P: 上下文(也可以认为是cpu&#xff0c;逻辑cpu数量&#xff0c;可以在程序启动的时候设置这个数量&#xff0c;gomaxprocs函数设置) GMP 模型 在 Go 中&#xff…