Page 1

手 疗 handmassage |陈逸云|数字媒体方向| 0 7 0 5 4 0 | |指导老师 吴洁/张屹南|Jan-May 2012|


MENU background & concept / backgroud / concept prototyping & model / how it works / how it was built / / / / /

materials & tools circuit buttons joint testing & adjusting

technology & coding / body capture / Kinect / analog value range / Arduino / programming / OpenFrameworks / OSC / Processing results & exhibition / space / exhibition


backgroud

命题:数字媒体的文化内容再现

&

concept

自选:关注

中 医 文化

在国人日常生活中自知或不自知的运用与影响


re se a rc h i n g

穴位学

推拿按摩

腧穴是人体脏腑经络之气输注于体表的部位,是针灸治疗疾病的刺激点与反应点。

《黄帝内经》里说:“经络不通;病生于不仁,治之以按摩”,说明按摩有疏通经

功能输注脏腑经络气血,沟通体表与体内脏腑的联系。

络的作用。

医学 -

针灸/耳针/艾灸

日常 -

按摩/足底按摩/刮痧/养生操


pre c e d ent

手部反射区

拍手疗法

潜在问题&发展可能

手部穴位病理反射区是神经的聚集点。只要

人的双手有心、肝、脾、肺、肾、大肠、小肠等78个

老人?疾病?——全年龄,防未病。

准确地、不断地按摩穴位病理反射点,就会

脏腑反射区,而拍手疗法就如同按摩,通过刺激手掌

使内脏不断受到良性刺激,而逐渐强化其功

的经络和反射区,疏通经络,刺激末梢神经,促进血

能。这就是按摩的简单原理。

液、淋巴循环及组织间的代谢过程,以协调各组织、 器官间的功能,使机能的新陈代谢水平有所提高。


co n c e pt d eve l o p m ent

袜子

手套

左手掌反射区

摄像头

显示器

附加产品

触摸交互 肺区

触摸手套 → 展览交互 光纤/LED + 布料 感应器 + arduino + 屏幕 + 摄像头 + 投影仪

心区 肝区 肾区 胃区


左手掌反射区 金

表里联系 整体合一 五行 —五脏—五色

肺区 肺

LUNG

HEART

心区 肝区 肾区 胃区

LIVER

KIDNEY

胃 S TO MACH


f i n a l co n c ept

这是一个关于中医哲学与身体的数码 交互装置。如果人是一个小型宇宙, 那么更微小的身体局部则是宇宙的缩 影。我选取了心肝胃肺肾的手部反射 区,将中医理论中的表与里的关系视 觉化。通过按压手套,内脏的抽象影 像将被相应投射在暗室中,参观者能 直观体验到身体内部的微妙变化。


prototyping

&

model

h ow it wo r ks

projec to r

s cre e n

o u t p u t eq u i p m ent

d is p l ay rea l - ti m e generative image

com pute r co m p u te d ata b ot h from A rd u in o a n d K i n ec t

buttons x 5 in t h e p o s it io n s o f 5 v icera

wires x 6 K in e c t ca pt u re body sha pe of u s er i n 3D spa c e

co n n ect b u tto n s to A rd u in o

Ardui no uno get an a l og va l u es from b u tto ns


h ow i t was b u i l t / m ater i a l s


导电线 / conductive thread

电烙铁 / electric soldering iron

线左:国产 混纺日本钟纺9R系列导电纤维和三条涤纶丝 ¥50

使用35w内热式电烙铁,适合焊接小零件。

线右:进口 Silver Plated Nylon 117/12 x 2ply $16.95

用于按钮脚与导线之间的连接。

导电线是一种创造性的将电子元器件缝制在衣服上的技术。这个线可以传输电流和信号。虽然不能作为 PCB上的导线,但其可以让人轻易制作可穿戴的电子服装,还可以被进行清洗。 金属丝含量低的款式价格便宜,但纵向导电性不受影响,可以用作基础缝纫。金属丝含量高的款式用在连 接节点,增加导电面积。

