机器人控制算法九之机器人建模(VRML)、工作场景Scances建模(VRML)
- 1.机器人建模(VRML)
- 2.工作场景Scances建模(VRML)
开始操作 ------->>>
1.机器人由空间变换transform建立VRML模型
1.1 模型可视化
下边将以puma560
为例,通过wrlview对.wrl文件进行可视化:
1.2 puma560.wrl 模型文件
此文件貌似可以通过三维建模软件导出,但本人对机械建模不太擅长,所以之索性直接看源代码
- 使用时删掉注释!
- rotation均是基于基座系
link0
的x,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
}
}
]
}
扫描二维码关注公众号,回复:
14529140 查看本文章
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"
}
]
}