相关博客

  • 在V-rep中通过D-H参数自动生成机械臂模型:https://blog.csdn.net/DoctorSRn/article/details/106852312

前言

首先介绍本篇博客的背景:要进行双臂机器人的规划和协作控制方法的仿真,但是双臂机器人的机械结构可能会发生变化,为了实现调整机械臂结构后仍可以方便快捷的进行算法仿真的要求,打算使用描述性文件对机械臂结构进行建模,然后通过描述性文件将机械臂模型导入至V-rep软件。
具体来说机器人3维模型导入至V-rep仿真软件的过程如下图所示:

(这里假设机器人的机械结构图是由Solidworks绘制)
所以,为了较方便的实现调整机器人机械结构的需求,从结构图到导入至V-rep仿真软件中可以有两种方法:

  • 从Solidworks中的3D装配结构图先导出成STL网格文件,STL网格文件可以使用Magics软件改变其形状,从而实现快速调整机械结构,然后根据STL文件编写机器人的XACRO/URDF文件,再将URDF文件导入V-rep即可。每次直接使用Magics调整STL文件,然后重新导入V-rep,就可实现调整机器人机械结构的需求;
  • 使用Solidworks的URDF插件,可以实现直接从机器人3D装配结构图直接生成URDF文件,然后将URDF文件可以导入V-rep中。每次直接在Solidworks中调整机器人装配结构图,然后重新导出URDF文件,再导入至V-rep中,就可实现调整机器人机械结构的需求。

下面详细介绍整个导入过程,以及每个步骤中遇到的一些问题和解决办法。主要内容包括以下几部分:

  • 从Solidworks导出STL文件和URDF文件
  • 使用Magics软件直接编辑STL文件
  • 使用URDF文件描述机器人机械结构
  • 将机器人通过URDF文件导入至V-rep仿真软件中
  • 其他的一些尝试

PS:

  1. 博客内容可能会出现在自己之后的论文中,不知道论文查重会不会和博客内容进行比对,为了防止之后出现这种情况,博客内容尽量简写了。
  2. 使用环境为:windows 8.1 + V-rep 3.6.1,最新版本的V-rep为3.6.2,之后的V-rep将停止更新,该公司将开放新的仿真平台,听说完全兼容V-rep,还挺期待的。

1.从Solidworks导出STL文件和URDF文件

机器人的机械结构图通常使用SolidWorks或者其他的3维制图软件进行绘制,绘制好的工程通常包括零件文件和装配体文件,3维制图软件提供了将原始结构图文件转换为其他文件的功能。

1.1 从solidworks中导出机器人的STL文件

在仿真软件中导入的机器人模型主要包含机器人的结构参数、动力学参数和外形等属性。而SolidWorks中的装配结构图文件细节较多、文件较大,需要经过简化后才能导入仿真软件,最终使仿真软件中的计算效率和速度更快。
通常将装配结构图导出成STL文件或者DAE文件来表征机器人的外形,STL文件相对原始的装配结构图是经过简化的,也就说STL文件在外形方面的信息丢失比较多,所以通常从装配结构图可以导出至STL文件,但是从STL文件反向得到装配图是比较困难的。
在SolidWorks导出STL文件可以直接进行,具体细节就不讲了。

1.2 从solidworks中导出URDF文件

SolidWorks提供了URDF插件,可以直接将装配结构图导出成URDF文件,导出的文件结构如下:

urdf文件夹下就是urdf源文件,在meshes文件夹下是导出的包络图文件,通常是STL文件或者DEA文件。

2.使用Magics软件直接编辑STL文件

前面讲到设置好机器人的STL文件并编写好对应的URDF文件后,只需要通过修改STL文件就可以实现快速的对机器人机械进行调整。STL文件的调整可以使用Magics软件,该软件可以非常方便的对STL文件中的形状进行编辑,包括拉伸、剪切、布尔操作等等。

3.使用URDF文件描述机器人机械结构

URDF是常用的通过描述性文件对机器人的结构进行建模的方法,通过便签化的文本文件来描述机器人的机械结构、动力学参数、外形和颜色等特征。而xacro是URDF的升级版,可以在xacro中使用各种宏,利用xacro可以简化urdf文件,使urdf文件变得可读性强且优雅。但在使用时都是将xacro文件先解析为urdf文件后再使用,从SolidWorks直接导出的URDF文件其实是以xacro形式导出的。所以这里需要先解决xacro到urdf的转换问题。
从xacro到urdf的转换有两种方法:

  • 借助ROS中的xacro包实现转换。不推荐这种方法,因为需要安装ROS环境,比较麻烦。3.1章节主要是记录了自己在使用这种方法过程中的一些尝试,所以3.1章节可以跳过。
  • 使用可以独立运行的xacro2urdf解析器实现xacro转换为urdf