导电布 / conductive fabric 布左:30%金属纤维 ¥200/m 布右:100%锦纶银纤维 ¥640/m 将上下两块导电布用垫片隔开制成按钮,按压时导电布碰在一起便可通电。原型制作过程中,作者对垫片 形式及材料、导电布种类、粘合方式进行了探索。发现一垫片须高弹力才能将上下导电布绝缘;二垫片中 间需要洞眼作为按钮的触发点,然 而按钮面积过小,洞眼跟着缩小,

按钮原型 / button prototype

针线 / regular thread, needle

按压不便。经过实验,决定在此项

以导电布制成,优点时是轻薄,厚度小。但面积过小,按压不

制作过程中耗损针十几根,按钮垫片的缝制需要

目放弃导电布的使用,选择四脚贴

便,弃之不用。

力度容易折断,需用大号针。导电线穿过布层后 的连接常常接线段极短,需要小号针。缝合用线

片轻触开关作为按钮原件。

取普通棉线。 按钮内部/button

染布 / fabric

暗扣 / poppers

网格垫片 塑料垫片

将白布手工染色,以取得统

手套内部的电路采用可清洗的

4*4*1.5cm 贴片轻触开关

一的弹力和质感。图中样片

导电线,因此用暗扣作为手套

整个按钮触发器由三层塑料垫片和

使用纺织纤维颜料,实验五

与延长线的链接,能够方便拆

一个轻触式四角开关组成。

色红绿黄杏蓝的调色配比。

卸。

塑料垫片以硬度稍大、亦能够手工

暗扣之间距离狭小,时常互相

缝制为佳。

碰撞。对比市场上的暗扣后, 选择表面上漆的款式,可以起 到绝缘作用。

钩 针 镊 子 剪 刀 / c r o c h e t- h o o k , p i l e r, s c i s s o r s 精细作业较多,要耐心操作。


h ow i t was b u i l t / buttons


塑料垫片可扩大按钮触发面积,以稍硬为 四脚轻触开关用以稳固位置。其中

1

13短路,24短路。故连接电路时可

到塑料垫片。导线绕成小圈,以便

2

选取12脚,将34空置。

1

3

2

4

定轻触开关。取网格垫片,牢固贴在上垫 片表面,以防止垫片误压触发开关。若垫 片厚度硬度足够,可略去网格层。

取金属含量丰富的导电线,在导线

用普通棉线缝合垫片四周。将12脚 分别与导线焊接。避免电烙铁接触

佳。下垫片扎小孔,将四脚穿过垫片,固

小圈上打结,确保连接牢固。这个

3

步骤之后将针留在导电线上,不要

4

剪断。

令下一步电路连接更牢固。

在缝合绝缘层的过程中,将导电线从布中

5

制作外部绝缘层。将手工染色后的 弹性绝缘布料剪成雪花圆形。

6

穿出,并在布上固定若干针脚形成受力 面,防止外力将按钮内部电路破坏。缝好 后基本按钮原件便成形啦。


h ow i t was b u i l t / c i rc ui t

电路 图 电 阻 : 2 2 0 o h m re s i s to r 电 容 : 1 u F c a pa c i to r L E D : 5 m m L E D


Details

制作手套内部电路需要的布料有三层: 外部按钮层、中间电线分布层、内衬绝缘层。不比有绝缘橡胶保护的导线,直接裸露 的导电线十分容易相互触碰造成短路。大量的电路连接工作要求细致耐心的操作,在 有限的面积内保证每一条电路的独立。

1

2

3

4

5 6

1. 按钮反面固定,正负两级导电线穿过布料。 2. 地线埋在布料边缘夹缝中,避免短路。 3. 电线分布层节点,加固加强电路连接。 4~6. 连接中间层与外部层时,分别在三层布料的三重绝缘。


h ow i t was b u i l t / j oi nt

手套装置分为两部分:手套主题、连接延长 线。之间采用公母成对的暗扣作为节点,方便 保存与潜在的电路维修。 暗扣表面有绝缘漆,避免碰撞产生短路。延长 线上的公扣与导线相连,导线固定在柔软泡沫 条上。根据展览空间大小与装置内容,将延长 线长度社定为2米,使观众能够自由在1米内 活动双手。

