Luan Van

You might also like

Download as docx
Download as docx
You are on page 1of 76

Ê 


   

 Ê 





 Ê  

 

!" #$    Ê 

% &'  
 ( )* +

# % &' , ! -. /&0 



1


GVHD: TS. NguyӉn Tưӡng Long

TS. Chung Tҩn Lâm

SVTH: NguyӉn Bá Hoàng Long

MSSV: 40401396

Tp HCM, 6/2009
i
LӠI CҦM ƠN

Trưӟc tiên, tôi xin cҧm ơn thҫy NguyӉn Tưӡng Long, giáo viên trӵc tiӃp hưӟng dүn. Xin đưӧc
cҧm ơn thҫy Chung Tҩn Lâm, giáo viên đӗng hưӟng dүn. Các thҫy đã cho tôi nhӳng đӏnh hưӟng,
tҥo mӑi điӅu kiӋn vӅ vұt chҩt lүn tinh thҫn, đã giúp tôi hoàn thành trӑn vҽn và đúng thӡi hҥn đӅ
tài cӫa mình.

Xin cҧm ơn thҫy Tӯ DiӋp Công Thành, giáo viên chӫ nhiӋm cӫa lӟp VP04CĐT. Thҫy là ngưӡi
trӵc tiӃp giúp đӥ, cung cҩp thông tin và nhҳc nhӣ kӏp thӡi cho lӟp chúng tôi vӟi mӑi hoҥt đӝng
liên quan đӃn viӋc hӑc tұp và làm luұn văn trong suӕt ba năm thҫy chӫ nhiӋm lӟp.

Xin đưӧc chân thành cҧm ơn các thҫy cô trong hӝi đӗng chҩm luұn văn tӕt nghiӋp. Cám ơn các
thҫy, các cô đã bӟt thӡi gian quý báu đӇ xem xét đӅ tài cӫa tôi.

Xin đưӧc gӱi lӡi tri ân các thҫy, các cô đã dìu dҳt tôi trong suӕt các năm hӑc vӯa qua.

Cuӕi cùng, tôi dành lӡi cҧm ơn sâu sҳc cho ba, mҽ và nhӳng ngưӡi thân. Mӑi ngưӡi là chӛ dӵa
tinh thҫn, là nguӗn đӝng viên đӇ tôi vưӧt qua nhӳng khó khăn, thӱ thách trong hӑc tұp và cuӝc
sӕng.

Mӝt lҫn nӳa, xin chân thành cҧm ơn tҩt cҧ mӑi ngưӡi!

Tp Hӗ Chí Minh, 06/2009

NguyӉn Bá Hoàng Long

ii
2 3 !" #$ 

ӬNG DӨNG GIAO TIӂP ROBOT YK400X

VÀ ӬNG DӨNG PHÂN LOҤI SҦN PHҬM BҴNG CAMERA

Ӭng dөng Camera cho viӋc đӏnh vӏ và nhұn dҥng là mӝt đӅ tài đưӧc đһt ra tӯ cuӕi thӃ kӹ
20. Trҧi qua mӝt giai đoҥn phát triӇn, đӃn thӡi điӇm này kӻ thuұt nhұn dҥng và đӏnh vӏ bҵng
Camera đã tương đӕi hoàn chӍnh. Vӟi sӵ phát triӇn cӫa công nghӋ cҧm biӃn Camera, đӝ chính
xác đӏnh vӏ ngày càng cao. Đӗng thӡi, sӵ ra đӡi cӫa các thư viӋn xӱ lý ҧnh giúp ngưӡi lұp trình
nhanh chóng viӃt ӭng dөng mà không cҫn phҧi mҩt thӡi gian tìm hiӇu quá sâu vӅ lý thuyӃt xӱ lý
ҧnh. Trên tinh thҫn đó, tôi chӑn thư viӋn xӱ lý ҧnh Stockcar cӫa Lecky Integaration. Thư viӋn
này chӭa các hàm cҫn thiӃt cho viӋc xӱ lý ҧnh và đӏnh vӏ vұt trong không gian 2D.

NhiӋm vө chính cӫa luұn văn là xây dӵng mӝt phҫn mӅm (viӃt bҵng Visual C#). Phҫn mӅm này
gӗm 2 chӭc năng chính:

БGiao tiӃp vӟi bӝ điӅu khiӇn RCX142 và ӭng dөng điӅu khiӇn Robot YK400x bҵng máy
tính.
БPhân tích ҧnh chөp tӯ Camera sau đó đӏnh vӏ và nhұn dҥng vұt.

Sau khi hoàn thành hai nhiӋm vө chính trên, tôi viӃt mӝt ӭng dөng nhӓ đӇ đӏnh vӏ và phân loҥi
sҧn phҭm theo màu, Robot sӁ thao tác gҳp vұt và thҧ đúng vào giӓ chӭa sҧn phҭm theo màu
tương ӭng.

iii
'!'
Ê4567 « ......................................................................................................................... 89:;

Trang bìa ...................................................................................................................... i

NhiӋm vө luұn văn

Lӡi cam kӃt

Lӡi cҧm ơn ................................................................................................................... ii

Tóm tҳt luұn văn ........................................................................................................... iii

Mөc lөc ........................................................................................................................ iv

Danh sách hình ҧnh....................................................................................................... vii

Danh sách bҧng biӇu ..................................................................................................... ix

<=>:;?@ A 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB?
1.1 Đһt vҩn đӅ‘ ‘‘
1.1.1 Trong lĩnh vӵc thám hiӇm‘ ‘‘
1.1.2 Trong công nghiӋp‘ ‘‘
1.1.3 Trong đӡi sӕng hҵng ngày‘ ‘‘
1.2 Cơ sӣ lӵa chӑn đӅ tài‘ ‘‘
1.2.1 Phҫn cӭng‘ ‘‘
1.2.2 Lý thuyӃt ‘‘
1.2.3 Phҫn mӅm‘ ‘‘

<=>:;C@ -

)D* +# ÊEF +?*CBBBBBBBBBBBBBBBBBBBBBBBBBBG
2.1 Giӟi thiӋu Robot SCARA‘ ‘‘
2.1.1 Khái quát Robot SCARA‘ ‘‘
2.1.2 Bài toán đӝng hӑc ngưӧc vӏ trí‘ ‘‘
2.2 Robot YK400X‘ ‘‘
2.2.1 Các thông sӕ cӫa YK400x‘ ‘‘
2.2.2 Bӝ điӅu khiӇn RCX142‘ ‘‘

iv

<=>:;H@  +!I. #J
1
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCC
3.1 HӋ thӕng xӱ lý ҧnh‘ ‘‘
3.2 HӋ thӕng cҧm biӃn cӫa Camera‘ ‘‘
3.2.1 Cҧm biӃn CCD (Charge-Coupled Device)‘ ‘‘
3.2.2 Cҧm biӃn CMOS (Complementary Metal-Oxide-Semiconductor)‘ ‘‘
3.3 Logitech Quickcam Pro 4000‘ ‘‘
3.4 Cơ bҧn vӅ kӻ thuұt xӱ lý ҧnh‘ ‘‘
3.4.1 Khái niӋm ҧnh đen trҳng, ҧnh màu‘ ‘‘
3.4.2 ChuyӇn ҧnh màu thành ҧnh xám‘ ‘‘
3.4.3 Phân ngưӥng‘ ‘‘
3.4.4 Phân tích BLOBS (Binary Large Objects)‘ ‘‘

<=>:;*@ J K EBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBCL
4.1 Giao tiӃp máy tính vӟi bӝ điӅu khiӇn RCX142 ‘ ‘
4.1.1 Cài đһt các thông sӕ giao tiӃp‘ ‘ ‘
4.1.2 ChӃ đӝ điӅu khiӇn bҵng tay‘ ‘
‘
4.1.3 ChӃ đӝ lұp trình‘ ‘‘
4.2 Giao tiӃp máy tính vӟi Camera‘ ‘‘
4.3 Bҧng điӅu khiӇn chính‘ ‘‘
4.3.1 Calibration‘ ‘‘
4.3.2 Phҫn xӱ lý ҧnh‘ ‘‘

<=>:;M@% &' BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBHN
Ÿ.1 Các thành phҫn cӫa hӋ thӕng‘ ‘‘
Ÿ.2 Hoҥt đӝng cӫa hӋ thӕng‘ ‘‘
Ÿ.3 Các yӃu tӕ ҧnh hưӣng đӃn sai sӕ hӋ thӕng ‘‘
Ÿ.4 Đánh giá sai sӕ quá trình đӏnh vӏ bҵng Camera‘ ‘‘


v
<=>:;O@( !" BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*N
6.1 KӃt quҧ đҥt đưӧc‘ ‘‘
6.2 Hưӟng ӭng dөng và mӣ rӝng đӅ tài ‘‘
6.3 Lӡi kӃt‘ ‘‘

! 
.BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB*L

'!'BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBM 
A. GIӞI THIӊU THƯ VIӊN XӰ LÝ ҦNH STOCKCAR‘ ‘
‘
I. Giӟi thiӋu Stockcar‘ ‘
‘
II. Cơ bҧn vӅ lұp trình Stockcar ‘‘
B. ĐIӄU KHIӆN YK400X VӞI BӜ ĐIӄU KHIӆN RCX142‘ ‘‘
I. Các tұp tin dӳ liӋu‘ ‘‘
II. Các lӋnh di chuyӇn cơ bҧn‘ ‘‘
III. Các lӋnh vӅ lұp trình‘ ‘‘


vi
&
'P 

Y ‘ ‘‘ ‘
  ‘‘‘‘‘‘

Y ‘
‘‘‘ ‘ ‘ ‘ ‘‘‘

Y ‘!"‘# ‘ ‘$‘%‘ ‘& ‘'"‘( ) ‘‘‘*‘‘+‘

Y  ‘ ‘* ‘,‘  ‘‘+‘

Y 
‘ ‘* ‘- ‘‘.‘

Y  ‘ ‘/0.11'‘‘2‘

Y  ‘"‘3 4‘5‘.111‘‘2‘

Y ‘67 ‘ ‘ ‘8‘9‘!: :‘‘;‘

Y <‘6,‘8‘‘=‘9‘!: :‘ ‘‘> ‘4 ‘‘?‘

Y ‘!‘,‘8‘‘%‘@ ‘"‘( ‘@‘A" B6" "‘‘?‘

Y  <‘CD ‘ ‘8‘ %‘‘‘‘EE‘

Y 
<‘67 ‘> ‘F ‘/0.11'‘‘E‘

Y  <‘67 ‘> ‘ ‘/0.11'‘‘E‘

Y  <‘0# ‘ ‘* ‘,‘/0.11'‘‘E.‘

Y  ‘G‘H ‘4 ‘ !I‘E.‘‘E2‘

Y <‘J *‘5‘G‘‘EK‘

Y <‘G@‘ ‘L ‘F ‘E?‘

Y <‘G@‘ ‘L ‘H‘‘EM‘

Y ‘N O ‘@‘‘P ‘ ‘P‘> ‘!!A‘‘‘

Y <‘ ‘*8‘G "‘+‘

Y ‘!P‘> ‘+!!A‘‘+‘

Y  ‘N O ‘@‘‘P ‘ ‘P‘> ‘!J


‘.‘

Y 
‘!  ‘Q‘P ‘ ‘ ‘P ‘'‘‘K‘
vii
Y  ‘5) ‘ R ‘‘P ‘'‘‘;‘

Y  ‘S ‘) ‘ R ‘‘ T‘ ‘7‘G*‘‘;‘

Y  <‘U‘, ‘D ‘9‘& ‘7 ‘H ‘4 ‘M‘

Y  ! ‘V‘‘# ‘=‘‘>‘‘M‘

Y  !F‘ W ‘J:NX:‘‘+1‘

Y   6‘Y  ‘ ‘Z‘*, ‘‘‘+E‘

Y  
!>‘‘5
U :J‘‘+‘

Y   6‘Y  ‘ ‘Z‘*, ‘‘& ‘7 ‘‘+‘

Y   U‘, ‘!"‘‘++‘

Y   GP ‘H ‘4 ‘D ‘‘+.‘

Y  U‘, ‘!* ‘+2‘

Y  6,‘8‘‘V‘ ‘‘+2‘

Y  U‘, ‘'[‘*\‘P ‘‘+K‘

Y  ‘U‘, ‘*]‘8 ‘,‘=‘^‘*,‘ ‘‘+;‘

Y 
‘GP ‘H ‘4 ‘‘F ‘_ ‘‘+?‘

Y 
‘ ‘`‘& ‘7 ‘H ‘4 ‘ ‘‘+M‘

Y 
‘ ‘`‘H ‘4 ‘'[‘*\‘P ‘ ‘7‘8‘‘T‘‘.E‘

Y 
 ‘ ‘‘a‘ ‘‘‘=‘‘.+‘

Y 

‘0>‘( P‘8‘‘9‘* ‘‘‘.+‘

Y 
 ‘5) ‘=‘‘=‘"‘( ‘@‘C" "‘‘.2‘

Y 
 ‘5) ‘=‘‘=‘"‘‘& ‘I‘ ‘/‘‘.K‘

Y 
 ‘5) ‘=‘‘=‘b ‘%‘‘.K

viii
&
'. 

á <‘!‘‘=‘‘ ‘‘‘M‘

á <GP ‘‘# ‘=‘‘ ‘‘/0.11'‘‘E+‘

á &‘`‘) ‘ABXG‘M‘‘E;‘

á 
‘6 ‘T‘ ‘9‘‘=‘‘..‘

á 
‘6 ‘) ‘ ‘9‘‘=‘‘..‘

á 
‘!‘^‘*,‘c‘F ‘ ‘‘‘.2‘

á <‘0 ‘O ‘8‘‘ ‘'[‘*\‘P ‘‘2E‘

á ‘!‘d ‘ ‘Z‘*, ‘‘P ‘‘2‘

á <‘0 ‘e ‘
Y‘‘2‘

á  <‘6e ‘=‘ ‘8‘‘2‘

á 
<‘!‘ ‘f‘` ‘‘2+‘

á  <‘0 ‘e ‘  ‘8‘‘‘2+‘

á  ‘!‘g‘*$‘# ‘_ ‘‘2.‘

ix
Chương 1: Tәng quan

<=>:;?@  A 


?B?‘ÊQRST:U4

Trong nhӳng năm gҫn đây, sӵ phát triӇn mҥnh cӫa các bӝ vi xӱ lý cao cҩp đã tҥo mӝt bưӟc
tiӃn vô cùng to lӟn cho Robot. Giҩc mơ chӃ tҥo đưӧc mӝt Robot giӕng ngưӡi, có thӇ làm thay các
công viӋc cho con ngưӡi đã thành hiӋn thӵc. Các loҥi Robot này đang ngày càng đưӧc hoàn thiӋn,
phөc vө con ngưӡi trong nhiӅu lĩnh vӵc khác nhau. Tӯ thӃ hӋ các Robot đơn giҧn chӍ hoҥt đӝng
mӝt cách thө đӝng theo các chương trình cài đһt sҹn, đӃn thӡi điӇm này, các Robot đã có thӇ hoҥt
đӝng mӝt cách phӭc tҥp hơn, có khҧ năng tӵ xӱ lý và phân tích các tình huӕng như con ngưӡi.
Cùng vӟi sӵ phát triӇn cӫa các loҥi cҧm biӃn vӟi đӝ chính xác cao, các bӝ vi xӱ lý có thӇ thӵc
hiӋn hàng tӍ phép tính trong mӝt giây, Robot đang dҫn dҫn thay thӃ con ngưӡi trong mӝt sӕ lĩnh
vӵc đһc thù, cho hiӋu quҧ và năng suҩt cao hơn.