将xacro文件转换为urdf文件,一种方式使用ROS的工具包进行,需要安装ROS和相关的软件包;另一种方式借助开源xacro转urdf代码实现。

3.1 借助ROS将xacro文件转换为urdf文件

需要使用的工具运行在Linux环境,方便起见,使用腾讯的Cloud Studio作为Linux环境(版本为Ubuntu 16.04.5 LTS)。

  • 在Cloud Studio中安装ROS Kinetic:
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt-get update
# 完整版ROS,接近2G
# sudo apt-get install ros-kinetic-desktop# 核心版ROS,不到1G
sudo apt-get install ros-kinetic-ros-basesudo rosdep init
rosdep update
#echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
#source ~/.bashrc
# Cloud studio使用zsh
echo "source /opt/ros/kinetic/setup.zsh" >> ~/.zshrc
source ~/.zshrcsudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
  • 在Cloud Studio中安装相关的软件包:xacro,依赖包catkin_pkg,urdf检查工具urdf_check
sudo apt-get install python-catkin-pkg
sudo apt-get install liburdfdom-tools

检查urdf文件是否语法合法:check_urdf xxxx.urdf

  • 安装xacro包:
    手动安装xacro包:

    1. 将xacro包clone至本地git clone https://github.com/ros/xacro.git
    2. 进入xacro根目录,进行安装sudo python setup.py install
      自动安装:
      sudo apt-get install ros-kinetic-xacro

3.2 使用可以独立运行的xacro2urdf解析器实现xacro转换为urdf

xacro2urdf解析器是自己在另一个开源转换代码xacro的基础上迁移过来的,而开源转换代码xacro是从ROS软件包中抽离出来可以单独运行的xacro解析器。

更多信息欢迎访问xacro2urdf解析器的代码仓库,在代码仓库中提供了一个将ABB 4600型机械臂的XACRO文件解析为URDF文件的例子。

4.将机器人通过URDF文件导入至V-rep仿真软件中

URDF相关的知识这里不打算细讲,相关的知识可以在一下网站进行学习:

  • 古月居:http://www.guyuehome.com/372
  • urdf语法规范(非常重要):http://wiki.ros.org/urdf/XML
  • urdf官方教程:http://wiki.ros.org/urdf/Tutorials
  • DH2URDF:https://github.com/AdoHaha/DH2URDF
  • 在线URDF对应机器人3D模型展示:https://mymodelrobot.appspot.com/5629499534213120
  • URDF基本知识:https://blog.csdn.net/sunbibei/article/details/52297524

V-rep中提供了通过URDF导入机器人模型的插件。

4.1 urdf文件导入V-rep例子1

尝试导入一个小车的urdf描述文件,小车urdf文件来自该博客,小车的URDF文件为:

<robot name="test_robot">  <link name="base_link">  <visual>  <geometry>  <box size="0.2 .3 .1"/>  </geometry>  <origin rpy="0 0 0" xyz="0 0 0.05"/>  <material name="white">  <color rgba="1 1 1 1"/>  </material>  </visual>  </link>  <link name="wheel_1">  <visual>  <geometry>  <cylinder length="0.05" radius="0.05"/>  </geometry>  <origin rpy="0 1.5 0" xyz="0.1 0.1 0"/>  <material name="black">  <color rgba="0 0 0 1"/>  </material>  </visual>  </link>  <link name="wheel_2">  <visual>  <geometry>  <cylinder length="0.05" radius="0.05"/>  </geometry>  <origin rpy="0 1.5 0" xyz="-0.1 0.1 0"/>  <material name="black"/>  </visual>  </link>  <link name="wheel_3">  <visual>  <geometry>  <cylinder length="0.05" radius="0.05"/>  </geometry>  <origin rpy="0 1.5 0" xyz="0.1 -0.1 0"/>  <material name="black"/>  </visual>  </link>  <link name="wheel_4">  <visual>  <geometry>  <cylinder length="0.05" radius="0.05"/>  </geometry>  <origin rpy="0 1.5 0" xyz="-0.1 -0.1 0"/>  <material name="black"/>  </visual>  </link>  <joint name="joint_base_wheel1" type="fixed">  <parent link="base_link"/>  <child link="wheel_1"/>  </joint>  <joint name="joint_base_wheel2" type="fixed">  <parent link="base_link"/>  <child link="wheel_2"/>  </joint>  <joint name="joint_base_wheel3" type="fixed">  <parent link="base_link"/>  <child link="wheel_3"/>  </joint>  <joint name="joint_base_wheel4" type="fixed">  <parent link="base_link"/>  <child link="wheel_4"/>  </joint>
</robot>

