2024年3月24日发(作者:)
32
基于
DXF
图的复杂
AGV
地图自动创建与显示
基于
DXF
图的复杂
AGV
地图自动创建与显示
Automatic
Creation
and
Display
of
Complex
AGV
Maps
Based
on
DXF
Maps
刘洋
钱东海赵伟陈成
(
上海大学机电工程与自动化学院
,
上海
200444
)
摘要
:
AGV
路径规划离不开电子地图的创建
,
传统的地图创建方式需要通过计算机编程绘制很多直线
、
圆弧等几何图
形
,
创建繁琐且不易修改
。
首先利用
AutoCAD
快速创建
DXF
格式的
CAD
文件
,
其后在
VS2015
平台上
,
利用
C#
编程实现
对
DXF
文件的数据读取
,
通过对数据的处理将
CAD
图形转换为
AGV
路径规划的电子地图
,
使得复杂的
AGV
电子地图的
创建十分轻松和高效
,
同时自动创建地图搜索算法所需的数据结构
,
为路径搜索提供了数据支撑
,
并对电子地图进行了准确
地展示
;
最后通过实例验证了算法的可行性和有效性
。
关键词
:
AutoCAD
;
DXF
文件
;
自动导引小车
;
电子地图
;
路径规划
Abstract
:AGV
path
planning
is
inseparable
from
the
creation
of
electronic
traditional
way
of
map
creation
re
quires
computer
programming
to
draw
many
geometric
shapes
such
as
lines
and
arcs,which
are
tedious
to
create
and
diffi
cult
to
use
AutoCAD
to
quickly
create
DXF
format
CAD
file,then
on
VS2015
platform,using
c
#
programming
to
read
DXF
file
data,through
processing
the
data
transform
CAD
graphics
for
AGV
path
planning
of
electronic
map,and
make
it
easy
to
complex
AGV
electronic
maps
to
create
and
efficient,and
automatically
create
the
required
data
structure
map
search
algorithm,search
provides
data
support
for
the
path,and
the
electronic
map
display
y,an
example
is
giv
en
to
verify
the
feasibility
and
effectiveness
of
the
algorithm
in
this
paper.
Keywords
:AutoCAD,DXF
file,AGV,electronic
map,path
planning
DXF
作为
AutoCAD
的标准数据交换格式,
精确地保存了
CAD
图形文件的所有数据
,
通过对
DXF文件的数据处理
,
便可
实现与
AutoCAD
系统的连接
。
AGV
作为物流系统和柔性制造
系统中的关键子系统
,
目前得到了广泛的应用
。工厂环境地图的
始组码为
ENTITIES
,
实体段结束组码为
ENDSEC
,
因此实体段
的全部数据便可准确获得
。
以下为读取并保存
DXF
文件实体段数据的部分关键代码
:
do
建模与路径规划是
AGV
系统中重要的组成部分
。
而
AGV
路径
规划又依赖于地图数据,地图中的节点
、
线段等信息为路径搜索
{
line
=
ne();
提供数据支撑
,
因此工厂环境的地图建模尤为重要
,
也是仿真环
境下必不可少的前提
。
对于一个大型工厂,环境可能十分复杂
,
if(line
==
"ENTITIES")//
查找实体段
传统的地图建模方法需要人为地输入地图数据,
建立节点间的
{
do
{
line
=
ne();//0,
事物开始
拓扑关系
[
1-2
]
,过程相当繁琐且不易于维护
。
本文提岀一种基于
AutoCAD
复杂地图自动创建的方法
,
利用
AutoCAD
创建工厂
环境地图
,
通过编程技术对
CAD
图形文件进行识别与处理
,
达
(line);//
添加到
list
中
)
while
(line
!=
"ENDSEC");
//
当前事物结束
)
)
while
(!tream)
;//
当前位置是否位于流的末尾
到工厂环境地图的建模
、为
AGV
路径规划提供数据支撑和进行
AGV
仿真的目的
。
1
DXF
图形文件结构
DXF
文件由标题段(
Header
)
、
表段
(
Tables
)、
块段
实体段数据包括线段
(
Line
)
、
圆弧(
Arc
)
、
圆渊
Circle
)
、
多段
线(
Lwpolyline
冤等
。
下面以多段线为例
,
完整地展示提取数据的
(
Block
)
、
实体段
(
Entities
)
和文件结束段
(Eof
of
File
)共5
部分
过程
。
多段线的部分组码
、
组值及含义如表
1
所示
:
表
1
多段线的部分组码
,
组值及含义
Til
n
组成
[
3-5
]
遥
DXF
文件可以借助记事本等工具直接打开
,
但它的数据量
非常庞大
,
一个简单的图元文件可能会达到上万行数据,而一个
■-
L-T
L'-vrCi-YLIM
:
■=
X
图
r
-I
■'LV.-rOLY-E-.h
:
:
f'/d
-2
'v
f
大型的图形文件可能达到几百万行数据
。
DXF
通过每一行存储
相关数据,
实际上每两行为一个组,
第一行为组码,
也就是组的
-上
IO'.
i
:;.
AuL'ik-LmiLy
■
:
i
TD-rn
QdJ
止
」
•
:
•
;
代码,
第二行为组值,
一个组就代表了一个数据的含义和值,
DXF
文件由大量的组构成
[
6-13
]
。
虽然
DXF
文件结构相当复杂
,
但
根据我们的需求
,
只要获取其中的层表
、
块段和实体段,就可以
完成相应实体的提取
。
KI.-
--i
!
I'/.i
AuDbl
:,
,il>luiv
j'
住!〒
-
:
l
:
'
Ac
~i:
丈门••皆
v
hl
:
■■:
■Yi
•■•■1
t
20
110
:込他亡&曲茁
P
xilL.
m
-
^-rln..
-i-ij-ll
■T-
%
B
■i
■'b-.l
:
.-
Y
|M.
.■:
2
自
DXF
文件提取各实体段及块段
2.1
提取各实体段
提取多段线数据的关键部分代码如下所示:
case
"LWPOLYLINE"://
多段线
首先将
DXF
文件中实体段的数据提取岀来
,
通过使用
C#
int
LwpolylineCount
=
0;
int
[
演
LwpolylinePoint;
//
动态创建端点
中的
StreamReader
类来读取
DXF
文件的各行信息
,
实体段开
《
工业控制计算机
》
2020
年第
33
卷第
9
期
Po
i
nt[]
lp;
//
存放端点
int
cp
=
0;
int
L
i
neSymbol
=
0;//
多段线标志
for
(int
j
=
i
+
1;
j
<
ent
i
t
i
-
1;
j++)
{
if
(ent
it
i
es[j].Tr
im()
==
"5")
{
ID
=
ent
i
t
i
es[j
+
1];
if
(ent
it
i
es[j].Tr
im()
==
"8")
//
图层
{
Layer
=
ent
it
i
es[j
+
1];
if
(ent
it
ies[j].Tr
im()
==
"62")//
多段线颜色
{
color
=
(int)(ent
i
t
i
es[j
+
1]);
if
(ent
it
i
es[j].Tr
im()
==
"90")//
顶点数
{
Lwpolyl
i
neCount
=
(int)(ent
i
t
i
es[j
+
1]);
if
(ent
it
ies[j].Tr
im()
==
"70")//
多段线标志
{
L
ineSymbol
=
(int)(ent
i
t
i
es[j
+
1]);
}
if
(ent
it
ies[j].Tr
im()
==
"10")//
第一个端点
X
{
Lwpolyl
inePo
i
nt
=
new
int[Lwpolyl
ineCount
觹
2];
lp
=
new
Point[LwpolylineCount];
int
jj
=
j
+
1;
for
(int
r=0;r<
2
觹
LwpolylineCount;
r=r+2)
//
取出端点
X,Y
{
LwpolylinePoint
[r]=
(int)(entities[jj]);//X
jj
=
jj
+
2;
LwpolylinePoint[r+1]
=
(int)(entities[jj]);//Y
lp[cp]=newPoint(LwpolylinePoint[r]
熏
L
wpolylinePoint[r+1]);
首先在提取的实体数据中查找多段线标志的组码
-LW-
POLYLINE
,
然后根据多段线的组码逐项识别
,
包括图层
、
句柄
、
颜色
、
顶点数
,
标志和端点坐标
,
将关键数据进行保存
。
由于多段
线的顶点数是一个变量
,
即实现无法得知某一个多段线共有多少
个边组成
,
因此动态定义顶点数组LwpolylinePoint
,
用于存储多
段线的顶点集合
。
当读取完多段线的句柄
、
颜色
、
顶点数
、
标志及
顶点的各
X
、
Y坐标后,再次识别组码
0
,
为下一个事物的开始
,
即
表示当前事物读取完毕
。
读取多段线实体的流程如图
1
所示
。
2.2
提取各块段
块在
CAD
图形中相当于一个集装箱,它把若干个图形组织
在一起
,
形成一个图形块整体
,
方便进行操作
,
易于用户插入
、
修
改等
。
提取块段首先先将
DXF
文件中块段的对应数据读取岀
来
,
提取标识为
“
BLOCKS
”
和
“
ENDSEC
”
,
方法与提取实体段相
似
。
在
BLOCKS
段中始终存在
*Model_Space
、
*Paper_Space
和
*Paper_Space0
三个空定义
,
对我们构建地图没有影响
,
在
提取我们所需的块时
,
不必对其进行提取
。
在识别到组码
3
后
,
即块名
,
根据岀现的标识识别对应的实体
,
一个块中可能含有多
个实体
,
例如
LINE
、
ARC
等,判断岀相应的实体后
,
即可以调用
提取实体段中相同的方法来完成块中实体数据的提取
。
33
I
'
I
I
'
I
|
|
I
'
11
*
1
1
'
因雇!
|
旬駅
1
1
啟包|
|曲点览
11栋志
|丨
哄点坐
1
图
1
读取多段线实体的流程
3
AGV
地图中基本图形数据结构的设计
AGV
路径规划过程中需要操作的直接对象是路径中的节
点,并且依赖结点间的拓扑关系
,
为此我们需要将读取到的数据
进行处理
,
这里在创建地图时使用特定的颜色创建
AGV
行驶的
路径
,
方便进行特征提取
。
首先为实体段各对象创建类
,
包括线
段
(
Line
)
、
圆弧
(
Arc
)
、
圆
(
Circle
)
、
多段线
(
Lwpolyline
)。
然后将
提取到的各实体数据保存到相应的类中遥再创建两个类
,
一个类
是节点
(Vertex
),
另一个是节点间的拓扑关系
(
border
)。
Vertex
包含了节点的编号以及节点的二维坐标值
;
Border
包含了两节
点
(
以编号记录
)
的关系及关系的种类
,
在具有邻接关系的情况
下两节点之间的距离
。
下面分别介绍这两个类的定义过程
:
1
)
Vertex
:线段数据
,
圆弧数据等都是矢量数据
,
线段由两
个端点组成,
提取到的是端点的横坐标以及纵坐标值
,
圆弧是由
圆心坐标
、
起始角度
、
终止角度组成
。
需要对这些实体的端点进
行定义
,
首先取一条线段
,
将线段的两个端点存储到
V
ertex
类
中
,
并标号为
1
和
2
(
因为线段的两个端点不可能是同一个点)
,
然后遍历其余的所有线段,当对剩余线段中的端点进行存储时
,
首先遍历Vertex
集合中是否有坐标值相同的节点
,
若有
,
则说
明当前线段与之前记录过的线段存在交点,
不再记录
,
否则
,
继
续将端点保存到
V
ertex
中直到所有线段都被访问过;然后再对
圆弧进行同样的操作
,
但从
DXF
文件中读取的圆弧数据是没有
端点属性的,需要再做一步操作
,
经过分析
,
圆弧端点坐标与圆
心
,
起始角度和终止角度之间满足如下关系:
X
s
=C
x
+
R
*
cos
(
2
*
仔*
En(
dAn
360
gle
)
(
1
)
Y
s
=C
v
+R
*
sin
(
2
*^*
En(
3An
360
gle
)
(
2
)
X
w
=C
x
+R
*
cos
(
2
*
仔*
360-S
360
360
Angle
)
(
3
)
Y
w
=C
x
-R
*
cos
(
2
*
仔*
360-S
360
360
Angle
)
(
4
)
得到圆弧端点数据后
,
便可继续对
Vertex
进行添加
,
这里
要注意的是
,
对于圆弧和线段的交点
,
经过以上计算得到的端点
数据可能会与
Vertex
中已记录的端点数据有些许误差,所以在
圆弧的端点判断时在较小的误差范围内认为该点已经添加过
,
否则继续添加,其它步骤与线段操作相同
。
2
)
Border
:
节点间的关系体现在实体段中
,
例如线段体现了
两个端点的邻接关系,并且是直线连接,而圆弧的两个端点则体
现了两个节点是圆弧连接
。
通过我们定义的
Vertex
,将线段和圆
弧中的端点以编号形式存储,然后遍历线段和圆弧,将每一实体
34
基于
DXF
图的复杂
AGV
地图自动创建与显示
中的两个节点编号保存到
Border
中
。
邻接关系种类用
0
和
1
标
识
,
0
表示两节点为直线相连
,
1
表示两节点为圆弧连接
,
两节点
之间的距离对应两点之间的直线距离或两点之间的弧长
。
几何实体的数据,
经过数据处理创建出基于路径搜索算法的数
据结构,并准确地对电子地图进行展示
,提供用户可视化操作的
功能
。
本方法降低了
AGV
路径规划中电子地图创建的复杂度
,
并构建出地图不同实体的数据结构
,
实现了数据的自动创建
,
为
4
AGV地图显示及运动实体仿真
将实体段的完整的数据保存下来后
,
为了提供给用户可视
化的操作
,
需要将地图数据表达出来
,
本文采用C#
中的图形装
置接口
GDI
+
(
Graphics
Device
Interface
Plus)
,
完成对地图
AGV后续的路径规划提供了便利
。
参考文献
[
1
]
徐维
.CAD
图形文件数据获取及可视化
[
D
]
.
武汉
:
武汉工程大学
,
的绘制
。
GDI+
提供了各种丰富的图形图像处理功能
,
位于命名
空间
g
中,该命名空间提供了对
GDI+
基本图形
功能的访问
,
主要有
Graphics
类
、
Bitmap
类
、
从
Brush
类继承
的类、
Font
类
、
Image
类
、
Pen
类
、
Color
类等
。
使用这些类并结合我们已经从
DXF
文件中读取到的,
经过
2018
[
2
]
刘军
,
王浩骅
,
王卉
,
等
.
通用
CAD
图形数据向警用地理信息数据转
换的技术分析
[
J
]
.
中国人民公安大学学报
(
自然科学版
)
,
2013
,
19
(
I
)
:
60-63
处理的实体数据
,
可以准确
、
完整地将AGV
电子地图表达出来
。
5
实例分析
为了验证本文所提出方法的准确性
,
现以某工厂烟丝箱
[
3
]
J
Wang,L
c
Sharing
Based
on
XML
Technology:
Analysis
and
Web
Expression
of
DXF
Graphic
[
C
]
椅
2008
In
ternational
Conference
on
Computer
Science
and
Software
AGV
物流输送项目为例
,
使用
CAD
进行工厂
、
设备
、
AGV
小车
Engineering,
Hubei,
2008:1090-1093
[
4
]
Z
Sukimin,H
ric
entities
information
for
feature
平面图形建模
,其中线段与圆弧组成的网络为
AGV
所行驶的路
径
,
图中共有
3
个小车模型,左上方的矩形块为存储烟丝箱的货
架
,
最外层部分为仓库的墙体
,
右边部分为烟丝箱运输的目的
地
,
用于生产加工,创建完成后的
DXF图形如图
2
所示
。
extraction
of
solid
model
based
on
DXF
file
[
C
]
椅
2008
Inter
national
Symposium
on
Information
Technology,Kuala
Lumpur,
2008:1-5
[
5
]
W
Shang,J
Zhong,Q
is
of
DXF
file
with
an
appli
cation
to
3D
graphic
display
[
C
]
椅
2012
IEEE
International
Conference
on
Information
and
Automation,Shenyang,2012:
611-615
[
6
]
H
Shuai,Z
Yinghua,G
Yukun,et
on
3D
Tunnel
Model
ing
Based
on
DXF
[
C
]
椅
2016
International
Conference
on
ln-
telligent
Transportation,Big
Data
&
Smart
City
Changsha,
2016:542-545
[
7
]
W
Guitang,X
Feng,C
Yongbin,et
tic
path
generation
(ICITBS),
图
2
某工厂烟丝箱AGV
物流输送项目DXF
图形
in
2-D
detection
based
on
DXF
file
[
C
]椅
2017
13th
IEEE
In
ternational
Conference
on
Electronic
Measurement
&
Instru
根据已创建的
DXF图形文件
,
使用本程序对
DXF
中的实
体数据
、
块段数据等主要部分进行提取
、
处理
。
本程序完全
、
准确
地设计了该图的数据结构
,
包括节点与实体的信息
,
并将
DXF
ments
(ICEMI),
Yangzhou,
2017:411-416
[
8
]
蔡东健
.
基于
C#
的
DXF
格式图形转换研究与应用
[
C
]
〃
江苏省测
图形进行了展示,经程序计算该图共有
10475
个实体,
最终效
果图如图
3
所示
。
在图
3
中对路径节点编号进行了标注
。
绘地理信息学会
、
江苏省土地学会
,
第十一次江苏科技论坛智慧城
市与大数据应用分论坛论文集
,
2015
:
4
[
9
]
熊峰
,
王桂棠
,
陈建强
,
等
.
基于
DXF
的机器视觉检测路径智能规划
[
J
]
.
机电工程技术
,
2018
,
47
(
1
):
1-5
[
10
]
李少军
,
薛维刚
.
利用
dxf
格式实现
CAD
图形坐标转换方法探索
[
J
]
.
测绘与空间地理信息
,
2012
,
35
(
6
):
198-199
[
11
]
陈树敏
,
刘强
,
方少亮
,
等
.DXF
在排样切割中的应用
[
J
]
.
计算机应
用与软件
,
2012
,
29
(
5
):
143-146
,
187
:
12
]
侯增选
,
张邦磊
,
刘文慧
,
等
.
基于
DXF
的露天矿二维与三维数据处
图
3
最终效果图
理及应用
[
J
]
.
计算机应用与软件
,
2014
,
31
(
1
)
:
204-207
[
13
]
孟德舒
.DXF
格式文件转换的研究与实现
[
J
]
.
北京测绘
,
2014
(
3
)
:
76-79
[
收稿日期
:
2020.5.8
]
6
结束语
使用本文分析研究的方法
,
可以准确地提取出
DXF
文件中
O 机器视觉产业联盟正式发布工业数字相机和工业镜头术语标准 8 月 22日 , 机器视觉产业联盟 ( CMVU ) 以不同形式正式对外(国内)发布 《 工业数字相机 术语 》 和 《 工业镜头术语 》 标准 。 据专家 介绍,这两项 “ 标准 ” 的制定填补了国内行业的空白 。 近年来 , 随着社会经济的高速发展 , 智能制造在世界制造业的地位作用得到进一 步彰显 , 尤其在中国 , 科技发展日新月异 , 机器视觉行业伴随制造业的强势崛起 , 受到各行业的广泛关注 , 得到充分的工业应用 。 同时 也导致行业产品的生产和制造产生标准不统一甚至混乱等问题 。 2018年初 , 机器视觉产业联盟在广泛征求意见后 , 牵头组织联盟 18 家会员单位 , 开展了为期两年的 “ 标准 ” 联合编写工作,最终形成了初步的 “ 标准 ” 版本 。 《 工业数字相机术语 》 和 《 工业镜头术语 》 标 准的推出 , 将对中国机器视觉行业有着深远意义 。 随着中国智能制造 2025 计划的有力推进 , 大规模生产和柔性自动化制造对于机器 视觉的需求日益强烈 , 工业数字相机和工业镜头是工业自动化领域中的关键组成部分 , 该 “ 标准 ” 的发布有助于统一工业机器视觉技 术语言 , 促进国内工业机器视觉的发展 , 并为同步参与国际工业机器视觉标准编制打下坚实基础 。
发布评论