Ta có thӇ coi các bӝ vi xӱ lý này là bӝ não cӫa Robot, bӝ não này càng ngày càng đưӧc tӕi
ưu hóa vӅ kích thưӟc cũng như tӕc đӝ đӇ điӅu khiӇn Robot mӝt cách hiӋu quҧ nhҩt. Vai trò cӫa
cҧm biӃn đӕi vӟi Robot đưӧc xem như là các cơ quan thӏ giác, xúc giác, vӏ giác...cӫa con ngưӡi.
Ví dө vӟi camera, ta xem camera như là con mҳt trӧ giúp cho Robot xác đӏnh vӏ trí, nhұn dҥng
vұt. Ngày nay, Camera là mӝt cҧm biӃn không thӇ thiӃu đӕi vӟi các thӃ hӋ Robot hiӋn đҥi. Các
Robot này sӱ dөng Camera đӇ đӏnh vӏ, nhұn dҥng và thu thұp dӳ liӋu. Ӭng dөng Camera cho
Robot đưӧc dùng trong nhiӅu lĩnh vӵc khác nhau:

?B?B?‘ 8:;VW:<SX7R<Y5<Z[5

Robot giúp con ngưӡi thám hiӇm ӣ nhӳng nơi không trӵc tiӃp làm đưӧc hoһc nhӳng nơi
nguy hiӇm như: sao hӓa, miӋng núi lӱa, lò phҧn ӭng hҥt nhân« Năm 2007, ngưӡi Mӻ đã đưa lên
sao Hӓa 2 xe tӵ hành mang tên Spirit va Opportunity. Các xe này không có tay lái, trung tâm điӅu
khiӇn thuӝc Phòng thí nghiӋm chuyӇn đӝng phҧn lӵc cӫa NASA ӣ thành phӕ Pasadena. Các
Robot dҥng này dùng Camera đӇ thu thұp dӳ liӋu hình ҧnh, lҩy mүu và phân tích các thông tin vӅ
khí hұu, đҩt đai và đӏa chҩt cӫa nơi thám hiӇm, sau đó gӱi các dӳ liӋu này vӅ trung tâm.

m
Chương 1: Tәng quan

\:<?B?@ Robot Spirit và Opportunity thám hiӇm sao hӓa

Gҫn đây nhҩt, mӝt thiӃt bӏ điӅu khiӇn tӯ xa ± ROV Latis đã đưӧc mӝt nhóm các nhà nghiên
cӭu tӯ cӝng hòa Ireland chӃ tҥo nhҵm giúp xác đӏnh ranh giӟi dưӟi đáy biӇn cӫa các quӕc gia.
Thông tin do thiӃt bӏ thu thұp đưӧc sӁ đưӧc dùng đӇ giҧi quyӃt mӝt lҫn và vĩnh viӉn các tranh
chҩp vӅ đưӡng lөc đӏa. Máy sӱ dөng hӋ thӕng camera chҩt lưӧng cao và có đӝ nhҥy màu trong
điӅu kiӋn ánh sáng rҩt yӃu. Các hình ҧnh thu thұp đưӧc trên máy tính sӁ giúp xác đӏnh vӏ trí, đӏa
điӇm, chiӅu di chuyӇn và cӵ ly cӫa thiӃt bӏ đӕi vӟi đáy biӇn và tàu mҽ cùng lúc.

\:<?BC@ ROV Lastic hoҥt đӝng dưӟi đáy biӇn

?B?BC‘ 8:;7]:;:;<Z^_

Trong công nghiӋp quӕc phòng, viӋc sơn màu ngөy trang cho các loҥi xe có ý nghĩa đһc
biӋt quan trӑng. Màu sơn cho xe quân sӵ cҫn thay đәi thích hӧp cho tӯng chiӃn trưӡng khác nhau.
Vì vұy mà quân đӝi Mӻ đang nghiên cӭu, phát triӇn kӻ thuұt sơn tӵ đӝng, chӍ cҫn chӑn màu sơn
Robot sӁ tӵ đӝng sơn cho các loҥi xe khác nhau. Camera sӱ dөng dӳ liӋu ҧnh đӇ nhұn biӃt, xác

×
Chương 1: Tәng quan

đӏnh các thông tin vӏ trí cӫa các loҥi xe khác nhau, các phө kiӋn kèm trên xe«rӗi chuyӇn sang
không gian 3D. Sau khi đã hiӋu chӍnh vӅ hӋ tӑa đӝ Robot, chiӃc xe đưӧc sơn vӟi mô hình vӯa
đưӧc cung cҩp, phө thuӝc vào các yӃu tӕ: kích thưӟc, hình dáng, đӡi xe, các phө kiӋn gҳn thêm
trên xe«

\:<?BH@ Camera thông minh hӛ trӧ Robot sơn xe quân đӝi các loҥi