将上面的小车URDF文件保存在本地,然后使用V-rep的URDF插件导入后如下图:

  • 发现只有wheel1是黑色,其他轮子的颜色不对,这是因为wheel1的<material>是完全的,其他三个轮子的<material>属性没有写全,当严格按照wheel1的格式来写时,其他轮子的颜色就正常了。而在ROS下,这种写法是可以的。这可能是因为V-rep的URDF解析器没有把情况考虑周全。当然也可以导入URDF后在V-REP中设置模型的颜色。
  • 另外还有一些ERROR,但是导入的模型是符合urdf文件描述的。
  • urdf文件中<origin rpy="0 1.5 0" xyz="0.1 0.1 0"/>rpy表示绕轴x,y,zx,y,zx,y,z分别旋转的角度(弧度制),这里的1.5表示绕y轴旋转差不多90°90\degree90°。
  • 关节<joint>属性<type>fixed,导入V-rep后是用于连接刚性物体的力传感器模块。
  • 导入的所有模型没有使能动力学属性。

4.2 urdf文件导入V-rep例子2–导入有STL文件构成的URDF文件

https://github.com/doctorsrn/xacro2urdf/blob/master/abb_irb4600_support/urdf/test_abb_4600_voxel1.urdf
3.2节介绍了xacro2urdf解析器,并给出了一个ABB 4600机械臂URDF文件导出的例子,而V-rep仿真软件中内置了ABB 4600机械臂模型,所以我们将通过URDF导入的机械臂和内置的机械臂模型进行一个简答的对比。
首先在xacro2urdf解析器代码仓库中可找到导出的ABB 4600机械臂的URDF文件test_abb_4600.urdf,使用URDF插件导入V-rep,
导入ABB 4600型机械臂和V-rep中内置的模型对比如下图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9XVMKKgM-1592535862447)(./urdf_pics/4_pics.png)]
左边是V-rep内置的ABB 4600机械臂模型,右边是通过URDF文件导入的机械臂模型。可以看到从外形上看区别不大,内置的模型细节更多一些。其他方面的差异:

  • 通过URDF直接导入的模型,各个零部件的名字比较长且混乱,需要通过手动修改简化;
  • URDF文件中零件颜色的设置存在一些问题,导致导入的模型颜色有时会不正常;
  • 其他问题。。

4.3 urdf文件导入V-rep例子3–导入有URDF内置几何形状的模型文件

4.2中导入的ABB 4600机械臂它的<collision><visual >标签属性均有外部的STL文件或DEA文件来定义,如果不使用外部文件,直接使用URDF默认支持的长方体、圆柱体和球体等形状来定义也是可以的。在xacro2urdf解析器代码仓库中提供了使用URDF内置几何体表征<collision><visual >标签属性的模型文件test_abb_4600_voxel*.urdf,具体实现是简单粗暴的直接把<collision><visual >标签属性中的STL部分替换成内置的几何体,导入至V-rep中,对比的效果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eajY7gxL-1592535862449)(./urdf_pics/5_pics.png)]
左边是使用URDF内置几何体的机械臂模型,右边是通过STL文件定义<collision><visual >标签属性的模型,虽然使用几何体基本可以表征机械臂的<collision><visual >标签属性,但是不太美观。所以这种方式只是一种尝试。

PS: V-rep在windows下的URDF中设置<mesh>属性时路径的设置问题:需要使用绝对路径,示例:

 <link name="right_leg"><visual><geometry><mesh filename="c://users//Srn//Desktop//w1.stl"/></geometry><material name="blue"/><origin rpy="0 0 0" xyz="0 0 0"/></visual></link>

