当前位置: 首页 > news >正文

机器人控制算法九之机器人建模(XML)、工作场景Scances建模(VRML)

机器人控制算法九之机器人建模(VRML)、工作场景Scances建模(VRML)

  • 1.机器人建模(VRML)
  • 2.工作场景Scances建模(VRML)

开始操作 ------->>>

1.机器人由空间变换transform建立VRML模型

1.1 模型可视化

下边将以puma560为例,通过wrlview对.wrl文件进行可视化:
在这里插入图片描述

1.2 puma560.wrl 模型文件

此文件貌似可以通过三维建模软件导出,但本人对机械建模不太擅长,所以之索性直接看源代码

  • 使用时删掉注释!
  • rotation均是基于基座系 link0x,y,z方向,而且旋转顺序是叠加的,第二次旋转是在第一次的基础上基于link0进行的旋转
  • translation均是基于link0 原点
  • .wrl模型仅作为用于碰撞检测的几何模型文件,同时可被可视化,但是不具备urdf模型的功能,可以提供转轴进行运动控制仿真操作

基于上边的可视化模型添加坐标系如下: rgb分别对应x、y、z
在这里插入图片描述

#VRML V2.0 utf8
Transform {
	children [
		DEF link0 Transform {
			children [
				Inline {
					url "link0.wrl"
				}
			]
		}
		DEF link1 Transform {
			rotation 1 0 0 -1.570796    //1 0 0 绕x轴旋转   -1.57表示逆时针旋转
			translation 0 0 0.6604      //基于link0坐标系方向上的偏移
			children [
				Inline {
					url "link1.wrl"
				}
			]
		}
		DEF link2 Transform {
			rotation 1 0 0 -1.570796
			translation 0.4318 0.1291 0.6604
			children [
				Inline {
					url "link2.wrl"
				}
			]
		}
		DEF link3 Transform {
			translation 0.4115 0.1291 0.6604
			children [
				Inline {
					url "link3.wrl"
				}
			]
		}
		DEF link4 Transform {
			rotation 1 0 0 -1.570796
			translation 0.4115 0.1291 1.0935
			children [
				Inline {
					url "link4.wrl"
				}
			]
		}
		DEF link5 Transform {
			translation 0.4115 0.1291 1.0935
			children [
				Inline {
					url "link5.wrl"
				}
			]
		}
		DEF link6 Transform {
			translation 0.4115 0.1291 1.13475
			children [
				Inline {
					url "link6.wrl"
				}
			]
		}
	]
}

1.3 举个例子

  • 新建一个wrl模型文件
  • 将模型的每个链接进行分离并显示坐标系,可视化效果展示
#VRML V2.0 utf8
DEF robot Transform {
	children [
		DEF link0 Transform {
			children [
				Inline { url "link0.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
		DEF link1 Transform {
			rotation 1 0 0 -1.570796
			translation 0.15 0 0.43
			children [
				Inline { url "link1.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
		DEF link2 Transform {
			rotation -0.577350 -0.577350 -0.577350 2.094395
			translation 0.15 0 1.02
			children [
				Inline { url "link2.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
		DEF link3 Transform {
			rotation 0 0 1 3.141593
			translation 0.02 0 1.02
			children [
				Inline { url "link3.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
		DEF link4 Transform {
			rotation 0 0.70710677 0.70710677 3.1415927
			translation 0.02 0 1.704
			children [
				Inline { url "link4.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
		DEF link5 Transform {
			rotation 0 0 1 3.141593
			translation 0.02 0 1.704
			children [
				Inline { url "link5.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
		DEF link6 Transform {
			translation 0.02 0 1.804
			children [
				Inline { url "link6.wrl" }
				# Inline { url "frame.wrl" }
			]
		}
	]
}

下图显示了模型的分解视图,其中包含每个链接的坐标系,以及省略 Transform 节点字段时模型的视图。在后一种情况下,所有链路的矩阵都使用单位矩阵。
在这里插入图片描述
在这里插入图片描述

2.工作场景Scances建模(VRML)

  • VRML(Virtual Reality Modeling Language)即虚拟现实建模语言。是一种用于建立真实世界的场景模型或人们虚构的三维世界的场景建模语言,也具有平台无关性。
  • VRML参考链接 https://www.web3d.org/documents/specifications/14772/V2.0/part1/nodesRef.html#Inline
  • RL的防碰撞模块用到此模型文件来构建场景文件进行碰撞检测实现
  • 划重点:如果是我们自己导出的.wrl模型文件,务必确保编码格式是utf-8格式,如果不是那就拷贝更改与官方一致!
  • 机器人建模:机器人控制算法五之 机器人由空间变换transform建立VRML模型

编程基础:

  • 1.整体架构
#VRML V2.0 utf8
DEF room2 Transform {   #整个场景名字及变换设置
	children [         #子部件
        DEF north Transform {     #定义子部件变换属性
            rotation 1 0 0 -1.570796  #绕x,y,z方向旋转
			translation 0 6 1.8      #x,y,z方向平移量
			children [
				Shape {       #形状
					appearance Appearance {
						material Material {
							transparency 0.5  #透明度
 						}
					}
					geometry Box {         #盒体
						size 3 0.1 3.5   #大小,长宽高-x,y,z
					}
				}
			]
		}
	]
}
  • 2.形状
#圆柱
geometry Cylinder {
		height 3.5
		radius 0.2
		}
#长方体
geometry Box {         #盒体
	size 3 0.1 3.5   #大小,长宽高-x,y,z
	}

2.1 场景模型概览

  • 分别对机器人、工作场景建立几何模型,工作场景的组件多为规则的几何体,通过VRML语言进行编写,下图是RL库给出的PUMA560的工作场景模型:
    在这里插入图片描述

2.2 模型建立

  • 创建地面:(测试时请删除注释)
#VRML V2.0 utf8
DEF room2 Transform {     //room2 整个场景名字
	children [       //子模块
		DEF floor Transform {    //定义地板的空间变换
			translation 0 0 -0.05   //向下平移0.05
			children [
				Shape {
					appearance Appearance {    //样貌属性
						material Material {
							transparency 0.5       //透明度
						}
					}
					geometry Box {    //盒
						size 5.2 5.2 0.1    //设置盒的尺寸,长、宽、高
					}
				}
			]
		}

	]
}

在这里插入图片描述

  • 创建南北两面的墙:
         DEF north Transform {  //北
			translation 0 2.55 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
							transparency 0.5
						}
					}
					geometry Box {
						size 5.2 0.1 1
					}
				}
			]
		}
		DEF south Transform {
			translation 0 -2.55 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
							transparency 0.5
						}
					}
					geometry Box {
						size 5.2 0.1 1
					}
				}
			]
		}

在这里插入图片描述

  • 东西面:
        DEF west Transform {
			translation -2.55 0 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
							transparency 0.5
						}
					}
					geometry Box {
						size 0.1 5 1
					}
				}
			]
		}
		DEF east Transform {
			translation 2.55 0 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
							transparency 0.5
						}
					}
					geometry Box {
						size 0.1 5 1
					}
				}
			]
		}

在这里插入图片描述

  • 添加一个立方体盒
		DEF box1 Transform {
			translation -1 0 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
						}
					}
					geometry Box {
						size 1 1 1
					}
				}
			]
		}