?B?BH‘ 8:;U`Zab:;<c:;:;de

Đây là lĩnh vӵc đang rҩt phát triӇn tҥi Nhұt. Robot giúp làm viӋc nhà, làm vưӡn, dҥy hӑc và
đӗng thӡi cũng là phương tiӋn giҧi trí cho con ngưӡi. Các Robot này đӅu đưӧc trang bӏ Camera
(nhiӅu hơn 2) đӇ phân biӋt các vұt thӇ khác nhau:

\:<?B*@ Robot làm viӋc nhà

Đây là dӵ án mang tên Robot giúp viӋc AR cӫa đҥi hӑc Tokyo. Robot này có thӇ quan sát
và phân biӋt các vұt khác nhau bҵng mҳt 2 tròng, có thӇ đӏnh vӏ đưӧc vұt ngay cҧ khi chúng nҵm

„
Chương 1: Tәng quan

dưӟi ghӃ hoһc bàn. Các loҥi Robot truyӅn thӕng thưӡng gһp khó khăn trong viӋc xӱ lý nhӳng vұt
không ӣ dҥng rҳn, nhưng AR có thӇ nhұn ra quҫn áo bҵng nӃp nhăn cӫa chúng.

\:<?BM@ Robot làm vưӡn

Đây là mӝt dӵ án thuӝc ViӋn Công nghӋ Massachusetts ± Mӻ, phía trên Robot đưӧc gҳn
mӝt cánh tay và máy tính nhúng. Cánh tay này vӕn đưӧc trang bӏ mӝt Camera và tay kҽp. Trong
cuӝc thӱ nghiӋm, Robot có thӇ tưӟi cho mӝt cây cà chua, rӗi tiӃn đӃn mӝt cây cà chua khác và hái
quҧ bҵng tay kҽp sau khi đã nhұn diӋn qua webcam.

Như vұy, ta có thӇ thҩy viӋc xӱ lý ҧnh đӇ đӏnh vӏ cho Robot là mӝt viӋc không còn mӟi, vҩn
đӅ là ӭng dөng nó sao cho thұt thích hӧp, đҧm bҧo tính hiӋu quҧ và đӝ chính xác.

?BC‘>afVX97<g:U4RdZ

Vӟi sӵ yêu thích trong lĩnh vӵc Robot, tôi đã quyӃt đӏnh tìm hiӇu tӯ loҥi Robot công nghiӋp
đơn giҧn nhҩt là SCARA. ĐӇ tăng cưӡng thêm sӵ linh hoҥt và tӵ đӝng cho SCARA, tôi kӃt hӧp
nó vӟi mӝt Camera đӇ đӏnh vӏ vұt trong mһt phҷng. Tӯ đó, tôi có thӇ ӭng dөng vào các hӋ thӕng
phân loҥi sҧn phҭm theo kích thưӟc, theo màu sҳc«Vì vұy, tôi chӑn đӅ tài là: ³%:;h6:;;Z9
RZi_jR)* kSdl:;h6:;_<m:VnZao:_<p5hq:;95r89 ´

?BCB?‘<s:7l:;

VӅ phҫn cӭng cho viӋc thӵc hiӋn đӅ tài, tôi sӱ dөng Robot SCARA YK400x cӫa hãng
Yamaha (bӝ điӅu khiӇn RCX142) và Camera Logitech Quickcam Pro 4000 đӇ đӏnh vӏ và thao tác
vӟi vұt (có sҹn tҥi phòng thí nghiӋm C6, bӝ môn Cơ ĐiӋn Tӱ).

Ä
Chương 1: Tәng quan

\:<?BO@ Robot YK400x

\:<?BG@ Logitech Quickcam Pro 4000

?BCBC‘!tR<ueiR

NhiӋm vө chính cӫa Camera là chөp ҧnh đưa vӅ máy tính. Máy tính sӁ phân tích ҧnh đó đӇ
nhұn ra đâu là vұt, tӯ đó sӁ cho ta biӃt tӑa đӝ Pixel cӫa vұt trên frame ҧnh. Tuy nhiên, ta chưa thӇ
đӏnh vӏ đưӧc vұt do đây chӍ là tӑa đӝ pixel. Ta cҫn chuyӇn đәi tӑa đӝ điӇm ҧnh sang tӑa đӝ thӵc
ngoài không gian. Lý thuyӃt đӇ giҧi quyӃt vҩn đӅ này là Camera Calibration.

Ÿ
Chương 1: Tәng quan

Sau khi đã có tӑa đӝ thӵc cӫa vұt ngoài không gian, ta đưa tӑa đӝ này vӅ tӑa đӝ gӕc cӫa
Robot. Lúc này nhiӋm vө cӫa Robot là thao tác vӟi vұt tҥi vӏ trí đưӧc cung cҩp. Vҩn đӅ điӅu
khiӇn này do bӝ điӅu khiӇn RCX142 giҧi quyӃt.

?BCBH‘<s:545

Xây dӵng mӝt phҫn mӅm thӵc hiӋn nhiӋm vө giao tiӃp giӳa máy tính, Robot và Camera,
đưӧc viӃt bҵng C# (Microsoft Visual Studio 2008). Vӟi phҫn mӅm này viӋc điӅu khiӇn Robot
YK400x trӣ nên dӉ dàng hơn, hơn nӳa, Robot đưӧc trang bӏ thêm mӝt Camera ra sӁ mӣ rӝng khҧ
năng làm viӋc cho Robot.

Tôi xác đӏnh rõ hai mөc tiêu cҫn đҥt đưӧc trong luұn văn này là:

БӬng dөng giao tiӃp Robot SCARA YK400x


БӬng dөng đӏnh vӏ và phân loҥi sҧn phҭm bҵng Camera


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

<=>:;C@  -



)D* +# ÊEF +?*C


CB?‘ ZvZR<Z^ujR-



CB?B?‘<YZwuYRjR-



RobotSCARA (Selectively Compliant Articulated Robot Arm) ra đӡi năm 1979, đây là
mӝt kiӇu tay máy có cҩu tҥo đһc biӋt, đưӧc sӱ dөng nhiӅu trong công viӋc lҳp ráp các tҧi trӑng
nhӓ.

\:<CB?@ Hình dáng đӝng hӑc cӫa SCARA

Như tên gӑi cӫa nó Robot dҥng này chӍ làm viӋc trong mһt phҷng. Robot có Ÿ khâu, bӕn
bұc tӵ do (4 biӃn khӟp). Sau đây ta sӁ gҳn hӋ tӑa đӝ gӕc và các biӃn khӟp cho SCARA. Tӯ đó,
tìm hiӇu đӝng hӑc cho Robot.

û
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

\:<CBC: HӋ tӑa đӝ gӕc cӫa SCARA và các biӃn khӟp

CB?BC‘dZRY:Ux:;<g7:;=y7SzR8{

Theo quy ưӟc Denavit-Hatenberg, các hӋ tӑa đӝ Decarters đưӧc gҳn vào khâu chҩp hành
như hình vӁ:

\:<CBH Các hӋ tӑa đӝ đưӧc gҳn theo quy tҳc Denavit-Hatenberg


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

NhiӋm vө cӫa bài toán là tӯ vӏ trí cӫa khâu cuӕi so vӟi hӋ tӑa đӝ gӕc Ox0y0z0, tìm giá trӏ
cӫa 4 biӃn khӟp ș1, ș2, d3, ș4.

Tham sӕ các khâu cho Robot SCARA:

o:;CB?: Các tham sӕ cho Robot Scara

Khâu ai di și Įi

1 a1 d1 ș1 0
2 a2 0 ș2 ʌ
3 0 d3 0 0
4 0 d4 ș4 0

Ma trұn Denavit-Hatenberg:
Quy ưӟc: ci = cosși và si = sinși

Ma trұn chuyӇn đәi giӳa hӋ trөc tӑa đӝ O0x0y0z0 và O1x1 y1z1:

    
    
ç  
 

(2.1)
  
Ma trұn chuyӇn đәi giӳa hӋ trөc tӑa đӝ O1x1y1z1 và O2x2 y2z2:

    
    
ç  
   
(2.2)
  

Ma trұn chuyӇn đәi giӳa hӋ trөc tӑa đӝ O2x2y2z2 và O3x3 y3z3:

  
  
ç  
 

(2.3)
  

Ma trұn chuyӇn đәi giӳa hӋ trөc tӑa đӝ O3x3y3z3 và O4x4 y4z4:

ý
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

   
   
ç    
 

(2.4)
  
Tӯ đó ta có ma trұn tuyӋt đӕi giӳa hӋ tӑa đӝc cuӕi O4x4y4z4 và hӋ tӑa đӝ gӕc O0x0y0z0:



  ç ç ç ç   

                 
                 

 



(2.Ÿ)
  
       
       
 
 



(2.6)
  

Vӟi       

Như vұy đӇ dӡi hӋ trөc tӑa đӝ O4x4y4z4 vӅ hӋ trөc tӑa đӝ gӕc O0x0y0z0, ta dùng mӝt ma
trұn quay R và mӝt vector tӏnh tiӃn d:

  
    
 
(2.7)

    

        




(2.8)

Bây giӡ, giҧ thiӃt khâu cuӕi phҧi di chuyӇn đӃn vӏ trí có tӑa đӝ là px, py, pz và quay mӝt
góc Į. BiӃt đưӧc tӑa đӝ khâu cuӕi (End Effector) trong hӋ tӑa đӝ gӕc O0x0y0z0, ta tìm đưӧc
góc Į. Giҧi quyӃt bài toán đӝng hӑc ngưӧc vӏ trí là tìm ș1, ș2, d3, ș4.

Trưӟc hӃt, dӉ thҩy d3 = d1-pz-d4 (2.9)

Theo đӏnh lí hàm Cos:

 
  ! 
 
(2.10)

m
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

\:<CB*: Tính đӝng hӑc ngưӧc cho Scara

Vӟi Y  "#$  #%

Suy ra ș2

 &' (2.11)

Vӟi &  ()* và ./0 ' 


+,  !  
+-  !

Suy ra ș1

DӉ dàng suy ra: ș4 = Į - ș1 - ș2 (2.12)

Như vұy ta đã tìm đưӧc 4 thông sӕ ș1, ș2, d3, ș4.

Bài toán đӝng hӑc ngưӧc vӏ trí là đơn giҧn nhҩt, đӝng hӑc ngưӧc vұn tӕc và gia tӕc thì
phӭc tҥp hơn. Tuy nhiên, ta không cҫn xem xét kӻ vҩn đӅ này vì bӝ điӅu khiӇn RCX 142 đã
giҧi quyӃt chuyӋn đó.

CBC‘jR)* +

CBCB?‘Y7R<]:;ab7|9)* k

Robot SCARA YK400x là mүu Robot loҥi nhӓ dùng đӇ gҳp các vұt trong mһt phҷng có
tҧi trӑng không quá 3kg, chiӅu dài cánh tay (tҫm vươn tӟi) là 400mm.

mm
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

Sau đây là các hình chiӃu cӫa YK400x:

\:<CBM: Hình chiӃu đӭng YK400x

\:<CBO: Hình chiӃu cҥnh YK400x


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

o:;CBC:Bҧng các thông sӕ cho Robot Scara YK400x

Loҥi YK400x

ChiӅu dài cánh tay 22Ÿmm


Trөc X
Phҥm vi quay 11Ÿ0

ChiӅu dài cánh tay 17Ÿmm


Đһc điӇm cӫa các
Trөc Y
trөc
Phҥm vi quay 1400

Trөc Z Phҥm vi trưӧt 1Ÿ0mm

Trөc R Phҥm vi quay 1800

Trөc X 200W

Trөc Y 100W
Đӝng cơ
Trөc Z 100W

Trөc R 100W

Trөc X và Y 6m/s

Tӕc đӝ tӕi đa Trөc Z 1m/s

Trөc R 10200/s

Tҧi trӑng lӟn nhҩt 3kg

Chu kǤ tiêu chuҭn (vӟi 2kg tҧi) 0.66s

Bҵng phҫn mӅm


Cài đһt giӟi hҥn chuyӇn đӝng
Cài đһt cơ khí (trөc X, Y, Z)

Tiêu chuҭn: 3.Ÿm


Dây cáp
Lӵa chӑn: Ÿm, 10m

Bӝ điӅu khiӇn, Công suҩt cung cҩp RCX142, 1000W

Khӕi lưӧng 1Ÿkg


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

Vӟi các thông sӕ trên đây, Robot sӁ hoҥt đӝng mӝt phҥm vi giӟi hҥn như sau:

\:<CBG: Không gian làm viӋc YK400x

Khâu thӭ nhҩt quay tӯ -11Ÿ0 tӟi 11Ÿ0 ӭng vӟi giá trӏ cҧm biӃn xung J tӯ -261689J tӟi
+261689J.

Khâu thӭ hai quay tӯ -1400 tӟi 1400 ӭng vӟi giá trӏ cҧm biӃn xung J tӯ -318Ÿ78J tӟi
+318Ÿ78J.

Khâu thӭ ba tӏnh tiӃn tӯ -1mm tӟi 1Ÿ0mm ӭng vӟi giá trӏ cҧm biӃn xung J tӯ -1366J tӟi
+204800J.

Khâu thӭ tư quay tӯ -Ÿ70 tӟi 3020 ӭng vӟi giá trӏ cҧm biӃn xung J tӯ -409600J tӟi
+409600J.

Dung sai:

ߑKhâu thӭ nhҩt, thӭ hai, thӭ tư là 80J hay 0.040.


ߑKhâu thӭ ba là 80J hay 0.06mm.


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

CBCBC‘xUZ4u}<Z[:+?*C

\:<CBN@ Bӝ điӅu khiӇn RCX 142

S‘~9:u9V8;89598h

MPB là mӝt thiӃt bӏ cҫm tay dùng đӇ thӵc thi tҩt cҧ các chӭc năng cӫa Robot: chӭc năng
điӅu khiӇn bҵng tay, lұp trình, cài đһt các thông sӕ«


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

\:<CBL: Manual Program Board

MPB có thӇ giao tiӃp mӝt cách đҫy đӫ vӟi YK400x, nhưng đӇ tăng khҧ năng tӵ đӝng và
xӱ lý linh hoҥt cho Robot, ta quan tâm đӃn điӅu khiӇn Robot qua máy tính. Các thông sӕ giao
tiӃp giӳa RCX142 và máy tính đưӧc cài đһt bҵng MPB.

S‘ Z9RZi_;Z€95YeR{:<Sd+?*Cwu97:;-CHC

j‘<iUx;Z9RZi_:VZ:rSd‚‚VZ:r

Bӝ điӅu khiӇn có thӇ giao tiӃp vӟi thiӃt bӏ ngoҥi vi theo hai chӃ đӝ qua cәng RS232:
ONLINE/OFFLINE. Hai chӃ đӝ này có thӇ sӱ dөng riêng lҿ hoһc kӃt hӧp vӟi nhau trong
nhӳng ӭng dөng khác nhau.
ߑChӃ đӝ OFFLINE: Giao tiӃp giӳa Robot và thiӃt bӏ ngoҥi vi đưӧc thӵc thi bҵng lӋnh
SEND viӃt trong chương trình.
БLӋnh gӱi Offline tӯ Robot đӃn thiӃt bӏ ngoҥi vi:

SEND <Source File> TO CMU

БLӋnh gӱi Offline tӯ thiӃt bӏ ngoҥi vi đӃn Robot:

SEND CMU TO <Source File>

m
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

#{h6@

SEND P1 TO CMU ĺ gӱi tӑa đӝ điӇm P1 ra thiӃt bӏ ngoҥi vi (đơn vӏ mm hay xung
J).
SEND CMU TO P1 ĺ gӱi tӯ máy tính tӑa đӝ điӇm P1.
ߑChӃ đӝ ONLINE: Gӱi lӋnh trӵc tiӃp tӯ thiӃt bӏ ngoҥi vi đӃn Robot. Các lӋnh gӱi trӵc
tiӃp tӯ thiӃt bӏ ngoҥi vi gӑi là lӋnh online (đưӧc trình bày ӣ phҫn sau).
Đӏnh dҥng:

@[_]<Online Command>[<_command option>]<termination code>

Mã kӃt thúc (termination code) là CR (0Dh) hay CRLF (0Dh+0Ah).


#{h6: @ MOVE P,P0<0Dh> ĺ Robot di chuyӇn tӟi điӇm P0.
j‘ Z9RZi_;Z€9jRSd+?*C

ߑSơ đӗ chân cӫa D-SUB 9 chân:

o:;CBH@Sơ đӗ chân D-SUB 9

Thӭ tӵ chân Tên Chӭc năng Vào/Ra

1 NC Không dùng

2 RXD Nhұn dӳ liӋu Vào

3 TXD Gӱi dӳ liӋu Ra

4 NC Không dùng

Ÿ GND Nӕi đҩt

6 NC Không dùng

7 RTS Yêu cҫu gӱi Ra

8 CTS Cho phép gӱi Vào

9 NC Không dùng


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

ߑChuҭn RS232 và phương thӭc giao tiӃp Handshaking:

Chuҭn RS232 chӍ có thӇ kӃt nӕi nhiӅu nhҩt hai thiӃt bӏ, vӟi khoҧng cách dài nhҩt tӯ
12.7m đӃn 2Ÿ.4m, tӕc đӝ 20kbit/s.

Vӟi phương thӭc Handshaking, máy phát có thӇ xác đӏnh khi nào nó truyӅn dӳ liӋu và
máy nhұn cho biӃt khi nào nó sҹn sàng nhұn dӳ liӋu. Tín hiӋu có thӇ biӃn đәi qua RS232 theo
giao thӭc chuҭn hoһc giao thӭc quy ưӟc. Có 2 kiӇu bҳt tay, đó là bҳt tay phҫn cӭng và bҳt tay
phҫn mӅm:

БBҳt tay phҫn cӭng: Nơi nhұn đưa ra dòng mӭc cao khi sҹn sàng nhұn dӳ liӋu, nơi
truyӅn chӡ tín hiӋu này trưӟc khi truyӅn dӳ liӋu. Nơi nhұn có thӇ đưa ra dòng mӭc thҩp trong
mӑi thӡi điӇm, thұm chí cҧ trong quá trình chӡ dòng phҧn hӗi trưӟc khi kӃt thúc quá trình
truyӅn nhұn.
БBҳt tay phҫn mӅm: Nơi nhұn gӱi mӝt mã đӇ báo nó sҹn sàng nhұn dӳ liӋu hoһc mӝt
mã khác đӇ báo nơi truyӅn dӯng quá trình gӱi dӳ liӋu.
ߑCác cách đҩu dây:
БCách đҩu dây hӛ trӧ bҳt tay bҵng phҫn cӭng:

\:<CB? : Bҳt tay phҫn cӭng

m
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

БCách đҩu dây hӛ trӧ bҳt tay phҫn mӅm:

\:<CB??: Bҳt tay phҫn mӅm

Ӣ đây tôi chӑn phương thӭc bҳt tay bҵng phҫn cӭng.

S‘!ƒ_R8\:<7<)* kSvZjxUZ4u}<Z[:+?*C

ߑY7V^:<hZ7<ue[:7>jo:
ORIGIN: đưa Robot vӅ vӏ trí gӕc.
DRIVE: điӅu khiӇn Robot di chuyӇn mӝt trөc duy nhҩt theo hӋ tӑa đӝ tuyӋt đӕi.
DRIVEI:điӅu khiӇn Robot di chuyӇn mӝt trөc duy nhҩt theo hӋ tӑa đӝ tương đӕi.
MOVE P: di chuyӇn tuyӋt đӕi theo tҩt cҧ các trөc.
MOVE L: lӋnh nӝi suy tuyӃn tính điӇm tӟi điӇm.
MOVE C: lӋnh nӝi suy đưӡng tròn qua 3 điӇm.
MOVEI P: di chuyӇn tương đӕi theo tҩt cҧ các trөc.
PATH: đây là mӝt bӝ lӋnh gӗm: PATH SET«PATH END ± dùng thiӃt lұp quӻ đҥo
chuyӇn đӝng và PATH START ± cho phép Robot chҥy theo quӻ đҥo vӯa thiӃt lұp. LӋnh
PATH này sӱ dөng trong nhiӋm vө hàn rҩt hiӋu quҧ.
ߑY7V^:<R<9eUZR<]:;ab
SPEED: thay đәi thông sӕ vұn tӕc
SHIFT: thay đәi hӋ tӑa đӝ.


Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

ACCEL, DECEL: thay đәi hӋ sӕ tăng tӕc, giҧm tӕc cho các trөc.
OUTPOS: thay đәi vӏ trí không hiӋu lӵc cӫa các trөc.
ONLINE/OFFLINE: thay đәi chӃ đӝ giao tiӃp vӟi thiӃt bӏ ngoҥi vi.
TORQUE: thay đәi moment cho các trөc di chuyӇn.
ߑY7V^:<S4Vƒ_R8\:<
CALL: gӑi chương trình con.
GOSUB: nhҧy đӃn nhãn, gһp lӋnh RETURN thì nhҧy vӅ dòng lӋnh sau nhãn.
SUB: xác đӏnh chương trình con và EXIT SUB: thoát khӓi chương trình con.
SHARED: xác đӏnh các biӃn chung trong các chương trình con.
HALT: lӋnh này sӁ dӯng chương trình và reset chương trình.
HOLD: tҥm thӡi dӯng chương trình đang thi hành, khi chương trình đưӧc thi hành lҥi,
nó sӁ tiӃp tөc tҥi điӇm dӯng tҥi lӋnh HOLD.
GOTO: lӋnh này nhҧy không điӅu kiӋn đӃn dòng lӋnh đánh dҩu bҵng nhãn. Tương ӭng
dùng lӋnh LABEL đӇ tҥo nhãn.
FOR«NEXT: vòng lһp và EXIT FOR.
SELECT CASE và END SELECT: lӋnh này tương tӵ như lӋnh Switch trong C.
IF«ELSE: lӋnh điӅu kiӋn.
SWI: thi hành mӝt chương trình có trong bӝ nhӟ.
ߑY7V^:<S4UZ[5
JTOXY: đәi dӳ liӋu điӇm tӯ xung sang mm.
XYTOJ: đәi dӳ liӋu điӇm tӯ mm sang xung.
WHERE: cho biӃt tӑa đӝ hiӋn tҥi cӫa khâu cuӕi Robot ± đơn vӏ xung.
WHRXY: cho biӃt tӑa đӝ hiӋn tҥi cӫa khâu cuӕi Robot ± đơn vӏ mm.
ߑY7V^:<UZ4u}<Z[:
PRINT: xuҩt dӳ liӋu ra màn hình MPB.
INPUT: chӡ phím trong MPB đưӧc nhҩn.
SEND: phím nhұp cӫa MPB cӫa mӝt file xác đӏnh.
ߑY7V^:<UZ4u}<Z[:Sd89
DELAY: đӭng chӡ.

×
Chương 2: Robot Scara YK400_x và bӝ điӅu khiӇn RCX142

DO: Xuҩt giá trӏ ra cәng DO.


MO: Xuҩt giá trӏ ra cәng MO.
TO: Xuҩt giá trӏ ra cәng TO.
SET/RESET: xác đӏnh bit xuҩt ra tӯ mӝt chân trên các cәng DO, TO, MO (có thӡi gian).
WAIT: chӡ điӅu kiӋn vào hay ra (có thӡi gian).

Trên đây chӍ nêu lên các lӋnh điӅu khiӇn cơ bҧn cho Robot và ý nghĩa cӫa chúng. Chi
tiӃt vӅ các lӋnh này và ví dө cho tӯng lӋnh đưӧc trình bày ӣ phө lөc B, có thӇ tham khҧo thêm
trong hưӟng dүn lұp trình cӫa nhà sҧn xuҩt.

×m
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

<=>:;H@   +!I. #J


1


HB?‘^R<b:;k„Vto:<

Mӝt hӋ thӕng xӱ lý ҧnh bao gӗm: nguӗn sáng, hӋ thӕng cҧm biӃn (thưӡng là CCD
Camera hay CMOS Camera), mӝt giao diӋn giӳa hӋ thӕng cҧm biӃn và máy tính đӇ chuyӇn tín
hiӋu tương tӵ ra tín hiӋu sӕ mà máy tính có thӇ hiӇu đưӧc.

HBC‘^R<b:;7o5jZi:7|995r89

Có hai loҥi cҧm biӃn là CCD và CMOS, nhiӋm vө cӫa chúng là hҩp thө ánh sáng và
chuyӇn sang dҥng tín hiӋu sӕ.
HBCB?‘o5jZi:&~<98;ru_Vrh&rSZ7r

& bao gӗm mӝt mҥng lưӟi như bàn cӡ các điӇm bҳt sáng (pixel). Các điӇm này đưӧc
phӫ các lӟp lӑc màu (thưӡng là mӝt trong ba màu cơ bҧn: đӓ, xanh lá cây, xanh dương) đӇ mӛi
điӇm chӍ bҳt mӝt màu nhҩt đӏnh. Do mӛi điӇm ҧnh đưӧc phӫ các lӟp lӑc màu khác nhau và
đưӧc đһt xen kӁ nhau nên màu nguyên thӫy tҥi mӝt điӇm cӫa hình ҧnh thұt sӁ đưӧc tái hiӋn
bҵng màu tӯ mӝt điӇm ҧnh chính kӃt hӧp vӟi các màu bù đưӧc bә sung tӯ các điӇm xung
quanh bҵng phương pháp nӝi suy.

\:<HB?@ Nguyên tҳc tҥo ҧnh vӟi cҧm biӃn CCD

××
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

Ánh sáng qua ӕng kính sӁ đưӧc lưu lҥi tҥi bӅ mһt chip thông qua các điӇm ҧnh. Thông
tin vӅ sӕ lưӧng ánh sáng lưu tҥi mӛi điӇm (thӇ hiӋn bҵng đӝ khác nhau vӅ điӋn áp) sӁ đưӧc
chuyӇn lҫn lưӧt theo tӯng hàng ra bӝ phұn đӑc giá trӏ (Hình 3.1). Sau đó các giá trӏ này sӁ
đưӧc chuyӇn qua bӝ khuӃch đҥi tín hiӋu, rӗi đӃn bӝ chuyӇn đәi tín hiӋu tương tӵ sang tín hiӋu
sӕ, rӗi đӃn bӝ xӱ lý đӇ tái hiӋn hình ҧnh vӯa chөp đưӧc.

\:<HBC: Lưӟi lӑc Bayer

Các camera kӻ thuұt sӕ thưӡng sӱ dөng lưӟi Bayer trên CCD (Hình 3.2). Cӭ mӛi 4 điӇm
ҧnh kӅ nhau sӁ có mӝt bӝ lӑc đӓ, mӝt cho xanh lam và hai cho xanh lá cây (vì mҳt ngưӡi nhҥy
vӟi màu xanh lá cây hơn đӓ và xanh lam). Vӟi kӻ thuұt này, thông tin sӁ đưӧc lưu trên mӛi
điӇm ҧnh nhưng đӝ phân giҧi màu thu đưӧc thҩp hơn thông tin gӕc.

\:<HBH@ Cҧm biӃn 3CCD

Mӝt kӻ thuұt tách màu tӕt hơn, sӱ dөng 3 cҧm biӃn CCD và mӝt lăng kính (Hình 3.3),
chia thông tin ҧnh thành 3 phҫn: đӓ, xanh dương, xanh lá. Mӛi CCD đưӧc sҳp xӃp đӇ lҩy dӳ

ׄ
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

liӋu cho tӯng màu. Nhӳng máy ҧnh sӕ và máy quay sӕ chuyên nghiӋp sӱ dөng kӻ thuұt này.
Vӟi cҧm biӃn 3CCD, hҫu hӃt ánh sáng qua ӕng kính đưӧc lưu lҥi, trong khi lưӟi Bayer chӍ hҩp
thө khoҧng 2/3 lưӧng ánh sáng trên mӛi điӇm ҧnh.

HBCBC‘o5jZi:-~5_Vr5r:R98erR9VkZhr-r5Z7:hu7R8

- thì khác, cҥnh mӛi điӇm bҳt sáng trên chip đӅu có mӝt mҥch bә trӧ, do đó ta có
thӇ tích hӧp các quy trình xӱ lý ҧnh như bӝ chuyӇn đәi analog/digital, cân bҵng trҳng«vào
mҥch bә trӧ này, giúp cho quá trình xӱ lý bӭc ҧnh đưӧc thӵc hiӋn rҩt nhanh nhӡ đưӧc thӵc
hiӋn ngay tҥi tӯng điӇm ҧnh đơn lҿ.

\:<HB*@ Nguyên tҳc tҥo ҧnh vӟi cҧm biӃn CMOS

Nhưng lӧi thӃ này lҥi trӣ thành nhưӧc điӇm. Do mӛi mӝt điӇm bҳt ҧnh trên CMOS lҥi có
mӝt mҥch riêng nên khó có thӇ đҧm bҧo tính đӗng nhҩt cӫa mӛi mҥch khi khuyӃch đҥi. ĐiӅu
này làm cho bӭc ҧnh xuҩt ra luôn có mӝt đӝ nhiӉu nhҩt đӏnh (không mӏn). NӃu như ӣ CCD,
mӛi mӝt điӇm ҧnh là mӝt mһt bҳt sáng khiӃn cho đӝ nhҥy sáng cӫa CCD cao hơn, dҧi màu thӇ
hiӋn đưӧc nhiӅu hơn, đӝ phân giҧi cao hơn, thì mӛi mӝt điӇm ҧnh cӫa CMOS (bao gӗm hҥt bҳt
sáng và mҥch khuyӃch đҥi) khi bҳt sáng sӁ có nhӳng phҫn ánh sáng rơi vào vӏ trí cӫa mҥch vì

×Ä
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

thӃ sӁ không đưӧc tái hiӋn. ĐiӅu này làm cho ҧnh bӏ mҩt thông tin tҥi nhӳng vùng này dүn đӃn
đӝ phân giҧi cӫa CMOS không cao.

HBH‘!;ZRr7<uZ7}7958* 

Quickcam 4000 đưӧc chӃ tҥo bӣi Logitech vӟi đӝ phân giҧi 640x480, cҧm biӃn VGA
CCD 1.3 M Pixels.
ĐӇ đưa Camera vào ӭng dөng xӱ lý ҧnh ta phҧi cài w7ah}Brkr do nhà sҧn xuҩt cung cҩp.
Sau đó, đưa thư viӋn _8R9VBhVV vào trong ӭng dөng (viӃt bҵng C# chҷng hҥn).

HB*‘>jo:S4}…R<uƒRk„Vto:<

Xӱ lý ҧnh bao gӗm chuyӇn đәi ҧnh này thành ҧnh khác đӇ giҧm nhiӉu, tăng các đһc tính
cҫn thiӃt, làm tҩm ҧnh tương thích vӟi các quá trình phân tích, xӱ lý tiӃp theo.

HB*B?‘<YZ:Z^5o:<Ur:R8†:;‡o:<5du

S‘Ҧnh đen trҳng


Ҧnh đen trҳng chӍ bao gӗm 2 màu: đen và trҳng. Ngưӡi ta phân biӋt sӵ biӃn đәi đó thành
L mӭc:
БNӃu L = 2 nghĩa là chӍ có 2 mӭc, mӭc 1 ӭng vӟi màu sáng, mӭc 0 ӭng vӟi màu tӕi. Ta
gӑi đây là ҧnh nhӏ phân.
БLӃu L > 2, ví dө L = 62, L = 128, L = 2Ÿ6« Ta gӑi đây là ҧnh đa cҩp xám (thưӡng gӑi
tҳt là ҧnh xám).

Thông thưӡng mӛi pixel mang thông tin cӫa 2Ÿ6 mӭc xám. Trong hҫu hӃt quá trình xӱ
lý ҧnh, chúng ta chӫ yӃu chӍ quan tâm đӃn cҩu trúc cӫa ҧnh và bӓ qua ҧnh hưӣng cӫa yӃu tӕ
màu sҳc. Do đó, bưӟc chuyӇn tӯ ҧnh màu sang ҧnh xám là mӝt công đoҥn phә biӃn trong các
quá trình xӱ lý ҧnh, vì nó làm tăng tӕc đӝ xӱ lý, giҧm mӭc đӝ phӭc tҥp cӫa các thuұt toán trên
ҧnh.

Ҧnh nhӏ phân khá đơn giҧn, các phҫn tӱ có thӇ coi như các phҫn tӱ logic nên ҧnh nhӏ
phân đưӧc ӭng dөng trong các thuұt toán phân biӋt đӕi tưӧng ҧnh vӟi nӅn hay phân biӋt điӇm
biên vӟi điӇm khác (Bài toán xӱ lý ҧnh ± phát hiӋn đӕi tưӧng trong chương 4, ҧnh luôn phҧi
chuyӇn vӅ dҥng nhӏ phân hay còn đưӧc gӑi là phân ngưӥng)

ן
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

S‘Ҧnh màu
Ҧnh màu là ҧnh tә hӧp tӯ 3 màu cơ bҧn: Đӓ, Xanh lөc, Xanh lam. Mӛi màu cũng đưӧc
phân thành L cҩp khác nhau. Do vұy đӇ lưu trӳ ҧnh màu, ngưӡi ta có thӇ lưu trӳ tӯng mһt màu
riêng biӋt, mӛi màu lưu trӳ như mӝt ҧnh đa cҩp xám.

HB*BC‘<ue[:o:<5duR<d:<o:<kY5

Ta có công thӭc chuyӇn 3 thông sӕ màu cӫa mӝt pixel thành mӭc xám như sau:

G = ĮCR + ȕCG + ȖCB

Trong đó, CR, CG và CB là các thông sӕ màu đӓ, xanh lá, xanh lam; Į, ȕ, và Ȗ là các giá
trӏ thay đәi tùy thuӝc hӋ màu.

\:<HBM@ ChuyӇn tӯ ҧnh màu sang ҧnh xám

HB*BH‘<m::;=ˆ:;

Phân ngưӥng hay còn đưӧc gӑi là nhӏ phân hóa là mӝt kӻ thuұt đӇ tách nӅn và đӕi tưӧng
trong xӱ lý ҧnh. Quá trình phân ngưӥng sӁ chuyӇn ҧnh thành ҧnh nhӏ phân vӟi 2 giá trӏ điӇm
ҧnh là 0 và 1.

Б ;=ˆ:;R8‰:Sd:;=ˆ:;h=vZ@Trong quá trình phân ngưӥng, giҧ sӱ đӕi tưӧng sáng


hơn nӅn, điӇm ҧnh đưӧc xem là thuӝc đӕi tưӧng nӃu giá trӏ cӫa nó lӟn hơn giá trӏ ngưӥng, và
ngưӧc lҥi. Đây là khái niӋm ngưӥng trên, tương tӵ cho ngưӥng dưӟi.
Б ;=ˆ:;R8:;Sd:;=ˆ:;:;dZ@Mӝt điӇm ҧnh đưӧc xem là thuӝc đӕi tưӧng nӃu giá
trӏ cӫa nó ӥ giӳa hai ngưӥng, đây là ngưӥng trong, ngưӧc lҥi, đó là ngưӥng ngoài.

×
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

\:<HBO@ Phân ngưӥng cho ҧnh xám

KӃt thúc quá trình phân ngưӥng, các điӇm ҧnh thuӝc đӕi tưӧng sӁ đưӧc gán giá trӏ là 1
trong khi các điӇm ҧnh thuӝc nӅn đưӧc gán giá trӏ 0. Cuӕi cùng mӝt bӭc ҧnh nhӏ phân đưӧc tҥo
ra bҵng cách tô màu trҳng hoһc đen cho tӯng điӇm ҧnh, phө thuӝc vào giá trӏ nhӏ phân cӫa nó.

HB*B*‘<m:R{7<!-~Z:98e!98;rjŠr7Ra

Quá trình phân tích mӝt Blob ± như tên gӑi cӫa nó phҧi đưӧc thӵc hiӋn trên mӝt ҧnh nhӏ
phân (kӃt quҧ cӫa quá trình phân ngưӥng ӣ trên). Vӟi ҧnh nhӏ phân vӯa đưӧc tҥo thành, vùng
Blobs sӁ là vùng trҳng nәi bұt trên nӅn đen hoһc ngưӧc lҥi. Giҧ sӱ ta có mӝt ҧnh đã đưӧc phân
ngưӥng như sau, vùng cҫn tìm là vùng trҳng.

\:<HBG@ Ҧnh phân ngưӥng cho thuұt toán tìm Blob

×û
Chương 3: HӋ thӕng xӱ lý ҧnh vӟi Camera

Thuұt toán cho viӋc phát hiӋn Blobs này như sau:

БTrưӟc hӃt quét dòng đҫu tiên và tìm ra các nhóm có 1 hay nhiӅu hơn các điӇm ҧnh
trҳng. Ta gӑi các nhóm điӇm ҧnh trҳng này là các lineblobs. Ghi nhұn các lineblobs này bҵng
mӝt sӕ nhұn dҥng (ID)
БSau đó quét dòng kӃ tiӃp, trong quá trình tìm các lineblobs trên dòng này, ta đӕi chiӃu
vӟi các lineblobs ӣ dòng liӅn trưӟc nó. NӃu các blobs này trùng nhau ӣ ít nhҩt mӝt pixel, ta
hӧp 2 lineblobs này thành mӝt blobs và ghi nhұn cùng mӝt sӕ nhұn dҥng.
БLһp lҥi quá trình này cho tӯng dòng ta sӁ tìm đưӧc blobs cӫa ҧnh.

Trên đây là ba kӻ thuұt xӱ lý ҧnh phә biӃn, tôi đã dùng các kӻ thuұt này cho bài toán
đӏnh vӏ bҵng Camera và phân loҥi sҧn phҭm theo màu. Chi tiӃt vӅ lӋnh thӵc hiӋn các thao tác
xӱ lý ҧnh này trong thư viӋn Stockcar đưӧc trình bày ӣ phө lөc A.

×
Chương 4: Giӟi thiӋu phҫn mӅm

<=>:;*@ J K E

Chương trình điӅu khiӇn đưӧc viӃt trên C# đӇ thӵc hiӋn, phӕi hӧp 4 chӭc năng: giao tiӃp
máy tính vӟi bӝ điӅu khiӇn RCX142 qua cәng RS232, giao tiӃp máy tính vӟi Camera, chөp
ҧnh và xӱ lý ҧnh, chӭc năng Calibration. Ngoài ra còn mӝt sӕ ӭng dөng phө khác. Giao diӋn
chính như sau:

\:<*B?: Giao diӋn chính cӫa chương trình điӅu khiӇn

*B?‘ Z9RZi_5YeR{:<SvZjxUZ4u}<Z[:+?*C

*B?B?‘dZUQR7Y7R<]:;ab;Z9RZi_

Trưӟc hӃt , đӇ giao tiӃp vӟi bӝ điӅu khiӇn ta cҫn cài đһt các thông sӕ giao tiӃp cӫa máy
tính cho tương thích vӟi các thông sӕ cӫa bӝ điӅu khiӇn đưӧc cài đһt bҵng MPB (chi tiӃt hơn
đưӧc đӅ cұp ӣ chương 2).

\:<*BC@Cài đһt các thông sӕ giao tiӃp

×ý
Chương 4: Giӟi thiӋu phҫn mӅm

Vӟi cách đҩu dây hӛ trӧ giao tiӃp phҫn cӭng thì ta phҧi chӑn kӻ thuұt bҳt chéo tay
(handshaking) là RTS/CTS cho cҧ Robot và máy tính, các thông sӕ còn lҥi tùy chӑn, chӍ cҫn
tương thích giӳa máy tính và bӝ điӅu khiӇn.

Sau khi kӃt nӕi giӳa máy tính và bӝ điӅu khiӇn thành công, ta có thӇ điӅu khiӇn Robot
thông qua máy tính mӝt cách dӉ dàng và nhanh chóng, không cҫn phҧi thông qua MPB. Trong
suӕt quá trình giao tiӃp giӳa máy tính và Robot, các thông tin trҥng thái luôn đưӧc hiӇn thӏ ӣ
hӝp :75Z:;: trҥng thái kӃt nӕi, vӏ trí Robot, chương trình hiӋn hành«

*B?BC‘<iUxUZ4u}<Z[:jc:;R9e

ChӃ đӝ 

! chӭa các chӭc năng điӅu khiӇn Robot bҵng tay, đӗng thӡi tác đӝng
đӃn dӳ liӋu tӑa đӝ cӫa Robot (đưӧc mô phӓng theo MPB cӫa bӝ điӅu khiӇn), bao gӗm:

\:<*BH@Chӭc năng MANUAL

БLӵa chӑn đơn vӏ cho các trөc là xung hay mm.


БTrҧ các trөc cӫa Robot vӅ vӏ trí gӕc (Absolute Reset)
БBұt, tҳt các đӝng cơ Servo cӫa Robot, khӣi đӝng lҥi cӡ báo Emergency Flag sau khi có
sӵ cӕ xҧy ra.
БCài đһt vұn tӕc cho Robot, mһc đӏnh là 20% vұn tӕc cӵc đҥi.
БXoay các trөc cӫa Robot theo chiӅu qua trái hoһc qua phҧi

„
Chương 4: Giӟi thiӋu phҫn mӅm

БXóa dӳ liӋu điӇm và chú giҧi điӇm (có thӇ là mӝt hoһc nhiӅu điӇm liӅn nhau).
БNhұp điӇm cho Robot, chӭc năng này rҩt thưӡng đưӧc sӱ dөng. Sau khi xác đӏnh đưӧc
vӏ trí hiӋn tҥi cӫa khâu cuӕi bҵng lӋnh WHERE, ta dùng lӋnh TEACH đӇ nhұp giá trӏ này vào
cũng như tên và chú giҧi cho điӇm này. Ta cũng có thӇ dùng lӋnh READOUT đӇ truy xuҩt
toàn bӝ dӳ liӋu điӇm và chú giҧi điӇm có trong bӝ nhӟ cӫa bӝ điӅu khiӇn. Hӝp Incoming sӁ
hiӇn thӏ các dӳ liӋu này:

\:<*B*@Hӝp Incoming vӟi dӳ liӋu điӇm


БQuy đӏnh tӑa đӝ gӕc cho Robot, điӅu này rҩt quan trӑng, vì nó là cơ sӣ đӇ chương trình
tính đúng vӏ trí hiӋn tҥi cӫa vұt (khi xӱ lý ҧnh). Tuy vұy, quá trình đһt tӑa đӝ gӕc cho Robot
chӍ phҧi thӵc hiӋn mӝt lҫn (nӃu nhӳng lҫn tính toán vӅ sau không có gì thay đәi vӅ hӋ thӕng)
vì chương trình đã tӵ đӝng lưu lҥi giá trӏ tӑa đӝ gӕc này cho nhӳng lҫn sӱ dөng tiӃp theo. NӃu
không tìm thҩy tұp tin lưu giá trӏ gӕc này chương trình sӁ xuҩt hiӋn thông báo đӇ ngưӡi sӱ
dөng cài đһt lҥi tӑa đӝ gӕc.

*B?BH‘<iUxVƒ_R8\:<

ChӃ đӝ  
 thӵc ra là tәng hӧp 2 chӃ đӝ Program và Auto cӫa MPB. Mөc đích
cӫa viӋc làm này là đӇ sau khi lұp trình ta có thӇ cho chҥy chương trình đӇ kiӇm tra tính đúng
sai luôn.

„m
Chương 4: Giӟi thiӋu phҫn mӅm

\:<*BM@ChӃ đӝ PROGRAM

Chӭc năng lұp trình bao gӗm các chӭc năng con sau:

БӢ bҧng chӑn File, ta có thӇ liӋt kê các chương trình hiӋn hành trong bӝ nhӟ cũng như
mӣ, xóa, sao chép và đәi tên các chương trình vӟi thao tác kích chuӝt đơn giҧn.

\:<*BO@Hӝp Incoming vӟi dӳ liӋu các chương trình

БӢ bҧng chӑn Compile, ta có thӇ lұp trình cho Robot trong cӱa sә soҥn thҧo. ĐiӅu này
làm viӋc lұp trình cho Robot trӣ nên đơn giҧn, nhanh chóng hơn nhiӅu. Sӱ dөng bàn phím máy
tính sӁ nhanh hơn nhiӅu sӱ dөng các phím trên MPB (các phím trên MPB là các phím đa chӭc
năng), đӗng thӡi quá trình sӳa lӛi cho tӯng dòng sӁ nhanh hơn. ĐӇ khai thác thêm bӝ nhӟ cӫa
máy tính, ngưӡi sӱ dөng có thӇ lưu chương trình vào bӝ nhӟ máy tính dưӟi dҥng văn bҧn. Khi
cҫn sӱ dөng lҥi các chương trình cũ hay viӃt mӝt chương trình mӟi trên nӅn chương trình cũ
có thӇ lҩy ra và truyӅn xuӕng ngay cho Robot.

„×
Chương 4: Giӟi thiӋu phҫn mӅm

БӢ bҧng Send có hai tùy chӑn là gӱi Online hoһc Offline đӇ truyӅn dӳ liӋu tӯ máy tính
xuӕng Robot. Chӑn gӱi Online nӃu muӕn gӱi tӯng lӋnh, Robot sӁ thi hành ngay lӋnh đó. Chӑn
gӱi Offline nӃu muӕn gӱi nguyên gói dӳ liӋu xuӕng cho Robot, chҷng hҥn mӝt tұp các điӇm,
chương trình«
Sau khi đã gӱi chương trình xuӕng bӝ điӅu khiӇn ta có thӇ cho chương trình chҥy ngay
vӟi lӋnh RUN, cũng có thӇ chҥy tӯng dòng lӋnh hay bӓ qua dòng lӋnh«Chương trình hӛ trӧ
đһt tӕi đa là 4 Break Points trong mӝt chương trình.
Trong quá trình vұn hành Robot, ta có thӇ dӯng Robot bҩt kǤ lúc nào khi có sӵ cӕ xҧy ra
(quá tҧi hay gһp chưӟng ngҥi vұt) bҵng cách nhҩn nút STOP bên góc phҧi giao diӋn (màu đӓ).
Nút nhҩn này có chӭc năng tương tư nút Emergency Stop trên MPB.

*BC‘ Z9RZi_5YeR{:<SvZ95r89

Mөc đích cӫa viӋc đưa Camera vào ӭng dөng là chөp hình vӅ máy tính cho các quá trình
xӱ lý ҧnh. Tuy nhiên trong phҫn mӅm có cӱa sә Camera, khi cҫn ngưӡi sӱ dөng có thӇ dùng
đӇ giám sát hӋ thӕng, chөp hình hoһc ghi hình.

\:<*BG@Giao diӋn Camera

„„
Chương 4: Giӟi thiӋu phҫn mӅm

*BH‘o:;UZ4u}<Z[:7<{:<

Bҧng điӅu khiӇn chính là sӵ phӕi hӧp giӳa máy tính, camera và Robot đӇ thӵc hiӋn các
ӭng dөng khác nhau. Ӭng dөng chính lҧ sӱ dөng Camera đӇ phân loҥi sҧn phҭm theo màu.

\:<*BN@Bҧng điӅu khiӇn chính

ĐӇ có thӇ thӵc hiӋn đưӧc các ӭng dөng đó thì trưӟc hӃt ngưӡi sӱ dөng phҧi tiӃn hành
Calibration cho bӭc ҧnh.

*BHB?‘9VZj89RZ:

Nhҩn vào nút Calibration, chương trình sӁ liên kӃt tӟi mӝt giao diӋn khác:

„Ä
Chương 4: Giӟi thiӋu phҫn mӅm

\:<*BL@Giao diӋn Calibration

Calibration cho ҧnh là quá trình chuyӇn đәi tӯ hӋ tӑa đӝ điӇm ҧnh ra hӋ tӑa đӝ thӵc. Đӕi
vӟi ӭng dөng phân loҥi màu này, sҧn phҭm nҵm trên mӝt mһt phҷng song song vӟi mһt phҷng
làm viӋc XY cӫa hӋ tӑa đӝ Robot. Ta gҳn hӋ tӑa đӝ cho mһt phҷng này như hình vӁ dưӟi đây.

\:<*B? @HӋ tӑa đӝ mһt bàn

„Ÿ
Chương 4: Giӟi thiӋu phҫn mӅm

Vӟi cách gҳn hӋ tӑa đӝ này thì dӳ liӋu tӑa đӝ nhұp vào mөc Real Point Input sӁ như trên
hình 4.9. Bӕn tӑa đӝ này tương ӭng vӟi tӑa đӝ 4 điӇm A, B, C, D trong hӋ tӑa đӝ mһt bàn.
TiӃp theo, ngưӡi sӱ dөng dùng chuӝt lҫn lưӧt trӓ vào 4 điӇm này theo thӭ tӵ A, B, C, D.
Chương trình sӁ tӵ đӝng lҩy tӑa đӝ điӇm ҧnh cӫa 4 điӇm này. Nhҩn nút Calibration đӇ kӃt thúc
quá trình hiӋu chӍnh. Trӣ lҥi chương trình chính, bây giӡ, tҩt cҧ các quá trình tính toán sӁ tӵ
đӝng chuyӇn tӑa đӝ điӇm ҧnh ra hӋ tӑa đӝ thӵc. Đӗng thӡi, chương trình sӁ lưu lҥi hӋ tӑa đӝ
hiӋu chӍnh trong bӝ nhӟ máy tính. Các lҫn sӱ dөng sau, ngưӡi sӱ dөng có thӇ sӱ dөng lҥi hӋ
tӑa đӝ hiӋu chӍnh cũ này (nhҩn nút Use the last).

*BHBC‘<s:k„Vto:<

\:<*B??@Giao diӋn xӱ lý ҧnh

Mөc tiêu cӫa quá trình xӱ lý ҧnh là làm nәi vұt trên nӅn. Có hai tình huӕng xҧy ra:

БTình huӕng thӭ nhҩt: Không cҫn phân biӋt màu, chӍ cҫn nhұn ra vұt. Vұy ta chӍ cҫn
nhҩn nút Get Gray Image đӇ lҩy ҧnh mүu vào, khi đó, các lӋnh tách biên, phân ngưӥng sӁ
đưӧc thӵc hiӋn trên ҧnh xám chuyӇn theo công thӭc chuҭn cӫa thư viӋn Stockcar
(R/3+2G/3+B/3) ± phҫn này đã đưӧc đӇ cұp ӣ 3.4.1. Sau đó, ta có thӇ lӵa chӑn các chӭc năng
phân ngưӥng khác nhau, các kӻ thuұt tách biên khác nhau đӇ làm nәi vұt trên nӅn.
БTình huӕng thӭ hai: Cҫn phân biӋt màu. Ta không thӇ sӱ dөng công thӭc chuyӇn ҧnh
xám chuҭn nói trên. Bây giӡ phҧi đánh dҩu chӑn Scale RGB, nhҩn Scale Setting, chương trình
sӁ liên kӃt tӟi mӝt giao diӋn mӟi đӇ ngưӡi sӱ dөng lӵa chӑn tӯng bӝ hӋ sӕ tӹ lӋ cho tӯng màu.
Giao diӋn cӫa chương trình này như sau:

„
Chương 4: Giӟi thiӋu phҫn mӅm

\:<*B?C@ Giao diӋn lӵa chӑn hӋ sӕ tӹ lӋ màu

Ngưӡi sӱ dөng sӁ điӅu chӍnh các hӋ sӕ tӹ lӋ đӇ làm nәi bұt tӯng màu lên khi thҩy đҥt yêu
cҫu sӁ nhҩn nút cӫa màu tương ӭng. Chương trình sӁ lưu bӝ sӕ tӹ lӋ này lҥi. Như vұy, ta hiӇu
rҵng, ý tưӣng cӫa viӋc phân biӋt màu này là lӵa chӑn các hӋ sӕ tӹ lӋ màu thích hӧp đӇ làm nәi
bұt màu cҫn tìm lên.

Trӣ lҥi chương trình chính, viӋc lӵa chӑn các kӻ thuұt phân ngưӥng cũng như tách biên
là như nhau cho cҧ hai tình huӕng (phân biӋt màu và không phân biӋt màu). Ý nghĩa các kӻ
thuұt phân ngưӥng và tách biên đưӧc trình bày ӣ phө lөc A ± Cơ bҧn vӅ lұp trình Stockcar.

Quá trình Calibration và xӱ lý phát hiӋn vұt đưӧc thӵc hiӋn bӣi thư viӋn Stockcar, tҩt
nhiên sӁ có sai sӕ, phҫn đánh giá sai sӕ đưӧc trình bày ӣ & ‘2.

„û
Chương Ÿ: Ӭng dөng

<=>:;M@ % &' 

Ӣ chương này, tôi trình bày mӝt ӭng dөng nhӓ, đây là sӵ phӕi hӧp giӳa máy tính,
Camera và Robot. HӋ thӕng có thӇ đӏnh vӏ và phân loҥi sҧn phҭm theo các màu khác nhau.

MB?‘Y7R<d:<_<s:7|9<^R<b:;

БMӝt camera Logitech Quickcam Pro 4000.


БMӝt máy tính.
БRobot Scara YK400x và bӝ điӅu khiӇn RCX 142.
БDây cәng COM đưӧc nӕi dây theo sơ đӗ nӕi dây 7 ‘M
БMһt phҷng làm viӋc cho Robot - đưӧc dán nӅn trҳng, các hình tròn đưӧc tô nhӳng màu
khác nhau, kích thưӟc khác nhau ± đҥi diӋn cho nhӳng sҧn phҭm cҫn phân loҥi.

MBC‘nRUx:;7|9<^R<b:;

HӋ thӕng có thӇ hoҥt đӝng ӣ 2 chӃ đӝ: chӃ đӝ bҵng tay và tӵ đӝng.

\:<MB?@ Bҧng điӅu khiӇn cho ӭng dөng

Trưӟc hӃt, ngưӡi sӱ dөng cҫn phҧi tiӃn hành các thao tác Calibration, chӑn phân
ngưӥng, tách biên«như trình bày ӣ & ‘.. TiӃp theo, ta cҫn cài đһt các thông sӕ cho viӋc
nhұn dҥng sҧn phҭm. Các tùy chӑn bao gӗm chiӅu dài, chiӅu rӝng, diӋn tích, màu sҳc (ӣ đây là
màu nhӏ phân ± 0 hoһc 2ŸŸ).

Dưӟi đây lưu đӗ điӅu khiӇn cho chương trình viӃt trên Robot:

„
Chương Ÿ: Ӭng dөng


"  

   

    


  
   
'  ()
*  %)   !
 !

'    

i   


+

 
 +

#  $ % 
 & 
0&   
  

0 &%)))!


 

. - , 
 

-  

#     #      #     


 ! !   ! , 

# &  

  
!&

#  
   /

"  &

i 

\:<MBC@ Lưu đӗ chương trình điӅu khiӇn Robot

„ý
Chương Ÿ: Ӭng dөng

ViӋc lұp trình cho Robot sӁ đưӧc thӵc hiӋn ӣ bҧng Program (& ‘ .‘ h‘ !>‘ ‘ *T‘
7 ). Đoҥn chương trình điӅu khiӇn cho Robot:

N:Jij5Y!0G
G‘ A YiY‘l+nBE2111m‘

kYNYC‘ Ys‘!

qjr iAr‘C6iN‘J
i‘5n52nj21‘

5iiA‘.1‘ Ys‘!

qjrU iiNr‘C6iN‘J
i‘5n5Knj21‘

Ai!il+mjE1‘ Ys‘!

qjrGXir‘C6iN‘J
i‘5n5;nj21‘

5Ej51‘ Ai:/‘11‘

kU
6
Ji‘ A YiY‘l+nE2111m‘

J
i‘5n51nj21‘ Ai:/‘E111‘

oC<‘ A YiY‘l+nBE2111m‘

NipC:0qjrs:ir‘ sYNY6qjrC Xir‘

sYNY6qjrs:ir‘ iNA‘sYNY6q‘C
‘!JX‘

J
i‘5n5E‘ o

5<‘

A YiY‘l+nE2111m‘ Ys‘NipC:0qjrs:ir‘C6iN‘o

Ai:/‘E111‘ U
C
‘oC‘

NhiӋm vө cӫa chương trình máy tính là chөp ҧnh và xӱ lý phát hiӋn vұt, tӯ đó truyӅn
lӋnh xuӕng Robot.

Lưu đӗ điӅu khiӇn cho chương trình máy tính:

Ä
Chương Ÿ: Ӭng dөng

 
0
1    "   2
"  
 34 ! & 5

   


 # 
08   6 &,    
0
1  
  7* "

 &  !


 

   
#9 $ 4 
4 
#  # 

6    
6    
 4
 9
 

#   : 

#!   

$  

#!  

  
# &      
7

i  #! 
   /  
  
;<
=

#  
"  &

i 

\:<MBH@ Lưu đӗ điӅu khiӇn xӱ lý ҧnh và tìm tӑa đӝ vұt

Äm
Chương Ÿ: Ӭng dөng

DiӉn giҧi hai lưu đӗ điӅu khiӇn này, hӋ thӕng sӁ hoҥt đӝng như sau (ӣ đây ta đang nói
đӃn chӃ đӝ tӵ đӝng, vì chӃ đӝ bҵng tay chӍ là đӇ kiӇm tra hoҥt đӝng cӫa hӋ thӕng trưӟc khi cho
vұn hành liên tөc): Robot luôn ӣ trҥng thái chӡ khi không có vұt vào vùng kiӇm soát (vùng
đưӧc lӵa chӑn trong hình chӳ nhұt màu xanh), lúc này cӡ Newtask = false. Lúc Robot đang ӣ
trҥng thái chӡ này, bӝ đӏnh thì trong máy tính hoҥt đӝng, cӭ 2giây sӁ chөp mӝt tҩm hình và
thao tác xӱ lý tìm vұt. Ngay khi tìm đưӧc vұt, máy tính sӁ gӱi đӃn Robot các tham sӕ sau: màu
sҳc (biӃn Color), tӑa đӝ vұt, Newtask = true. Trong quá trình Robot thao tác gҳp vұt, timer sӁ
tҳt, quá trình chөp ҧnh dӯng lҥi đӇ không gây nhiӉu cho Robot.

MBH‘Y7eiuRbo:<<=f:;Ui:a9Zab<^R<b:;

Có 4 nhóm yӃu tӕ ҧnh hưӣng đӃn sai sӕ cӫa hӋ thӕng

БThӭ nhҩt là nhóm sai sӕ do bҧn thân trang thiӃt bӏ cӫa hӋ thӕng, bao gӗm: Robot và
Camera. Ta không thӇ tác đӝng làm giҧm loҥi sai sӕ này đưӧc.
БThӭ hai là nhóm sai sӕ do quá trình xác đӏnh tӑa đӝ gӕc cho Robot (quá trình cài đһt
Home trong phҫn mӅm đưӧc đӅ cұp ӣ Chương 4), do viӋc bӕ trí Camera và mһt phҷng làm
viӋc cho Robot không chính xác. Nhóm sai sӕ này có thӇ đưӧc làm cho tӕt hơn nӃu có dөng cө
đo chuҭn.
БThӭ ba là nhóm sai sӕ trong quá trình xӱ lý ҧnh. Quá trình Calibration đưӧc thӵc hiӋn
bҵng tay nên không chính xác.
БThӭ tư là nhóm sai sӕ do tác đӝng tӯ môi trưӡng bên ngoài (nhiӉu ánh sáng). Mӝt
nguӗn sáng әn đӏnh và thích hӧp sӁ làm giҧm loҥi sai sӕ này.

MB*‘ÊY:<;ZYa9ZabwuYR8\:<Uz:<Szjc:;95r89

ĐӇ xác đӏnh sai sӕ cӫa quá trình đӏnh vӏ, tôi thiӃt lұp mӝt bҧng kích thưӟc 3Ÿ0x4Ÿ0
(mm). Trên đó chӭa 374 điӇm, đưӧc bӕ trí như hình sau:

Ä×
Chương Ÿ: Ӭng dөng

\:<MB*@ Lưӟi điӇm giúp đánh giá sai sӕ

Sau khi đã Calibration cho bӭc ҧnh, phân ngưӥng«ta tìm tӑa đӝ cho các điӇm trên lưӟi.

\:<MBM@ KӃt quҧ tӑa đӝ cӫa lưӟi điӇm

KӃt quҧ đưӧc đưa vào phҫn mӅm Excel đӇ phân tích. Ta sӁ xem xét khuynh hưӟng tұp
trung cũng như phân tán cӫa sai sӕ theo phương X, phương Y và sai sӕ tәng hӧp theo 2
phương.

ߑHưӟng tұp trung cӫa sai sӕ:

Ą
Chương Ÿ: Ӭng dөng

o:;MB?@ Hưӟng tұp trung cӫa sai sӕ

Đһc trưng đo lưӡng Phương X Phương Y Tәng hӧp

Sai sӕ trung bình


 ‘
 ‘  

Trung vӏ cӫa sai sӕ 0.9 0.7  


(*) Đơn vӏ mm
<ƒ:k‹R@ Sai sӕ trung bình và trung vӏ cӫa sai sӕ không chênh lӋnh lӟn. Vì sӕ trung vӏ
biӇu hiӋn mӭc đӝ đҥi biӇu cӫa hiӋn tưӧng mà không san bҵng bù trӯ chênh lӋch giӳa các
lưӧng biӃn nên ta có thӇ xem giá trӏ 1.34 (mm) là sai sӕ đһc trưng cӫa hӋ thӕng.
Các chӍ tiêu sӕ trung bình, sӕ trung vӏ mӟi chӍ cho ta biӃt giá trӏ trung tâm mà không
phҧn ánh đҫy đӫ tính chҩt đһc thù cӫa biӃn thiên sai sӕ. Do vұy, ta cҫn đánh giá khuynh
hưӟng phân tán cӫa sai sӕ.
ߑHưӟng phân tán cӫa sai sӕ
o:;MBC@ Hưӟng phân tán cӫa sai sӕ

Đһc trưng đo lưӡng Phương X Phương Y Tәng hӧp

Sai sӕ lӟn nhҩt ‘  ‘ 


‘

Sai sӕ nhӓ nhҩt


‘
‘

Khoҧng biӃn thiên 2 2.9  ‘

Đӝ trҧi giӳa 0.6 1.3 





Đӝ lӋch tuyӋt đӕi trung bình


 ‘
 ‘
‘

Phương sai

‘
‘

‘

Đӝ lӋch chuҭn
 ‘
‘

‘

ÄÄ
Chương Ÿ: Ӭng dөng

(*) Đơn vӏ mm

<ƒ: k‹R@ Theo quy tҳc Tchebychev, bҩt kǤ mӝt tәng thӇ nào vӟi trung bình ȝ và đӝ
lӋch chuҭn ı thì có ít nhҩt E11lEBBmc giá trӏ rơi vào khoҧng t‘ ‘u. Ta có bҧng sau:

o:;MBH@ Các tӹ lӋ % ӭng vӟi m

m 1.Ÿ 2 2.Ÿ 3

100(1-m-2)% ŸŸ.6% 7Ÿ% 84% 88.9%

Vӟi tәng thӇ sai sӕ trên, có ít nhҩt ŸŸ.6% sai sӕ rơi vào khoҧng (1.38Ÿ 1.Ÿx0.62), tӭc là
tӯ 0.4ŸŸ mm đӃn 2.31Ÿ mm. Minh hӑa kӃt quҧ:

\:<MBO@ Phân bӕ sai sӕ theo quy tҳc Tchebychev

Đӗng thӡi đӇ nhұn dҥng mӕi tương quan giӳa vӏ trí điӇm trên ҧnh (ӣ ngoài biên hay gҫn
trung tâm) và sai sӕ tҥi vӏ trí đó, ta cho tương ӭng mӛi giá trӏ sai sӕ tҥi tӯng vӏ trí vӟi mӝt dҧi
màu. Tӹ lӋ sai sӕ càng cao thì vӏ trí đó sӁ chuyӇn sang màu đӓ và ngưӧc lҥi, vӏ trí đó sӁ chuyӇn
sang màu xanh. Công viӋc này đưӧc thӵc hiӋn trên MATLAB. Sau đây là kӃt quҧ:

ğ
Chương Ÿ: Ӭng dөng

\:<MBG@ Phân bӕ sai sӕ theo 2 phương X và Y

\:<MBN@ Phân bӕ sai sӕ tәng hӧp

<ƒ:k‹R@ Sӵ phân bӕ sai sӕ này khá hӧp lý vӟi điӅu kiӋn bӕ trí thí nghiӋm hiӋn tҥi. Khu
vӵc phía trên (tương ӭng gҫn gӕc tӑa đӝ - hӋ tӑa đӝ ӣ hình 4.10) có tӹ lӋ sai sӕ cao do thiӃu
ánh sáng, đó là do bóng cӫa giá đӥ Camera lên mһt phҷng làm viӋc. Khu vӵc phía dưӟi đưӧc

Ä
Chương Ÿ: Ӭng dөng

cung cҩp ánh sáng tӕt hơn nên tӹ lӋ sai sӕ thҩp. Do nhu cҫu và điӅu kiӋn hiӋn tҥi, tôi không bӕ
trí thêm nguӗn sáng đӇ khҳc phөc sai sӕ ӣ khu vӵc phía trên. Theo như bӕ trí ban đҫu cӫa hӋ
thӕng, khu vӵc phía trên là giӓ chӭa sҧn phҭm cҫn phân loҥi và tӑa đӝ cӫa các giӓ này đưӧc
lưu vào dӳ liӋu cӫa bӝ điӅu khiӇn bҵng tay, không qua xӱ lý ҧnh. Khu vӵc phía dưӟi mӟi cҫn
đҥt đӝ chính xác cao, nơi thӵc hiӋn quá trình xӱ lý ҧnh.

Äû
Chương 6: KӃt luұn

<=>:;O@ ( !" 

OB?‘iRwuoUnRU=y7

Sau hơn 4 tháng làm viӋc tҥi phòng thí nghiӋm, tôi đã hoàn thành nhiӋm vө cӫa mình:

БThӭ nhҩt: Giao tiӃp vӟi bӝ điӅu khiӇn RCX142, viӃt phҫn mӅm điӅu khiӇn, lұp trình
cho Robot YK400x thông qua máy tính.
БThӭ hai: Xӱ lý ҧnh tӯ đó đӏnh vӏ đưӧc tӑa đӝ cӫa vұt, phân biӋt màu sҳc cӫa vұt.
БThӭ ba: Phӕi hӧp Camera và Robot đӇ phân loҥi sҧn phҭm vӟi 3 màu cơ bҧn: Đӓ, xanh
lá và xanh lam.

OBC‘=v:;l:;h6:;Sd5f8x:;U4RdZ

Tôi hy vӑng vӟi kӃt quҧ đҥt đưӧc thӭ nhҩt, sinh viên tìm hiӇu Robot YK400x sӁ thҩy
đơn giҧn hơn khi lұp trình, thao tác vӟi Robot nhanh hơn, tiӋn lӧi hơn.

KӃt quҧ thӭ hai vӅ xӱ lý ҧnh vүn còn nhiӅu hҥn chӃ vӅ đӝ chính xác, khҧ năng xӱ lý linh
hoҥt trong nhӳng môi trưӡng khác nhau«HiӋn tҥi, chương trình xӱ lý ҧnh chӍ phân biӋt đưӧc
mӝt sӕ màu cách xa nhau. Khi các màu quá gҫn nhau sӁ có hiӋn tưӧng nhiӉu dүn đӃn quá trình
đӏnh vӏ thiӃu chính xác. Tuy vұy vӟi khҧ năng phân biӋt đưӧc ba màu cơ bҧn, ta có thӇ áp
dөng vào mӝt sӕ hӋ thӕng phân loҥi sҧn phҭm thích hӧp đӇ tұn dөng mӝt ưu điӇm cӫa nhұn
dҥng bҵng Camera đó là phҥm vi phát hiӋn rӝng.

OBH‘!`Z}iR