4.4 urdf相关知识

  1. ABB公司常用机械臂资料
  • 机械臂URDF模型:https://github.com/ros-industrial/abb
  • 更全的URDF模型:https://github.com/ros-industrial/abb_experimental
  • 不同机械臂型号:https://new.abb.com/products/robotics/zh/industrial-robots
  1. 小知识点
  • urdf中模型位姿默认是竖直向上,旋转和平移变换时都是先旋转再平移
  • urdf中的box,cylinder,sphere默认的<origin>是其几何中心
  • urdf中对导入的mesh进行缩放的写法是:<mesh filename="package://dual_arm/meshes/xjt/collision/base_link.stl" scale="0.1 0.1 0.1"/>
  • meshlab软件可用来查看3D结构,实现stl和dea文件的转换。
  • 导入模型中包含dea或stl等3维模型,如果3D模型较大,导入时就会很慢甚至程序卡死。
  • URDF坐标系定义、V-rep坐标系定义以及D-H参数坐标系定义都存在差异,注意这个点的一些坑。
  1. 其他相关
  • 常用物体3D模型和URDF文件:http://www.ycbbenchmarks.org/

5.其他的一些尝试

5.1 通过修改D-H参数来达到快速调整机械臂机械臂结构的需求

D-H参数是表征机械臂机械结构的参数,通过修改D-H参数的确可以表征不同结构的机械臂,但是通过修改D-H参数来达到快速调整机械臂机械臂结构的需求,这种想法在逻辑上是不太合适的,因为通常是先根据性能需求设计好机械臂,然后才能得到机械臂的D-H参数,而不是先设计好D-H参数,再生成机械臂。
不过D-H参数和URDF中的几何参数之间从原理上的确是可以相互转换的,也就是说理论上,只要知道了机械臂的D-H参数,这个机械臂的骨架结构是可以绘制出来的,但是更多的外形信息是无法知道的。从D-H参数生成机器人的URDF文件,这方面的研究在网上主要找到以下两个:

  • URDF Generator for Manipulator Robot:2019年的一篇介绍从D-H参数生成URDF文件的论文
  • 开源项目DH2URDF,提供了在线实现D-H参数到URDF文件的转换功能,同时提供了在线URDF文件可视化的功能,D-H参数生成URDF的界面:

5.2 通过D-H参数快速导入机械臂模型至V-rep中

该部分内容请看博客通过D-H参数快速导入机械臂模型至V-rep中

------The End------------


写在最后,本篇博客主要是记录自己在将机器人3维模型导入至V-rep仿真软件过程中的各种尝试,由于是各种尝试,所以内容会看起比较杂乱,因为这篇博客并不是所谓的教程,只是一篇笔记。此外,以上所有内容主要是讲如何导入模型至V-rep中,而想要使用导入的模型进行仿真,还需要对导入的模型进行相关属性的设置,包括各种仿真参数的设置等等,以及一些控制脚本的编写等,这些之后有时间再去写。欢迎针对博客中的内容进行交流~

模型导入V-rep后的后续处理

参考博客:

  • https://blog.csdn.net/weixin_34378045/article/details/85881945
  • https://blog.csdn.net/weixin_34218579/article/details/85882238
  1. 形状的设置问题
    导入后模型默认为Compound convex shapes:

    这种形状不适合快速进行动力学仿真,可以通过[Menu bar --> Edit -->Morph Selection into convex shapes]将其转化为convex shapes来提高仿真计算速度。
    如果是符合形状,可以使用[Menu bar --> Edit -->Morph Selection into its convex decomposition shapes] 将其转化为Compound convex shape来提高仿真计算速度。
    不同形状的速度参考官方文档。
    将原始形状可以作为visual层用于可视化,将生成的convex形状用于动力学仿真,并可以隐藏。通常将用于动力学仿真的convex形状的dynamic属性先设置为Body is respondable,但Body is dynamic先不勾选,在需要动力学仿真时再勾选。
    注意: 用于可视化的形状和用于动力学仿真的convex形状在文件结构上属于同一层,且convex形状通常是父节点。

  2. 设置response形状的属性为dynamic,并且把基座设置为"Set to dynamic if gets parent"