右:中间电路层与外部纽扣层,将上下导电线节点缝合紧密,六个按钮 间相互绝缘。 左:原型过程中的失败模型。用软塑料板做中间层,竖向缝上六排导电 线,一端与导线相连,一段与表层黑布的暗扣相连。完成后测试结果并 不理想,因为宽度狭窄,导电线没有绝缘保护,时常相碰发生短路。


h ow it wa s bui l t / testi ng & a dj ust ing

手套装置制作过程中,每个步骤都使用发光二极管测 试电路的通畅。但是制作完成后仍然有短路发生。整 个原型开发共制作三个手套,不断摸索寻找最优的电 路分布、材料形式组成方案。


FI N A L M O D E L


technology

&

coding

手 套 / gloves

用 户 / user

b u t ton 1 心 /H E A RT b u t ton 2 肝 /L I V ER b u t ton 3 胃 /S TO MACH

人体捕捉 Kine c t

b u t ton 4 肺 /LUN G

数据接口 O pe nN I

b u t ton 5 肾 /K IDN EY

实时计算 OpenFrameworks 实时数据传输 O S C

微 控 制 器 A rd uino

生成图像 Pro c e ssing 画面输出 pro j e cto r


a n a l o g va l u e ra n ge / Ardui no

为测试按钮的有效性编写了 这个Processing程序。五 个圆圈代表Arduino上的模 拟端口,圆圈直径为模拟数 值的大小,小圈表明按钮被 触发。


Series1 hand Series2 liver Series3 stomach Series4 lung Series5 kidney

上图为按钮静置时,通

exploration 1. openframworld 2. of+osc+processing 3. processing

过上述Processing程 序获取的模拟输入数 值。经测量按钮为被触 发时,输入数值大于 600。

程序截屏 四张图

Series1 hand Series2 liver Series3 stomach Series4 lung Series5 kidney

下图中,按钮分别被 触发十次,进一步排 除波动干扰产生的误 差,将触发范围缩小 至0~450,即按钮的 模拟输入数值小于450 时,判定按钮为触发状 态。


b o d y capt u re / k i nec t

2

3

Kinect是微软公司于2010年11月推出的一款体感捕捉设备。 这款感应器共有三个镜头,由左到右为:红外线发射器、RGB 摄像头、红外接收摄像头。

它可以实时追踪站在镜头前方的人

体动作、追踪人体v骨骼、感知空间深度。

6

2

3

6

shoulder left shoulder right

IR emitter

Depth camera

Color camera

Projects a pattern of infrared

Analyzes IR patterns to build

Like a webcam, this captures a

light into a room. As the light

a 3-D map of the room and all

video image. The Kinect uses

hits a surface, the pattern be-

objects and people within it.

that information to get details

comes distorted, and the dis-

about

objects

tortion is read by the depth

the room.

and

people

in

camera. 红外线发射器

红外接收摄像头

RGB摄像头

红外线发射器发出一道“激光”覆盖

红外摄像头识别图像的是一个“深度

Kinect项目的摄像头是一个RGB摄像

整个Kinect的可视范围,摄像头组接

场”,其中每一像素的颜色代表了那

头,这意味着它可以为XBox

收反射光线来识别用户。

一点物体到摄像头的距离。比如离摄

供红、绿、蓝三个通道的颜色。它的

像头近的身体呈亮红色、绿色等,而

作用在于面部识别和动作追踪。

离摄像头远的物体则呈暗灰色。

360提

torso center of gravity

hip right hip left


b o d y ca pt u re / ki nec t

organ position

visualization

利用捕捉骨骼关节中的躯干三点来确定五脏的位置。

利用感知空间深度来确定人体的轮廓,并用编程软件对其进行实时抽象视觉化。

X心=X3

X肝=1/4X1+3/4X3

X胃=X3

Y心=1/2(Y2+Y3)

Y肝=1/4Y1+3/4Y3

Y胃=Y3

X肺=1/2(X1+X3); 1/2(X2+X3)

X肾=1/2(X1+X3); 1/2(X2+X3)