Vӟi nhӳng kӃt quҧ đҥt đưӧc trên đây, tôi tӵ thҩy vүn còn rҩt nhiӅu khiӃm khuyӃt và hҥn
chӃ trong hӋ thӕng cӫa mình. HӋ thӕng vүn chưa có khҧ năng đi vào ӭng dөng thӵc tiӉn. Tuy
nhiên, tôi tin rҵng đây sӁ là mӝt bưӟc đӋm tӕt, nó cung cҩp cho tôi nhӳng kiӃn thӭc cơ bҧn vӅ
xӱ lý ҧnh, hiӇu biӃt vӅ điӅu khiӇn Robot và lұp trình vӟi ngôn ngӳ mӟi C#. Thӡi gian hӑc tұp
và làm viӋc tҥi phòng thí nghiӋm, dưӟi sӵ chӍ dүn cӫa các thҫy, tôi đã hӑc đưӧc cách làm viӋc
và nghiên cӭu khoa hӑc. Tҩt cҧ sӁ là hành trang cho tôi khi rӡi giҧng đưӡng đҥi hӑc.

Ä
Tài liӋu tham khҧo

! 
.

[1] Lê Hoài Quӕc & Chung Tҩn Lâm, (2001), Nhұp môn Robot Công nghiӋp, Nhà xuҩt bҧn
Khoa hӑc và Kӻ thuұt.

