机器人控制算法九之机器人建模(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)

编程基础:

  • 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"
		}
	]
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yohnyang/article/details/127082689
今日推荐