在这里插入图片描述

  • 添加另外两个盒:
		DEF box2 Transform {
			translation 0 -1 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
						}
					}
					geometry Box {
						size 1 1 1
					}
				}
			]
		}
		DEF box3 Transform {
			translation 0.75 0.75 0.5
			children [
				Shape {
					appearance Appearance {
						material Material {
						}
					}
					geometry Box {
						size 1 1 1
					}
				}
			]
		}

在这里插入图片描述

2.3 场景模型加入机器人

#VRML V2.0 utf8
Transform {
	children [
		DEF unimation-puma560 Transform {
			children [
				Inline {
					url "unimation-puma560.convex/unimation-puma560.wrl"
				}
			]
		}
		DEF boxes Inline {
			url "boxes.wrl"
		}
	]
}

在这里插入图片描述

相关文章:

  • 【Unity3D日常开发】Unity3D中打包WEBGL后读取本地文件数据
  • 【SDS V6 专题】开放内容平台,XOCP 助力数据常青
  • 鲜花绿植学生网页设计模板 静态HTML鲜花学生网页作业成品 DIV CSS网上鲜花植物主题静态网页
  • 国庆在家没事干?教大家用Python做一个任何视频都能看的软件, 当然,只能看正经的
  • NumPy数据分析基础:NumPy特性以及Python内置数据结构对比详解
  • (附源码)ssm学生管理系统 毕业设计 141543
  • Java8的新特性
  • Oracle-RAC集群不同节点数据查询不一致
  • 【017】基于vue.js的网易云web端(实现播放、登录)(Node接口实现)
  • 界面控件DevExpress WPF即将发布Windows 11深色主题,期待吗?
  • 【JAVA程序设计】基于SSM(非maven)图书馆座位预约管理系统
  • 基于多尺度卷积神经网络特征融合的植株叶片检测技术
  • 我的大学期末网页作业 仿学校网站制作实现 HTML+CSS西北大学新闻网带psd带js
  • vue基于web的化妆品美妆商城电子商务python flask django
  • 2022.9.29
  • 07.Android之多媒体问题
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript DOM 10 - 滚动
  • js ES6 求数组的交集,并集,还有差集
  • JSONP原理
  • Js基础知识(四) - js运行原理与机制
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Spring框架之我见(三)——IOC、AOP
  • 大整数乘法-表格法
  • 京东美团研发面经
  • 十年未变!安全,谁之责?(下)
  • 探索 JS 中的模块化
  • 阿里云服务器购买完整流程
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (3)nginx 配置(nginx.conf)
  • (C++20) consteval立即函数
  • (floyd+补集) poj 3275
  • (Matlab)使用竞争神经网络实现数据聚类
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)fiber的基本认识
  • (一)kafka实战——kafka源码编译启动
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • *p++,*(p++),*++p,(*p)++区别?
  • .axf 转化 .bin文件 的方法
  • .jks文件(JAVA KeyStore)
  • .net 4.0发布后不能正常显示图片问题
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • @ConfigurationProperties注解对数据的自动封装
  • @property @synthesize @dynamic 及相关属性作用探究
  • [04]Web前端进阶—JS伪数组
  • [ASP]青辰网络考试管理系统NES X3.5
  • [autojs]逍遥模拟器和vscode对接
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [Codeforces] combinatorics (R1600) Part.2
  • [Django 0-1] Core.Checks 模块
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • [flask]http请求//获取请求体数据