[2] Lương Mҥnh Bá & NguyӉn Thanh Thӫy, (1999), Nhұp môn xӱ lý ҧnh sӕ, Nhà xuҩt bҧn
Khoa hӑc và Kӻ thuұt.

[3] Dương Quang ThiӋn, (200Ÿ), Lұp trình Visual C# thӃ nào, Nhà xuҩt bҧn Tәng Hӧp thành
phӕ Hӗ Chí Minh.

[4] Phҥm Hӳu Khang, (2006), C# 200Ÿ-Tұp 2-Lұp trình Windows Forms, Nhà xuҩt bҧn Lao
Đӝng Xã Hӝi.

[Ÿ] NguyӉn Quang Hoan, (2000), Xӱ lý ҧnh, Hӑc viӋn Công NghӋ Bưu Chính ViӉn Thông

[6] Dwayne Phillips, (1994), Image Processing in C, RandD Publications

[7] Các thuұt toán xӱ lý ҧnh: http://pippin.gimp.org/image_processing/

[8] Tài liӋu xӱ lý ҧnh: http://www.cvmt.dk/education/teaching/e07/MED3/IP/

Äý
Phө lөc

'!'

B‘ J  # +!I. - 




B‘ ZvZR<Z^u-R7}798

Các ӭng dөng luôn thay đәi, không mӝt giҧi pháp phҫn cӭng hay phҫn mӅm nào có thӇ
đáp ӭng đưӧc cho tҩt cҧ. Stockcar là mӝt giҧi pháp, đây là thư viӋn hӛ trӧ xӱ lý ҧnh cӫa Lecky
Integration (mӝt công ty chuyên cung cҩp dӏch vө, cӕ vҩn các ӭng dөng thӏ giác máy, hӋ thӕng
nhúng«). Thư viӋn chӭa nhiӅu đoҥn chương trình mүu, đưӧc viӃt cho các ӭng dөng khác
nhau trong các môi trưӡng khác nhau: C++, VB, MFC.