将机器人3维模型导入至V-rep仿真软件的方法小结相关推荐

  1. Unity3d中模型导入轴向不对的解决方法

    Unity3d中模型导入轴向不对的解决方法 参考文章: (1)Unity3d中模型导入轴向不对的解决方法 (2)https://www.cnblogs.com/Sakya00/p/3231483.ht ...

  2. php 组装二维数组,php实现快速对二维数组某一列进行组装的方法小结

    本文实例总结了PHP实现快速对二维数组某一列进行组装的方法.分享给大家供大家参考,具体如下: 问题: 比如我二维数组是这样的: $user = array( '0'=> array('id'=& ...

  3. php多维求组按照健值排序,PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】...

    本文实例讲述了PHP编程实现多维数组按照某个键值排序的方法.分享给大家供大家参考,具体如下: 实现对多维数组按照某个键值排序的两种解决方法(array_multisort和array_sort): 第 ...

  4. PDPS软件:机器人外部柔性管线包模型导入与虚拟仿真操作方法

    目录 概述 机器人管线包模型准备 机器人管线包模型导入 机器人管线包模型放置到机器人 管线包模型与机器人模型实现资源组合 管线包模型与机器人模型运动关联设置 管线包模型安装到机器人 新机器人设备模型保 ...

  5. 运动控制算法c语言,VC平台下机器人虚拟运动控制及3D运动仿真的有效实现方法...

    摘要: 提出了一种在VC(visual C)平台下实现机器人虚拟运动控制及3维运动仿真的有效方法.该方法建立了一个开放性的体系,能够直接移植或嵌入其它C语言算法程序,能导入SolidWorks,Pro ...

  6. SolidWorks转.urdf格式机器人模型导入Matlab

    SolidWorks转.urdf格式机器人模型导入Matlab 本文讲述了利用solidworks将机器人模型转换为urdf格式导入Matlab中,以便后续法开发等操作.同时针对测试时遇到模型导出不完 ...

  7. Matlab - Solidworks 机器人建模(4)—— 如何把SolidWorks模型导入到Matlab (Simscape模型)

    Matlab - Solidworks 机器人建模(4)-- 如何把SolidWorks模型导入到Matlab (Simscape模型) 1.说在前面 本文会介绍怎么直接把solidworks的模型转 ...

  8. 四足机器人研究(一)-V-rep宇树A1模型导入

    urdf模型导入 宇树科技A1 urdf文件位置 宇树GitHub网址 文件位置路径:unitree_pybullet-master\data\a1 V-rep操作 选择 URDF import 选择 ...

  9. 【Gazebo入门教程】第二讲 模型库导入与可视化机器人建模(模型编辑器)

    [Gazebo入门教程]第二讲 模型库导入与可视化机器人建模(模型编辑器) 文章目录 [Gazebo入门教程]第二讲 模型库导入与可视化机器人建模(模型编辑器) 一.模型库导入 二.模型编辑器(以轮式 ...

最新文章

  1. 解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案)
  2. 机器学习系列 5:特征缩放
  3. 来自Riot 的一份游戏美术教程(三):角色设计
  4. windows7下安装php的imagick和imagemagick扩展教程
  5. 高并发整体可用性:大规模集群下的分片管理策略
  6. c语言编译器查错,C语言编译器的错误信息
  7. 5g组网sa方式的演进_关于5G的SA(独立组网)和NSA(非独立组网),这篇通俗易懂!
  8. #IB TWS编程手记——03-关于IB合约的一二三
  9. 《哪吒》票房直指40亿,闯中国影史前三!导演饺子:最怕你的梦想只有一腔热血
  10. 加拿大首个以女性名字命名的工程学院:商界领袖Gina Cody向蒙特利尔康考迪亚大学捐赠1500万加元,创造历史
  11. 超可爱的宝藏网站,看看你在漫画中长什么样
  12. 用中文日淘:“日亚”的近85万件商品进驻亚马逊中国
  13. 程序员找工作,这样的公司千万别去!!
  14. 030 | 广西趣海有限责任公司创业计划书 | 大学生创新训练项目申请书 | 极致技术工厂
  15. 汇通达IPO遇冷:募资缩水至3亿美元 汪建国与阿里是股东
  16. 面试编程题-青蛙跳楼梯问题
  17. 平板电脑可以用手写的计算机软件,平板电脑可以当手写板用吗
  18. (读书笔记)《玩着玩着就能成为PPT高手》——事前准备不能马虎
  19. 诉不尽女儿心事——走进古代女性的闺房(组图)
  20. 像素射击服务器维护公告图片,《像素射击》导入自定义头像方法

热门文章

  1. 国医大师王绵之:汤药煎服经验谈
  2. 【淘宝SEO技巧】淘宝SEO优化|淘宝搜索排名规律|淘宝宝贝标题优化
  3. Qt 错误qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
  4. Zhong__pymysql基本使用
  5. 现代微型计算机的字长,计算机的字长
  6. MAC 部分目录作用
  7. 猫眼电影票房爬取到MySQL中_爬虫之爬取猫眼电影专业版实时数据排行榜
  8. python 获取计算机的网卡信息
  9. iPhone 界面尺寸以及各种图表尺寸
  10. java ofd转pdf和jpg