Y肺=1/2(Y1+Y3); 1/2(Y2+Y3)

Y肾=Y3; Y3

1

2 心

肺 肺

肝 肾

胃 3

胃 肾


p ro g ra m mi n g l a ng ua ge / O penFra m eworks + OS C + Processing

所谓工欲善其事必先利其器,想要利用Kinect进行开发,最少不了的就是中间件和驱动程序。驱动程序是让电脑识别硬件设备的必备程序。中间件 (Middleware)是位于平台(硬件和操作系统)和应用之间的通用服务,通过中间件,应用程序可以直接调用硬件获得的参数。只有构建好驱动程 序和中间件服务,才能顺利在电脑上开发Kinect应用。 目前,在Kinect平台上成熟的中间件应用主要有OpenNI、Microsoft Kineck SDK、OpenKinect三种。 结合这次的毕设的具体情况: 1、展示所用电脑的操作系统是windows vista,不能安装Kinect SDK。 2、展览所用电脑较旧,需要选用消耗系统资源较少、效率相对较高的中间件系统。 3、程序所需的骨骼捕捉点仅仅限于上半身。无需手部识别和声音识别。 我们选择了OpenNI作为我们开发Kinect项目的中间件程序。

OpenNI与Kinect SDK功能对比表 OpenNI

Microsoft Kinect SDK

操作系统平台

Windows、Linux、Mac、Android

只支持windows7

编程语言环境

C语言为基础语言,同时支持C++、.net、Java

C++、C#、Visual Basic

支持的交互编程语言

OpenFrameworks / Processing

O p e n F r a m e w o r k s / P r o c e s s i n g / To u c h D e s i g n e r

支持硬件

Kinect for xbox

Kinect for xbox / Kinect for windows

传感器支持

红外传感器、声音传感器、深度传感器、影像传感器

红外传感器、声音传感器、深度传感器、影像传感器

追踪人数限制

无人数限制

最多同时追踪4个使用者、2套骨骼

捕捉骨骼关节数量

24个中的15个

24个默认关节中的20个

手部追踪

只支持windows版Kinect

手部检测

默认支持4种手势检测

姿势检测

默认设定6种可检测的姿势

声音处理

只支持原始声音捕捉

可消除回音、去除杂音、对声音来源方向进行判断

语音处理

可配合Microsoft Speech进行语音识别

马达控制

不支持

可控制Kinect马达方向


p ro g ra m mi n g / 3 i nterati ons

Main.cpp

handUniverse.cpp

handUniverse.h

getButtonInfo.cpp

getButtonInfo.h

getKincectInfo.cpp

getKincectInfo.h

partitcle.cpp

ofArduino lib

getKinectInfo()

ofxOpenNI lib

particle()

Void setuop()

import ”getButtonInfo.h”

getButtonInfo()

Void calTargetPoint()

import ”getKinectInfo.h”

void loop()

Void calculateJoints()

void draw()

Void draw()

import ”particle.h”

void randomFakeTouch()

Void showRedTestDots()

void update()

Void update()

Void keyPressed()

v1.0  五脏+粒子


Processing Main

Class Main

Void setuop()

Class Particle

void pathUpdate()

Void draw()

Arduino lib

analogRead()

color serParticalColor

Void colorUpdate()

minim lib

setTerminal

P5OSC

OpenFreameworks OpenNI lib

ofxUserGenerator.cpp

void viscusUpdate() v1.1  五脏+粒子 轻便

Processing Main

Class Particle

Class Main

Void setuop()

void pathUpdate()

Void draw()

Arduino lib

analogRead()

color serParticalColor

P5OSC

OpenFreameworks OpenNI lib

ofxUserGenerator.cpp

void viscusUpdate()

simpleOpenNI lib

simpleOpenNI lib

userMap

getNumberOfUser

backgroudSpark v1.2  五脏+粒子+轮廓

minim lib

Void colorUpdate()


result & exhibition


/ special thanks to / Chester Guo / / thanks to / Yuting Zhang / Emmanuel Flores /


Hand Therapy  
Advertisement