Thư viӋn Stockcar có mӝt sӕ nguyên tҳc tiêu chuҭn trong viӋc đһt tên hàm, cҩu trúc ҧnh
chuҭn. Nҳm vӳng các nguyên tҳc này sӁ giúp ngưӡi sӱ dөng lұp trình nhanh hơn và không cҫn
phҧi tham khҧo sә tay lұp trình quá nhiӅu.

?‘&€VZ^uo:<

Cũng như các thư viӋn xӱ lý ҧnh khác, Stockcar đưa dӳ liӋu điӇm ҧnh vào các thuұt toán
xӱ lý ҧnh dӵa trên mӝt cҩu trúc ҧnh chuҭn. Ӣ đây, ҧnh đưӧc lưu dưӟi cҩu trúc !1Z59;r đӇ
tương thích vӟi các hàm cӫa Stockcar. Cҩu trúc LEimage đưӧc tҥo ra bҵng cách gӑi hàm
VrS8r9Rr(«), hӫy bҵng cách gӑi hàm VrS&raR8e(«).

#{h6: im = levCreate(LEV_Y8, 640, 480) ĺ LӋnh này sӁ tҥo ra mӝt ҧnh xám 8-bit kích
thưӟc 640x480.

Tuy vұy Stockcar cũng cung cҩp phiên bҧn thô cӫa hҫu hӃt các hàm đӇ nhұn dӳ liӋu ӣ
đӏnh dҥng cҩp thҩp hơn. Khi sӱ dөng phiên bҧn thô cӫa các hàm thì cҩu trúc ҧnh chuҭn
LEimage đưӧc bӓ qua, thay vào đó là kiӇu bҧng đӏa chӍ theo hàng (Raw Address Table, viӃt tҳt
là RAT). Theo kiӇu dӳ liӋu ҧnh RAT, ta sӁ đһt đҫu vào cho mӛi hàng cӫa RAT là điӇm ҧnh
đҫu tiên cӫa mӝt dãy điӇm ҧnh.

