旋转式三维扫描器的设计与实现.pdf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 旋转 三维 扫描器 设计 实现
- 资源描述:
-
学w
制造业信忌化
MANUFACTURING INFORMATIZATION伉离/建/CAD/ CAM/CAE/CAPP
旋转式三维扫描器的设计与实现
徐海涛。,谭兆湛
(华南理工大学广州学院,广州510800)
摘要:利用 Kinect传感器,对旋转平合上一定空间内的物体表面进行描,输出物体表面的空间坐标数据;并通过
Meshlab建立相应的CAD数据。
关键词;三维扫描;空间坐标;CAD数据
中图分类号:TN949.64
文献标志码:A
文章编号:1002-233(2014)09-0100-02
Design and Implementation of Rotating 3D Scanner
XU Haitao, TAN Zhaozhan
( Guangzhou College, South China University of Technology, Guangzhou 510800, China)
Abstract: This paper describes scanning of the object surface in a certain space on a rotating platform with the Kinect
sensor, and how to output the coordinate data of the object surface, and the corresponding CAD data set up by Meshlab
Key words: 3D scanning; space coordinate; CAD data
0引言
x=x".cos(a)-x.sin(a)
三维扫描是集光、机、电和计算机技术于一体的技
术,主要用于对物体空间外形和结构及色彩进行扫描,以
:=xsin(a)+'cos(a)
获得物体表面的空间坐标。它能够将实物的立体信息转2系统设计
换为计算机能直接处理的数字信号,为实物数字化提供2.1旋转平台设计及程序设计
了相当方便快捷的手段。
旋转平台的设计是利用齿轮传动来实现,如图2。右
1扫描原理
边的小齿轮连接舵机,带动中间的大齿轮转动,传动比为
利用 Kinect进行扫描,会有一个可见面和一个隐藏
面。假设有一个点P在隐藏面,其空间坐标是P(x,y,x)
如图1
转角度
隐藏面
WP. i
可见面
图2
3V35V V
图1
RST Power DI
AREF
我们需要通过不同方向的拍照来重建整个物体,并
Rhino Dri
在同一个空间坐标系中获得全部点来确定这个物体。因
3 08
Servo J
D7
此,让平台旋转一定角度,使得P点对 Kinect可见。在
E Do
前一次的拍照中,点P确定于其坐标P(x,y,x)。当平台旋
D4
转后,P的坐标相应发生变化变成P(x2,y,z)。如果知道
平台相对于前一次拍照旋转的角度,可以通过基本的三
?
角关系容易由P(x',y',x')计算出原来坐标中P点的坐
标。如果平台绕Y轴的旋转角度为,可得到如下转换方
图3电路图
程
100机械工程师2014年第9期
学兔WwW. Kilel llt
制造业唁化
伉/建/CAD/CAM/CAE/ CAPP MAN0CuiN_ QRMATZATION
5:1。左边小齿轮是连接电位器的,用来输出角度信息,系 property float x
统采用 arduino单片机进行控制,电路如图3。
property float y
舵机的控制程序如下:
property float z
ar Ie
void updateservo ( int pin, int pulse)
property
(igital Write( pin, HIGI);
property uchar green
lelay Microseconds( pulse);
property uchar blue
digitalwrite( pin, IOW);
end header
执行 Processing程序后,得到物体每个点的坐标与颜色
角度控制程序如下:
特征数据:
void checkserial( )f
-0.00206718690.15145469-0.023910811551889
if ( Serial available)>1)(
2.91948225650.15145469-0.02406428615112096
char trigger= Serial read()
0.00148322290.15145469-0.024217756150126104
state=1:
得到物体的点云数据后,利用 Meshlab对点云进行
int new Angle Serial read()
网格化,重建物体的三维模型,并生成相应格式的三维模
targetangle =(int)map(new Angle, 0.255, start Pos, endpos);
型文件“*,ply”,如图4
从 Processing中读回当前角度信息,利用map()函数
把角度信息转换为舵机的目标角度。
2.2 Processing程序设计
在 Processing中,定义变量 shot Number,如下
float! shot Number=new float[ 3]
hot Number用要定义拍照的次数,这里我们让物体
每转120°拍照一次,因此定义为3,程序如下
public void setup()[
for(int i=0; i< shot Numberlength; i++)(
shotnumberlil=i *(2+PI)/ shot Number length;
if( serial)
moveable(0)
void moveable(float angle)(
图4
my Port. write('s');
my Port. write((int )map( angle, 0, 2*Pl, 0, 255))
结语
println("new angle="+ angle);
本文介绍了旋转式三维扫描器的设计,是利用
2.3输出点云数据,生成ply格式文件
A rduino:控制平台的旋转,利用 Kinect传感器对旋转平台
的物体表面进行扫描,并用 Processing输出物体的空
输出“'ply"作为开头,然后标注所输出的“ply”格式的类型间坐标数据,再通过 Meshlab重建曲面,输出一定格式的
(asci或二进制),再以“ comment"为开始为文件添加注
三维模型文件,如“*,ply'"或“+.stl"直接用以三维打印、或
释,如下
供其他CAD软件使用。
[参考文献
[1] MEIGARER. Arduino and Kinect Projects [M].ApressAp
format binary_little_endian 1.展开阅读全文
文档分享网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。



链接地址:https://www.wdfxw.net/doc57518725.htm