C:\Program Files\Robotics Library\0.7.0\MSVC\14.1\x64\share\rl-0.7.0\examples\rlsg
rlViewDemo
通过SoQt Examiner Viewer显示的静态图形界面
unimation-puma560_boxes.xml
<?xml version="1.0" encoding="UTF-8"?>
<rlsg xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rlsg.xsd">
<scene href="unimation-puma560_boxes.wrl">
<model name="unimation-puma560">
<body name="link0"/>
<body name="link1"/>
<body name="link2"/>
<body name="link3"/>
<body name="link4"/>
<body name="link5"/>
<body name="link6"/>
</model>
<model name="boxes">
<body name=""/>
</model>
</scene>
</rlsg>
- RL界面格式
- 机器人刚体部分:link0~link10
- 2个model:robot;environment
urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如: 机器人底座、轮子、激光雷达、摄像头…每一个部件都对应一个 link, 在 link 标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性
- VRML文件 定义实际背景的形态和颜色
#VRML V2.0 utf8
Transform {
children [
DEF unimation-puma560 Transform {
children [
Inline {
url "unimation-puma560/unimation-puma560.wrl"
}
]
}
DEF boxes Inline {
url "boxes.wrl"
}
]
}
XML 数据储存的格式
VRML 建立仿真对象的三维模型,XML语言将模型描述成标准格式
VRML
场景图(Scene Graph):以Open Inventor3D工具包为基础的一种数据格式
rlCollisionDemo
在场景中转化生成一个模型,检查是否产生碰撞。
scene.xml
<?xml version="1.0" encoding="UTF-8"?>
<rlsg xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rlsg.xsd">
<scene href="scene.wrl">
<model name="model1">
<body name="body1"/>
</model>
<model name="model2">
<body name="body2"/>
</model>
</scene>
</rlsg>
第二个model是environment:用于做碰撞检测
scene.wrl
#VRML V2.0 utf8
Transform {
children [
DEF model1 Transform {
children [
DEF body1 Transform {
translation -1 0 0
children [
DEF shape1 Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 1.0 0.0
}
}
geometry Box {
size 1.5 1.5 1.5
}
}
]
}
]
}
DEF model2 Transform {
children [
DEF body2 Transform {
translation 1 0 0
children [
DEF shape2 Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 1.0 0.0
}
}
geometry Box {
size 1.5 1.5 1.5
}
}
]
}
]
}
]
}
此处机器人之被用作一个图形模型,未包含其运动。
可以在第一个模型中转化形成机器人,当它在环境中运动产生碰撞时,窗体会变红。
C:\Program Files\Robotics Library\0.7.0\MSVC\14.1\x64\share\rl-0.7.0\examples\rlplan
rlPlanDemo
考虑机器人运动
机器人路径规划:
- 机器人运动
- 场景图
- 障碍物
RL路径规划:rlplan\unimation-puma560_boxes_rrtConCon.xml
运动:rlkin\unimation-puma560.xml
场景图:rlsg\unimation-puma560.convex\unimation-puma560.convex.xml
rlkin\unimation-puma560.xml
<?xml version="1.0" encoding="UTF-8"?>
<rlkin xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rlkin.xsd">
<puma>
<manufacturer>Unimation</manufacturer>
<name>Puma 560</name>
<world id="world">
<rotation>
<x>0</x>
<y>0</y>
<z>0</z>
</rotation>
<translation>
<x>0</x>
<y>0</y>
<z>0</z>
</translation>
</world>
<transform id="base">
<frame>
<a idref="world"/>
<b idref="link0"/>
</frame>
<rotation>
<x>0</x>
<y>0</y>
<z>0</z>
</rotation>
<translation>
<x>0</x>
<y>0</y>
<z>0</z>
</translation>
</transform>
<link id="link0">
<ignore/>
<ignore idref="link1"/>
</link>
<revolute id="joint0">
<frame>
<a idref="link0"/>
<b idref="link1"/>
</frame>
<dh>
<d>0.6604</d>
<theta>0</theta>
<a>0</a>
<alpha>-90</alpha>
</dh>
<max>160</max>
<min>-160</min>
</revolute>
<link id="link1">
<ignore idref="link0"/>
<ignore idref="link2"/>
</link>
<revolute id="joint1">
<frame>
<a idref="link1"/>
<b idref="link2"/>
</frame>
<dh>
<d>0.1291</d>
<theta>0</theta>
<a>0.4318</a>
<alpha>0</alpha>
</dh>
<max>45</max>
<min>-225</min>
</revolute>
<link id="link2">
<ignore idref="link1"/>
<ignore idref="link3"/>
<ignore idref="link4"/>
</link>
<revolute id="joint2">
<frame>
<a idref="link2"/>
<b idref="link3"/>
</frame>
<dh>
<d>0</d>
<theta>0</theta>
<a>-0.0203</a>
<alpha>90</alpha>
</dh>
<max>225</max>
<min>-45</min>
</revolute>
<link id="link3">
<ignore idref="link2"/>
<ignore idref="link4"/>
</link>
<revolute id="joint3">
<frame>
<a idref="link3"/>
<b idref="link4"/>
</frame>
<dh>
<d>0.4331</d>
<theta>0</theta>
<a>0</a>
<alpha>-90</alpha>
</dh>
<max>170</max>
<min>-110</min>
</revolute>
<link id="link4">
<ignore idref="link2"/>
<ignore idref="link3"/>
<ignore idref="link5"/>
<ignore idref="link6"/>
</link>
<revolute id="joint4">
<frame>
<a idref="link4"/>
<b idref="link5"/>
</frame>
<dh>
<d>0</d>
<theta>0</theta>
<a>0</a>
<alpha>90</alpha>
</dh>
<max>100</max>
<min>-100</min>
</revolute>
<link id="link5">
<ignore idref="link4"/>
<ignore idref="link6"/>
</link>
<revolute id="joint5">
<frame>
<a idref="link5"/>
<b idref="link6"/>
</frame>
<dh>
<d>0.04125</d>
<theta>0</theta>
<a>0</a>
<alpha>0</alpha>
</dh>
<max>266</max>
<min>-266</min>
</revolute>
<link id="link6">
<ignore idref="link4"/>
<ignore idref="link5"/>
</link>
<transform id="tool">
<frame>
<a idref="link6"/>
<b idref="tcp"/>
</frame>
<rotation>
<x>0</x>
<y>0</y>
<z>0</z>
</rotation>
<translation>
<x>0</x>
<y>0</y>
<z>0</z>
</translation>
</transform>
<frame id="tcp"/>
</puma>
</rlkin>
可编辑设置更小的最小/最大角度范围,这样一来路径规划会变复杂或者形成更多的姿势角度变换。
rlplan\unimation-puma560_boxes_rrtConCon.xml
<?xml version="1.0" encoding="UTF-8"?>
<rlplan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="rlplan.xsd">
<rrtConCon>
<duration>1200</duration>
<goal>
<q unit="deg">0</q>
<q unit="deg">0</q>
<q unit="deg">90</q>
<q unit="deg">0</q>
<q unit="deg">0</q>
<q unit="deg">0</q>
</goal>
<model>
<kinematics href="../rlkin/unimation-puma560.xml">
<world>
<rotation>
<x>0</x>
<y>0</y>
<z>90</z>
</rotation>
<translation>
<x>0</x>
<y>0</y>
<z>0</z>
</translation>
</world>
</kinematics>
<model>0</model>
<scene href="../rlsg/unimation-puma560_boxes.convex.xml"/>
</model>
<start>
<q unit="deg">90</q>
<q unit="deg">-180</q>
<q unit="deg">90</q>
<q unit="deg">0</q>
<q unit="deg">0</q>
<q unit="deg">0</q>
</start>
<viewer>
<delta unit="deg">1</delta>
<model>
<kinematics href="../rlkin/unimation-puma560.xml">
<world>
<rotation>
<x>0</x>
<y>0</y>
<z>90</z>
</rotation>
<translation>
<x>0</x>
<y>0</y>
<z>0</z>
</translation>
</world>
</kinematics>
<model>0</model>
<scene href="../rlsg/unimation-puma560_boxes.xml"/>
</model>
</viewer>
<delta unit="deg">1</delta>
<epsilon>1e-9</epsilon>
<uniformSampler/>
</rrtConCon>
</rlplan>
rlCoachKin & rlCoachMdl
rlkin文件夹中的xml文件:Denavit-Hartenberg 运动链
rlmdl:任意几何链