Mӝt vài thuұt toán xӱ lý ҧnh chӍ hoҥt đӝng trên mӝt dãy điӇm ҧnh, thay vì mӝt vùng, lúc
này ta không cҫn mӝt RAT mà chӍ cҫn điӇm ҧnh đҫu tiên cӫa dãy điӇm ҧnh.

Ÿ
Phө lөc

C‘ue=v7R‰:;gZ7Y7<d5R8:;-R7}798

БKiӇu tên gӑi cho các hàm xӱ lý ҧnh. Ӣ đây ta thưӡng bҳt gһp cөm tӯ *" trưӟc tên các
hàm, nó là viӃt tҳt cӫa Lecky Engineering Vision.
o:;
B?: KiӇu tên gӑi các hàm xӱ lý ҧnh

KiӇu dӳ liӋu ҧnh KiӇu tên gӑi cho hàm

LEimage levFuntion(im,«)

8-bit RAT levFuntion_rat8(rat,«)

8-bit pixline levFunction_line8(line,«)

16-bit RAT levFuntion_rat16(rat,«)

16-bit pixline levFunction_line16

БKiӇu tên gӑi các hàm vӁ chӗng: legrFunction(«). Ӣ đây, *" là viӃt tҳt cӫa Lecky
Engineering Graphics Overlay. Trong quá trình xӱ lý ҧnh ta thưӡng xuyên phҧi vӁ chӗng lên
mӝt bӭc ҧnh mà không làm mҩt các điӇm ҧnh bên dưӟi nét vӁ. Thư viӋn Stockcar chӭa nhiӅu
hàm đӗ hӑa (*"«) cho phép vӁ mӝt hình thӭ hai đè lên tҩm hình ban đҫu.
БKiӇu tên gӑi các hàm tính toán ma trұn: lemFunction(«), *" là viӃt tҳt cӫa Lecky
Engineering Matrix Math.
БKiӇu tên gӑi các hàm mҥng Neural: lennFunction(«), *" là viӃt tҳt cӫa Lecky
Engineering Neural Network.
БKiӇu tên gӑi các hàm phương trình sai phân thông thưӡng: leodeFunction(«), *"" là
viӃt tҳt cӫa Lecky Engineering Ordinary Differential Equation.
Qua tìm hiӇu mӝt sӕ kiӇu tên gӑi cơ bҧn này sӁ cho ta mӝt cái nhìn tәng quát vӅ cách
đһt tên hàm trong Stockcar.

H‘c:;Sd}Z[u

j‘Êz:<hn:;h€VZ^uUZ[5o:<

Stockcar hӛ trӧ nhiӅu đӏnh dҥng ҧnh khác nhau. Tuy nhiên, hҫu hӃt các thuұt toán xӱ lý
ҧnh chӍ đưӧc đӏnh nghĩa cho ҧnh trҳng đen 8-bit hay 16-bit.

Ÿm
Phө lөc

HiӇn thӏ ҧnh vӟi các ӭng dөng LEimageViewer có thӇ áp dөng cho dҥng dӳ liӋu 24-bit
RGB.

o:;
BC@ Các đӏnh dҥng dӳ liӋu điӇm ҧnh
Đӏnh danh Giá trӏ DiӉn giҧi
LEV_Y8 1 Ҧnh trҳng đen 8-bit
LEV_Y16 2 Ҧnh trҳng đen 16-bit
LEV_Yf 3 Ҧnh trҳng đen float
LEV_RGB1Ÿ 4 Ÿ bit cho mӛi R, G, B
LEV_RGB16 Ÿ Ÿ bit cho R, B và 6 bit cho G
LEV_RGB24 6 8 bit cho R, G, B
LEV_RGB32 7 8 bit cho R, G, B và alpha
LEV_RGBf 8 1 float cho mӛi R, G, B
LEV_YUV422 9 8 bit cho Y và 8 bit cho CrCb
LEV_YUV444 10 8 bit cho mӛi y, Cr và Cb

j‘Z[u<c:;

ROI là các hình chӳ nhұt hay các đưӡng thҷng bҩt kǤ cӫa các điӇm ҧnh. Mӝt ROI sӁ
thuӝc tҩm ҧnh gӕc mà trên đó nó đưӧc tҥo ra. Khi mӝt ROI đưӧc đӏnh nghĩa, thành phҫn
roiType trong cҩu trúc LEimage nhұn mӝt trong các giá trӏ sau:

o:;
BH: KiӇu hҵng ROI
LEV_MASTER 0
LEV_RROI 1
LEV_LROI 2

j‘c:;abRY:<g7

o:;
B*: Hҵng sӕ toán hӑc
LE_PI 3.141Ÿ926Ÿ3Ÿ8979323846
LE_PI_2 1.Ÿ7079632679489661923
LE_PI_4 0.78Ÿ398163397448309616

Ÿ×
Phө lөc

j‘Y75duSŒ7<:;

ĐӇ vӁ chӗng lên tҩm ҧnh chính bҵng các màu khác nhau, sӱ dөng mã màu trong bҧng
dưӟi đây cho các hàm vӁ chӗng:

o:;
BM: Các màu vӁ chӗng

LEV_COLOR_UNSPECIFIED 0

LEV_COLOR_BLACK 100

LEV_COLOR_WHITE 120

LEV_COLOR_RED 140

LEV_COLOR_YELLOW 160

LEV_COLOR_GREEN 180

LEV_COLOR_BLUE 200

j‘Z[u<c:;S4Rg9Ux

Trên mӝt ROIs, các thuұt toán sӁ kiӇm tra thành phҫn coordRef trong cҩu trúc LEimage
đӇ xác đӏnh nên trҧ ra tӑa đӝ gҳn vӟi ҧnh hay ROI. NӃu coordRef là LEV_IMAGECOORDS
(đây là mһc đӏnh), tҩt cҧ các tӑa đӝ vӁ trong ROI sӁ đưӧc hiӇu là tӑa đӝ ҧnh. Ngưӧc lҥi, nӃu
coordRef là LEV_ROICOORDS, tӑa đӝ sӁ đưӧc hiӇu gҳn vӟi ROI.

o:;
BO: KiӇu hҵng chuyӇn tӑa đӝ

LEV_IMAGECOORDS 0 Trҧ ra tӑa đӝ gҳn vӟi ҧnh

LEV_ROICOORDS 1 Trҧ ra tӑa đӝ gҳn vӟi ROI

Khi tӑa đӝ gҳn vӟi ҧnh, cҩu trúc LEimage đӗng thӡi kiӇm tra xem có hay không cҩu trúc
chuyӇn tӑa đӝ thӵc trong coordXfm (kӃt quҧ quá trình Calibration), nӃu có, tӑa đӝ trҧ ra sӁ là

Ÿ„
Phө lөc

tӑa đӝ thӵc. Lúc này nӃu ta dùng lӋnh vӁ chӗng lên ҧnh, legrCrossHair(«) chҷng hҥn, tӑa đӝ
nhұp vào sӁ đưӧc hiӇu là tӑa đӝ thӵc, hàm sӁ tӵ đӝng chuyӇn qua tӑa đӝ ҧnh đӇ vӁ.

j‘ŽVZ

Trong quá trình thӵc thi các hàm cӫa Stockcar nӃu có lӛi xҧy ra thì sӁ hàm sӁ trҧ ra mӝt
giá trӏ, đӕi chiӃu vӟi mã lӛi ta sӁ biӃt lӛi nҵm ӣ đâu. NӃu không có lӛi gì xҧy ra thì hàm sӁ trҧ
giá trӏ 0. Ta có thӇ tra mã lӛi trong sә tay lұp trình cӫa Stockcar. Sau đây là mӝt sӕ mã lӛi
thông thưӡng nhҩt:

o:;
BO@ Các mã lӛi thông dөng
LEV_OK 0
LEV_UNAUTHORIZED 101
LEV_GET_XXX_NO_STRUCTURE 102
LEV_SET_XXX_NO_STRUCTURE 103

B‘>jo:S4Vƒ_R8\:<-R7}798

?‘!Teh€VZ^uo:<

Thư viӋn Stockcar chӭa các hàm đӇ tҧi tӯ tұp tin bmp vào cҩu trúc LEimage. Chҷng hҥn
như lӋnh levFileReadBmp(«).

C‘Z[:R<zo:<

Thư viӋn Stockcar có hai kӻ thuұt hiӇn thӏ ҧnh:

БGӑi hàm levViewerSend(«) đӇ khӣi tҥo mӝt cӱa sә mӟi đӇ hiӇn thӏ ҧnh.
БGӑi hàm levBitBlt(«) đӇ hiӇn thӏ ҧnh trong các khung ҧnh cӫa cӱa sә hiӋn hành.

H‘9VZj89RZ:

Mӝt cҩu trúc chuyӇn tӑa đӝ đưӧc tҥo ra bҵng cách gӑi hàm levRealCoordCreate, hӫy
bҵng cách gӑi hàm levRealCoordDestroy.

ĐӇ thӵc hiӋn Calibration ta cҫn nhұp 4 điӇm thuӝc hӋ tӑa đӝ ҧnh và 4 điӇm thuӝc hӋ tӑa
đӝ thӵc (theo mӝt thӭ tӵ đã quy ưӟc), lӋnh thi hành là levRealCoordSetPoints. Ta có thӇ lưu

ŸÄ
Phө lөc

lҥi sӕ liӋu 8 điӇm này bҵng lӋnh levRealCoordGetPoints đӇ phөc vө cho nhӳng lҫn tính toán
sau.

LӋnh levRealCoordCalibrate sӁ tҥo ra mӝt cҩu trúc chuyӇn hӋ tӑa đӝ ҧnh và thӃ giӟi thӵc
tương ӭng vӟi bӝ 8 điӇm vӯa cài đһt ӣ trên. Lúc này, ta chӍ viӋc áp dөng hӋ tӑa đӝ này cho ҧnh
vӯa đưӧc Calibration, lӋnh thӵc thi là levUseCalibration.

*‘<m:R{7<!a~Z:98e!98;rjŠr7Ra

Đây là mӝt trong nhӳng thuұt toán phӭc tҥp hơn cҧ, vì vұy nó đòi hӓi nhiӅu tham sӕ đҫu
vào và có khҧ năng hình thành hàng ngàn kӃt quҧ ӣ đҫu ra.

Thư viӋn Stockcar sӱ dөng cҩu trúc dӳ liӋu gӑi là LeblobParams cho các tham sӕ vào, và
LeblobResults đӇ trҧ ra kӃt quҧ, đӗng thӡi cung cҩp các hàm đӇ khӣi tҥo, xóa và truy xuҩt các
cҩu trúc này. Cҩu trúc LeblobParams đưӧc tҥo ra bҵng hàm levBlobParamsCreate(«) và hӫy
bҵng hàm levBlobParamsDestroy(«).

M‘<m::;=ˆ:;

Trong thư viӋn Stockcar, hàm phân ngưӥng thưӡng dùng là levThresh(«), lӋnh này sӁ
lҩy các điӇm ҧnh, đưa lên 1 hoһc xuӕng 0, tùy thuӝc vào điӇm ҧnh đó có giá trӏ lӟn hơn hay bé
hơn ngưӥng.

ĐiӇm yӃu nhҩt cӫa phân ngưӥng cӕ đӏnh là không phҧn ӭng đưӧc vӟi sӵ thay đәi điӅu
kiӋn sáng. Thư viӋn Stockcar hӛ trӧ nhiӅu hàm phân ngưӥng tӵ đӝng.

ߑlevThreshPick... các hàm này sӁ lӵa chӑn mӝt ngưӥng tӕt nhҩt dӵa trên nhӳng tiêu
chuҭn khác nhau.
БlevThreshPickEdge(p, ethresh) ĺ Ӣ đây  là ҧnh cҫn phân ngưӥng và "" là
ngưӥng cҥnh. Hàm sӁ trҧ ra mӝt ngưӥng hӧp lý cho viӋc xӱ lý ҧnh  dӵa trên phân tích các
điӇm ҧnh thuӝc cҥnh. Nhӳng cҥnh nào bao gӗm các điӇm ҧnh có giá trӏ lӟn hơn ngưӥng cҥnh
"" sӁ đưӧc dùng cho viӋc xác đӏnh đӕi tưӧng
БlevThreshPickCount(p, whitecount) ĺ Ӣ đây  là ҧnh cҫn phân ngưӥng, v" 
là sӕ lưӧng điӇm ҧnh sӁ đưӧc tô trҳng. Hàm sӁ trҧ ra mӝt ngưӥng hӧp lý đӇ sӕ lưӧng điӇm ҧnh
đưӧc tô trҳng là v" .

ŸŸ
Phө lөc

БlevThreshPickPercent(p, whitepercent) ĺ Ӣ đây  là ҧnh cҫn phân ngưӥng,


v"""  là phҫn trăm sӕ điӇm ҧnh cҫn tô trҳng. Hàm này hoҥt đӝng tương tӵ
levThreshPickCount(«).
БlevThreshPickIterative(p) ĺ Ӣ đây  là ҧnh cҫn phân ngưӥng. Hàm sӁ trҧ ra mӝt
ngưӥng hӧp lý dӵa trên thuұt toán lӵa chӑn lһp.
ߑlevThreshAuto« các hàm này sӱ dөng các hàm lӵa chӑn ngưӥng levThreshPick«
trên và áp dөng vào xӱ lý ҧnh mӝt cách tӵ đӝng. Vӟi cách hoҥt đӝng tương tӵ như trên, ta
cũng có các hàm phân ngưӥng tӵ đӝng như sau:
БlevThreshAutoEdge(p, ethresh)
БlevThreshAutoCount(p,whitecount)
БlevThreshAutoPercent(p, whitepercent)
БlevThreshAutoIterative(p)
ߑlevThreshRegion« các hàm này cũng như các hàm levThreshAuto« nhưng quá trình
phân tích chӍ áp dөng trên mӝt vùng cӫa ҧnh trong mӝt thӡi điӇm. ĐiӅu này cho phép giá trӏ
phân ngưӥng thay đәi theo tӯng vùng trên ҧnh, thay đәi giá trӏ ngưӥng theo không gian và thӡi
gian.
БlevThreshRegionCount(p, dx, dy, stepX, stepY, whitecount) ĺ Hàm này sӁ tính toán
các ngưӥng cho tӯng vùng và áp dөng đӇ phân ngưӥng cho tӯng vùng trên ҧnh mӝt cách tӵ
đӝng. Tiêu chuҭn phân ngưӥng cũng giӕng như hàm levThreshAutoCount(«). Ӣ đây, dx và
dy là kích thưӟc cӫa tӯng vùng, stepX và stepY là khoҧng cách giӳa tӯng bưӟc.
БlevThreshRegionPercent(p, dx, dy, stepX, stepY, whitepercent). Tương tӵ hàm
levTheshRegionCount(«), v""" ‘ là phҫn trăm sӕ điӇm ҧnh cҫn tô trҳng trên tӯng
vùng.
БlevThreshRegionEdge(p, dx, dy, stepX, stepY, ethresh) ± tương tӵ.
БlevThreshRegionIterative(p, dx, dy, stepX, stepY) ± tương tӵ.

Ÿ
Phө lөc

O‘ Y7<jZ‰:

Biên là sӵ liên kӃt giӳa 2 vùng có mӭc xám tương đӕi khác nhau. Tư tưӣng cơ bҧn cӫa
kӻ thuұt tách biên là tính vi phân cөc bӝ. Thư viӋn Stockcar hӛ trӧ nhiӅu thuұt toán tách biên
khác nhau: Sobel, Laplace, Prewitt, Sharpen«

Ngoài ra, tҩt nhiên thư viӋn Stockcar còn nhiӅu chӭc năng khác nӳa giúp ngưӡi lұp trình
dӉ dàng hơn khi tiӃp cұn vӟi xӱ lý ҧnh. Vӕn dĩ thư viӋn này không hӛ trӧ cho ngôn ngӳ C#,
tuy nhiên tôi đã xây dӵng xong lӟp Utility.cs chӭa DllImport các lӋnh cӫa Stockcar.

Ÿû
Phө lөc

B‘ÊEF )* +#JÊEF +?*C

B‘Y7Rƒ_RZ:h€VZ^u

Trong quá trình giao tiӃp vӟi thiӃt bӏ ngoҥi vi ± máy tính chҷng hҥn, thưӡng xuyên ta
phҧi truyӅn cho Robot các gói dӳ liӋu lӟn: mӝt chương trình gӗm nhiӅu lӋnh, mӝt tұp các điӇm
và tên gӧi nhӟ cho các điӇm đó, các biӃn, các hҵng«Vì vұy nhà sҧn xuҩt quy đӏnh vӅ cҩu trúc
các gói dӳ liӋu này đӇ Robot có thӇ hiӇu đưӧc. Sau đây là mӝ sӕ các gói dӳ liӋu thưӡng dùng.

?‘ ƒ_RZ:7<=>:;R8\:<

ߑMӝt chương trình

Name = Tên chương trình [Mã kӃt thúc]

[Chương trình] [Mã kӃt thúc]

[Mã kӃt thúc]

БTên chương trình tӕi đa 8 kí tӵ, có thӇ kӃt hӧp vӟi chӳ sӕ và dҩu gҥch dưӟi.
БMӝt dòng lӋnh tӕi đa 7Ÿ kí tӵ.
БMã kӃt thúc: CR(0Dh) hoһc LF(0Ah).

Đӏnh dҥng này đưӧc sӱ dөng vӟi lӋnh READ sӁ đӑc chương trình vӟi tên tương ӭng lưu
trӳ trong bӝ nhӟ. NӃu đưӧc sӱ dөng vӟi lӋnh WRITE sӁ tҥo ra 1 chương trình có tên tương
ӭng trong bӝ nhӟ.

ߑNhiӅu chương trình

Ÿ
Phө lөc

Name = Tên chương trình 1[Mã kӃt thúc]

[Chương trình 1] [Mã kӃt thúc]

Name = Tên chương trình 1[Mã kӃt thúc]

[Chương trình 2] [Mã kӃt thúc]

[Mã kӃt thúc]

KӃt hӧp các tұp tin chương trình này lҥi vӟi nhau, ta có thӇ đӑc và ghi cùng lúc nhiӅu
chương trình.

#{h6@

NAME=TEST1 1Aw

SPEED 20 1Aw

MOVE P,P0 1Aw

HALT 1Aw

1Aw

ĺVӟi lӋnh WRITE <TEST1>, ta đã ghi chương trình có nӝi dung như trên vào bӝ nhӟ
RCX142.

C‘ ƒ_RZ:Rg9Ux

ߑMӝt điӇm

Pm=fx fy fz fr fa fb t [Mã kӃt thúc]

Бm có giá trӏ trong khoҧng 0 đӃn 9999.


Бfx, fy, fz, fr, fa, fb là sӕ có dҩu không quá 8 chӳ sӕ.
Бt đưӧc gӑi là hand system flag

Ÿý
Phө lөc

t = 0 : không dùng hand system flag.

t = 1 : sӱ dөng Right-handed system đӇ đһt tӑa đӝ.

t = 2 : sӱ dөng Left-handed system đӇ đһt tӑa đӝ.

ߑNhiӅu điӇm

Pm1=fx1 fy1 fz1 fr1 fa1 fb1 t1 [Mã kӃt thúc]

Pm2=fx2 fy2 fz2 fr2 fa2 fb2 t2 [Mã kӃt thúc]

[Mã kӃt thúc]

Tұp tin tӑa đӝ nӃu đưӧc dùng vӟi lӋnh READ sӁ đӑc mӝt hay toàn bӝ các điӇm có trong
bӝ nhӟ, nӃu đưӧc dùng vӟi lӋnh WRITE sӁ ghi mӝt lúc nhiӅu điӇm, cùng vӟi nó là lӡi gӧi nhӟ,
miêu tҧ ý nghĩa cho tӯng điӇm (nӃu muӕn).

H‘ ƒ_RZ:7<;ZoZRg9UxUZ[5

PC1=[Comment1] [Mã kӃt thúc]

PC2=[Comment2] [Mã kӃt thúc]

[Mã kӃt thúc]

#{h6@

P0 = 1 2 3 4 Ÿ 6 1Aw

P1 = 1.00 2.00 3.00 4.00 Ÿ.00 6.00 1Aw

P2 = 1.00 0.00 0.00 0.00 0.00 0.00 1Aw

P3 = -1.00 0.00 0.00 0.00 0.00 0.00 1Aw

1Aw


Phө lөc

ĺVӟi lӋnh WRITE PNT, ta ghi ghi vào bӝ nhӟ RCX142 ba điӇm có tӑa đӝ như trên.

ĐӇ ghi chú thích cho 3 điӇm này, ta lҥi dùng lӋnh WRITE PCM vӟi gói dӳ liӋu như sau:

PC1 = ORIGIN 1Aw

PC2 = RED BASKET 1Aw

PC3 = GREEN BASKET 1Aw

1Aw

Ngoài ba loҥi tұp tin cơ bҧn này, ta còn có nhiӅu loҥi tұp tin khác nӳa. Tùy theo nhu cҫu
sӱ dөng mà ta sӁ tìm hiӇu trong sә tay lұp trình cӫa nhà sҧn xuҩt.

B‘Y7V^:<hZ7<ue[:7>jo:

?‘!^:<#1

MOVE P <tӑa đӝ>[,vұn tӕc[,gia tӕc]«]


L
C

ߑKiӇu di chuyӇn: lӋnh MOVE đưӧc dùng vӟi 3 kiӇu di chuyӇn: điӇm tӟi điӇm, nӝi suy
đưӡng thҷng, nӝi suy đưӡng tròn.

A‘  ‘‘ ‘< Các trөc di chuyӇn đӗng thӡi đӇ khâu cuӕi đҥt đӃn vӏ trí đích
nhưng quӻ đҥo chuyӇn đӝng thì không xác đӏnh đưӧc.

#{h6@ MOVE P,P0

N‘ ‘- ‘x < Các trөc di chuyӇn đӗng thӡi đӇ khâu cuӕi đi tӯ điӇm thӭ nhҩt đӃn
điӇm thӭ 2 theo đưӡng thҷng.

#{h6: MOVE L,P0,P1

m
Phө lөc

N‘ ‘- ‘y < Các trөc di chuyӇn đӗng thӡi đӇ khâu cuӕi đi qua các điӇm theo quӻ
đҥo tròn.

#{h6@

MOVE L,P20

MOVE C,P21,P22,P23,P20

MOVE L,P24

ĐӇ thi hành lӋnh tiӃp theo khi các trөc đang di chuyӇn đӃn vӏ trí đích, sӱ dөng WAIT
ARM.

ߑĐһt vұn tӕc:

!‘E<‘

SPEED <Giá trӏ vұn tӕc>


S

Giá trӏ vұn tӕc tӯ 1 đӃn 100 (đơn vӏ %). Đӏnh rõ vұn tӕc mà Robot thi hành là bao nhiêu
phҫn trăm so vӟi vӕn có cӫa Robot. Chӭc năng này chӍ đưӧc dùng vӟi lӋnh MOVE.

#{h6: MOVE P,P10,S=10


Phө lөc

!‘<‘

VEL = <Giá trӏ vұn tӕc>

Giá trӏ vұn tӕc tӯ 1 đӃn 7Ÿ0 đӕi vӟi Robot SCARA (đơn vӏ: mm/s). Chӭc năng này đưӧc
dùng vӟi nӝi suy đưӡng thҷng.

#{h6@ MOVE L,P10,VEL=100

ߑĐһt gia tӕc

ACC = <Giá trӏ gia tӕc>

DEC = <Giá trӏ gia tӕc>

Giá trӏ gia tӕc phҧi tӯ 0 đӃn 100 (đơn vӏ %). TӍ lӋ tăng tӕc, giҧm tӕc cho Robot đưӧc tính
bҵng tích cӫa tӍ lӋ tăng tӕc, giҧm tӕc này vӟi tӍ lӋ tăng tӕc,giҧm tӕc đã cài đһt. Chӭc năng này
chӍ đưӧc dùng vӟi lӋnh MOVE khi nӝi suy tuyӃn tính.

#{h6@

MOVE L,P100,ACC=10

MOVE L,P100,DEC=20

ߑĐһt mһt phҷng tӑa đӝ:

XY, YZ, XZ trong đó XY, YZ, ZX là các mһt phҷng tӑa đӝ

Khi nӝi suy đưӡng tròn đưӧc đһt mһt phҷng tӑa đӝ, chӭc năng này sӁ thӵc hiӋn phép nӝi
suy đưӡng tròn sao cho hình chiӃu cӫa chuyӇn đӝng trên mһt phҷng tӑa đӝ đó là mӝt đưӡng
tròn. Chӭc năng này chӍ đưӧc sӱ dөng vӟi lӋnh MOVE khi nӝi suy đưӡng tròn.

#{h6@

MOVE P,P10

MOVE C,P11,P12

MOVE C,P13,P10


Phө lөc

ĺ di chuyӇn liên tөc trên 2 đưӡng tròn lҫn lưӧt tҥo bӣi 3 điӇm P10, P11, P12 và P12,
P13, P10.

MOVE C,P11,P12,XY

MOVE C,P13,P10,XY

ĺ di chuyӇn liên tөc trên 2 đưӡng tròn lҫn lưӧt tҥo bӣi 3 điӇm P10¶, P11¶, P12¶ và P12¶,
P13¶, P10¶ (P10¶, P11¶, P12¶, P13¶ là hình chiӃu cӫa P10, P11, P12,P13 lên mһt phҷng XY).

C‘!^:<&#1

DRIVE (<Sӕ thӭ tӵ trөc>, <Đӝ dӏch chuyӇn>),«[,vұn tӕc[,mһt phҷng di chuyӇn[,«]
<tӑa đӝ điӇm>

NӃu đã hiӇu cách sӱ dөng lӋnh MOVE cho Robot thì ta sӁ thҩy lӋnh DRIVE hoàn toàn
tương tӵ.

#{h6@

DRIVE (3,P0) ĺ di chuyӇn trөc 3 đӃn vӏ trí xác đӏnh bӣi tӑa đӝ P0.

DRIVE(1,100000),S=10 ĺ quay trөc 1 theo đӃn vӏ trí cҧm biӃn đӑc vӅ là 100000 xung
vӟi vұn tӕc là 10% vұn tӕc cài đһt.

DRIVE(4,90.00) ĺ quay trөc 4 đӃn vӏ trí ³90 đӝ´ so vӟi vӏ trí 0.

DRIVE(1,P100),(2,P100),(4,P100),XY ĺ di chuyӇn trөc 1, 2 và 4 đӃn vӏ trí trên hӋ tӑa


đӝ XY, xác đӏnh bӣi P100.

Trong lұp trình cho Robot ta thưӡng xuyên phҧi sӱ dөng di chuyӇn trong hӋ tӑa đӝ
tương đӕi: MOVEI, DRIVEI«Cách sӱ dөng các lӋnh này cũng tương tӵ như lӋnh MOVE và
DRIVE trong hӋ tӑa đӝ tuyӋt đӕi.

B‘Y7V^:<S4Vƒ_R8\:<

?‘!^:<
! 

LӋnh này sӁ dӯng chương trình và reset chương trình. Chương trình sӁ chҥy lҥi khi khӣi
đӝng lҥi chương trình.


Phө lөc

C‘!^:<  

GOTO <label>

LӋnh này nhҧy không điӅu kiӋn đӃn dòng lӋnh đánh dҩu bҵng nhãn <label> (phҧi có dҩu
* trưӟc các nhãn).

H‘!^:<&1!
)

LӋnh này sӁ trì hoãn quá trình thӵc thi cӫa Robot trong mӝt khoҧng thӡi gian. Giá trӏ
làm trӉ phҧi tӯ 1 đӃn 3600000 ms.

*‘ÊZ4u}Z^:‘

!z ‘a<‘

IF <ĐiӅu kiӋn> THEN <Nhãn 1> ELSE <Nhãn 2>

<Thӵc thi lӋnh 1> <Thӵc thi lӋnh 2>

#{h6@

*ST:

MOVE P,P0,P1

IF DI(20)=1 THEN *L1

DO(20)=1

DELAY 100

*L1:

IF DI(21)=1 THEN *ST ELSE *FIN

*FIN:

HALT

M‘#’:;VQ_‘

!z ‘a<‘


Phө lөc

FOR K=m TO n

[Tұp các lӋnh thi hành]

NEXT K

ĐӇ thoát khӓi vòng lһp ta dùng lӋnh EXIT FOR.

#{h6@

*ST:

WAIT DI(20)=1

FOR A=101 TO 109

MOVE P,P100,Z=0

DO(20)=1

MOVE P,P[A],Z=0

DO(20)=0

IF DI(20)=0 THEN EXIT FOR

NEXT A

GOTO *ST

HALT

Ӣ đây DI(«) và DO(«) là các chân input và output, ký hiӋu *ST, *L1, *FIN«là các
nhãn đӇ chương trình nhҧy đӃn trong lӋnh If hay lӋnh Goto«


Phө lөc

O‘!^:< -

GOSUB <Nhãn>

<Tұp lӋnh 1>

<Nhãn>:

<Tұp lӋnh 2>

RETURN

LӋnh GOSUB luôn đưӧc sӱ dөng kèm vӟi lӋnh RETURN, khi gһp dòng lӋnh GOSUB,
chương trình sӁ nhҧy đӃn dòng lӋnh sau nhãn đưӧc đӏnh nghĩa bҵng lӋnh GOSUB. Khi gһp
lӋnh RETURN, chương trình sӁ nhҧy vӅ dòng lӋnh sau GOSUB (giӕng như lӋnh nhҧy trong
hӧp ngӳ).

G‘!^:<-Sd1 &-

Cһp lӋnh này đưӧc dùng đӇ đӏnh nghĩa mӝt chương trình con, đưӧc gӑi nhiӅu lҫn trong
chương trình. LӋnh CALL đưӧc dùng đӇ gӑi đӃn các chương trình con này.

#{h6@

CALL *GOHOME

MOVE P,P1

HALT

SUB *GOHOME

MOVE P,P0

END SUB

Các hưӟng dүn trên đây chӍ cung cҩp mӝt sӕ khái niӋm cơ bҧn đӇ lұp trình vӟi bӝ điӅu
khiӇn RCX142, nhưng nӃu hiӇu đưӧc các lӋnh cơ bҧn này, ta sӁ làm quen vӟi Robot mӝt cách
dӉ dàng, tӯ đó sӁ tìm hiӇu đӇ phát triӇn các ӭng dөng xa hơn.

You might also like