BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
NGÀNH CNKT ĐIỆN TỬ TRUYỀN THƠNG
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
LẬP TRÌNH ROBOT 3 BÁNH DI CHUYỂN THEO NGƯỜI
SỬ DỤNG CAMERA KINECT
GVHD
SVTH
MSSV
SVTH
MSSV
Khoá
: ThS. NGUYỄN TẤN NHƯ
: VÕ NGỌC THẨM
: 13141608
: NGUYỄN HỮU MINH ANH
: 13141005
: 2013-2017
SKL 0 0 4 9 7 9
Tp. Hồ Chí Minh, tháng 07/2017
TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƢỢNG CAO
ĐỒ ÁN TỐT NGHIỆP
LẬP TRÌNH ROBOT 3 BÁNH DI CHUYỂN THEO
NGƢỜI SỬ DỤNG CAMERA KINECT
SVTH1: VÕ NGỌC THẨM
MSSV : 13141608
SVTH2: NGUYỄN HỮU MINH ANH
MSSV : 13141005
Khóa : 2013 – 2017
Ngành : Cơng Nghệ Kỹ Thuật Điện Tử Truyền Thông
GVHD :Ths. NGUYỄN TẤN NHƢ
Tp. Hồ Chí Minh, tháng 7 năm 2017
i
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
----***----
Tp. Hồ Chí Minh, ngày 11 tháng 7 năm 2017
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên: Võ Ngọc Thẩm
Nguyễn Hữu Minh Anh
MSSV: 13141608
MSSV: 13141005
Ngành:Công Nghệ Kỹ Thuật Điện tử, Truyền thông
Lớp: 13141CLDT2
Giảng viên hƣớng dẫn: Nguyễn Tấn Nhƣ
ĐT:0983483098
Ngày nhâ ̣n đề tài: 21/02/2017
Ngày nộp đề tài: 11/7/2017
1. Tên đề tài: Lập trình Robot 3 bánh di chuyển theo
ngƣời sử dụng camera Kinect.
2. Các số liệu, tài liệu ban đầu:
Bên cạnh kiến thức cơ bản về các môn Mạch điện, Điện
tử cơ bản,Vi xử lý và Lập trình nhúng. Đồ án đã đƣợc
thực hiện trên cơ sở nghiên cứu và tham khảo những đồ
án tốt nghiệp, cơng trình nghiên cứu khoa học trong lĩnh
vực điều khiển Robot ứng dụng trên thực tế, ứng dụng
lợi ích của camera Kinect và sự hỗ trợ rất phong phú của
hệ điều hành mã nguồn mở ROS cùng việc kết hợp các
linh kiện để tạo ra một con Robot có chức năng di
chuyển theo con ngƣời nhằm ứng dụng vào thực tiễn
cuộc sống.
3. Nội dung thƣ̣c hiê ̣n đề tài:
-
Tìm hiều về động cơ servo DC.
-
Tìm hiều về board arduno DUE.
-
Tìm hiểu về camera Kinect.
ii
-
Tìm hiều về phần mềm viết chƣơng trình cho
Arduino DUE.
-
Tìm hiểu về phần mềm ROS.
-
Tìm hiều thuật tốn PID.
-
Thiết kế mạch điện bên trong.
-
Viết chƣơng trình xử lí cho board Arduino.
-
Cho robot chạy thực nghiệm.
-
Điều chỉnh cho robot hoạt động ổn định.
-
Viết quyển báo cáo đồ án tốt nghiệp.
-
Báo cáo đề tài tốt nghiệp.
4. Sản phẩm:
Một Robot 3 bánh di chuyển theo ngƣời sử dụng camera
Kinect.
TRƢỞNG NGÀNH
GIẢNG VIÊN HƢỚNG DẪN
iii
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN
Họ và tên Sinh viên: Võ Ngọc Thẩm
MSSV: 13141608
Nguyễn Hữu Minh Anh
MSSV: 13141005
Ngành: Công Nghệ Kỹ Thuật Điện Tử, Truyền Thơng
Tên đề tài: Lập trình Robot 3 bánh di chuyển theo ngƣời sử dụng camera Kinect.
Họ và tên Giáo viên hƣớng dẫn: Nguyễn Tấn Nhƣ
NHẬN XÉT
1. Về nội dung đề tài & khối lƣợng thực hiện:
………………………………………………………………………………………
…………..……………………………………………………………………………
……….………………………………………………………………………………
2. Ƣu điểm:
………………………………………………………………………………………
………………………………………………………………………………………
………………………………………………………………………………………
3. Khuyết điểm:
………………………………………………………………………………………
………………………………………………………………………………………
……........……………………………………………………………………………
4. Đề nghị cho bảo vệ hay không?
………………………………………………………………………………………
5. Đánh giá loại:
………………………………………………………………………………………...
6. Điểm:…………………………..(Bằngchữ:……………………………………..)
………………………………………………………………………………………..
Tp. Hồ Chí Minh, ngày tháng
năm 2017
Giáo viên hƣớng dẫn
(Ký & ghi rõ họ tên)
iv
CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh Phúc
*******
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Võ Ngọc Thẩm
MSSV: 13141608
Nguyễn Hữu Minh Anh
MSSV: 13141005
Ngành: Công Nghệ Kỹ Thuật Điện Tử, Truyền Thơng
Tên đề tài: Lập trình Robot 3 bánh di chuyển theo ngƣời sử dụng camera Kinect.
Họ và tên Giáo viên phản biện: ………………………………………………….
NHẬN XÉT
1. Về nội dung đề tài & khối lƣợng thực hiện:
………………………………………………………………………………………
…………..……………………………………………………………………………
……….………………………………………………………………………………
2. Ƣu điểm:
………………………………………………………………………………………
………………………………………………………………………………………
……………………………………………………………………………………....
3. Khuyết điểm:
………………………………………………………………………………………
………………………………………………………………………………………
……........…………………………………………………………………………....
4. Đề nghị cho bảo vệ hay không?
……………………………………………………………………………………
5. Đánh giá loại:
………………………………………………………………………………………...
6. Điểm………………………..(Bằng chữ:…………………………………………)
………………………………………………………………………………………
Tp. Hồ Chí Minh, ngày tháng
năm 2017
Giáo viên phản biện
(Ký & ghi rõ họ tên)
v
LỜI CẢM ƠN
Lời đầu tiên, sinh viên thực hiện đề tài xin đƣợc phép chân thành gửi lời cảm
ơn đến thầy giáo Nguyễn Tấn Nhƣ, là giảng viên hƣớng dẫn đề tài đã định hƣớng và
trao đổi những kinh nghiệm quý báu để sinh viên thực hiện những nội dung trong đề
tài một cách hoàn chỉnh.
Sinh viên thực hiện đề tài cũng xin trân trọng cảm ơn các thầy(cô) trong trƣờng
Đại Học Sƣ Phạm Kỹ Thuật nói chung và thầy(cơ) bộ mơn Điện Tử Cơng Nghiệp
nói riêng đã tận tình truyền đạt những kiến thức nền tảng để sinh viên thực hiện
hoàn thành tốt đề tài.
Sau cùng xin cảm ơn những ngƣời thân, bạn bè đã giúp đỡ để đồ án này đƣợc
hoàn thành tốt đẹp. Tuy nhiên do kinh nghiệm thiết kế hệ thống vi điều khiển, hệ
thống Robot, trình độ và kỹ năng giải quết các vấn đề phát sinh trong lúc thực hiện
còn hạn chế, nắm bắt thông tin chƣa kịp thời nên không tránh khỏi những sai sót.
Ngƣời thực hiện đề tài rất mong nhận đƣợc sự thơng cảm, góp ý và chỉ dẫn
thêm của thầy cô cùng các bạn.
Em xin chân thành cảm ơn.
Tp. Hồ Chí Minh, ngày
Sinh viên thực hiện 1
Võ Ngọc ThẩmNguyễn Hữu Minh Anh
thángnăm 2017
Sinh viên thực hiện 2
vi
TÓM TẮT
Robot đang dần thay thế con ngƣời làm những công việc nặng nhọc và trong
môi trƣờng độc hại. Việc tạo ra những robot thơng minh có thể hoạt động hoàn toàn
tự động để giúp đỡ con ngƣời trong cuộc sống hằng ngày cũng nhƣ trong nhà máy,
xí nghiệp là một nhiệm vụ cấp thiết, nhất là khi thế giới đang bƣớc vào cuộc cách
mạng công nghệ mới. Với mục đích nghiên cứu và thi cơng đƣợc sản phẩm có tính
ứng dụng cao vào thực tiễn, nhóm quyết định chọn đề tài “Lập trình Robot 3 bánh
di chuyển theo ngƣời sử dụng camera Kinect” sẽ nghiên cứu và thi công đƣợc một
Robot có chức năng di chuyển theo con ngƣời và thay thế con ngƣời bƣng bê, vận
chuyển những vật nặng nhọc. Dựa trên cơ sở thu thập dữ liệu hình ảnh bằng camera,
qua bộ xử lý để điều khiển cơ cấu chấp hành là bánh xe di chuyển. Cụ thể, trong đề
tài này nhóm chúng em sử dụng camera Kinect với gói thƣ viện Openni_tracker hỗ
trợ để đọc dữ liệu toạ độ vị trí hơng của con ngƣời truyền về bộ xử lý trung tâm là
máy tính. Tại đây máy tính sẽ tính tốn tốc độ di chuyển của robot rồi gửi dữ liệu
xuống board Arduino DUE để điều khiển cho các bánh xe chuyển động và tất cả các
quá trình này đều đƣợc thực hiện dựa trên việc ứng dụng hệ điều hành điều khiển
Robot là Robot Operating System (ROS).
Sau hơn 4 tháng thực hiện đề tài, nhóm đã thi cơng đƣợc Robot di chuyển hồn
tồn tự động theo ngƣời và hoạt động một cách ổn định. Đây là một điểm nổi bật
hơn so với các ứng dụng Robot điều khiển bằng tay trƣớc đây. Sau khi đƣợc cải tiến
về mặt cơ khí thì đề tài có ý nghĩa rất lớn trong cuộc sống, là cơ sở để phát triển ứng
dụng Robot nhằm hỗ trợ tối đa cho con ngƣời.
vii
SUMMARY
Humans are gradually replaced by robots, which do hard work in hazardous
environments. Making intelligent robots which can completely automatic operate to
help humans in daily life, even in factory is such a necessary mission, especially,
when the whole world is approaching the new technological age. With the purpose
to research and make applied products to reality, our team make decision to choose
project named “Programming 3 wheels Robot following human using Kinect
camera”, which is made to follow human, carry, transport heavy things for human.
Based on collecting image data using camera, processor controls wheels to move. In
detail, in this project, our team uses Kinect camera with Openni_tracker package to
read co-ordinate data of human head then transmit to central processing unit. The
PC will compute moving velocity of the robot, then send data to Arduino DUE
board to control the wheels to move and all the processes are implemented based on
application operating system to control the Robot (ROS).
After over 4 months implementing this project, our team made a completely
automatic operating Robot following human and it worked stably. This project is
more outstanding than the former projects. After being improved mechanics aspect,
this project is meaningful to our life, it is a base to develop Robot application in
order to assist people ultimately.
viii
MỤC LỤC
ĐỒ ÁN TỐT NGHIỆP ...............................................................................................i
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP .........................................................................ii
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN .........................................iv
PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN ............................................. v
LỜI CẢM ƠN ..........................................................................................................vi
TÓM TẮT ...............................................................................................................vii
SUMMARY .......................................................................................................... viii
MỤC LỤC ................................................................................................................ix
DANH MỤC CÁC CHỮ VIẾT TẮT .....................................................................xii
DANH MỤC CÁC BẢNG BIỂU ......................................................................... xiii
DANH MỤC CÁC HÌNH ẢNH BIỂU ĐỒ ...........................................................xiv
Chƣơng 1 ................................................................................................................... 1
TỔNG QUAN ........................................................................................................... 1
1.1. Lý do chọn đề tài ............................................................................................ 1
1.2. Tình hình nghiên cứu hiện nay....................................................................... 2
1.3. Mục tiêu ......................................................................................................... 2
1.4. Nội dung nghiên cứu ...................................................................................... 2
1.5. Giới hạn .......................................................................................................... 3
1.6. Phƣơng pháp nghiên cứu................................................................................ 3
1.7. Bố cục đồ án ................................................................................................... 3
Chƣơng 2 ................................................................................................................... 5
CƠ SỞ LÝ THUYẾT ................................................................................................ 5
2.1. Hệ điều hành Robot Operating System (ROS) .............................................. 5
2.1.1. ROS là gì? ............................................................................................... 5
2.1.2. Cấu trúc của ROS .................................................................................... 6
2.2. Phƣơng pháp chuyển ảnh từ 2D sang 3D của cảm biến Kinect ..................... 9
ix
2.2.1. Cảm biến hình ảnh (RGB-D) .................................................................. 9
2.2.2. Cảm biến đo chiều sâu (depth sensor) .................................................... 9
2.2.3. Phƣơng pháp tạo ra ảnh 3D ..................................................................... 9
2.3. Mơ hình tốn robot 3 bánh ........................................................................... 11
2.3.1. Thuật tốn transform (/tf) ...................................................................... 12
2.3.2. Mơ hình động lực học. .......................................................................... 16
2.4. Thuật tốn PID ............................................................................................. 19
Chƣơng 3 ................................................................................................................. 24
TÍNH TỐN VÀ THIẾT KẾ ................................................................................. 24
3.1. Sơ đồ khối hệ thống ..................................................................................... 24
3.2. Tính tốn và thiết kế hệ thống ...................................................................... 26
3.2.1. Khối điều khiển – Arduino DUE .......................................................... 26
3.2.2. Camera Kinect ....................................................................................... 28
3.2.3. Khối chấp hành – động cơ DC giảm tốc Faulhaber 12V ...................... 31
3.2.4. Khối cảm biến – Encoder ...................................................................... 34
3.2.5. Khối công suất – Module mạch cầu HL298 ......................................... 37
3.2.6. Khối nguồn ............................................................................................ 39
3.3. Sơ đồ nguyên lý hệ thống ............................................................................. 40
Chƣơng 4 ................................................................................................................. 42
THI CƠNG HỆ THỐNG ........................................................................................ 42
4.1. Thi cơng hệ thống......................................................................................... 42
4.1.1. Khung Robot ......................................................................................... 42
4.1.2. Các bộ phận bằng nhựa. ........................................................................ 44
4.1.3. Linh kiện cơ khí. ................................................................................... 45
4.2. LẬP TRÌNH HỆ THỐNG. ........................................................................... 46
4.2.1. Sơ đồ hệ thống các Node trong chƣơng trình. ...................................... 46
4.2.2. Lƣu đồ giải thuật của hệ thống.............................................................. 47
4.3. VIẾT TÀI LIỆU HƢỚNG DẪN SỬ DỤNG, THAO TÁC ........................ 48
4.3.1. Viết tài liệu hƣớng dẫn sử dụng. ........................................................... 48
x
4.3.2. Quy trình thao tác. ................................................................................. 49
Chƣơng 5 ................................................................................................................. 55
KẾT QUẢ SO SÁNH, THỰC NGHIỆM VÀ PHÂN TÍCH .................................. 55
5.1. Kết quả quá trình thực hiện đề tài và phân tích ........................................... 55
5.1.1. Kết quả nhận diện con ngƣời ................................................................ 55
5.1.2. Kết quả quá trình điều khiển Robot ...................................................... 66
5.2. Nhận xét và tổng hợp ................................................................................... 75
Chƣơng 6 ................................................................................................................. 77
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN .............................................................. 77
6.1. Kết luận ........................................................................................................ 77
6.2. Hƣớng phát triển .......................................................................................... 77
TÀI LIỆU THAM KHẢO ....................................................................................... 78
PHỤ LỤC ................................................................................................................ 79
xi
DANH MỤC CÁC CHỮ VIẾT TẮT
-
PC: Personal Computer
ROS: Robot Operating System
DC: Direct Current
PID: Proportional Integral Derivative
tf: Transformation
RGB: Red Green Blue
PWM: Pulse Width Modulation
RPM: Revolutions Per Minute
xii
DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1: Tác động của việc thay đổi một trong các thông số Kp, KI, KD độc lập. ..... 21
Bảng 2.2 : Thông số điều chỉnh Kp, Ki, Kd. ................................................................... 23
Bảng 3.1: Thông số kỹ thuật của Arduino Due. ............................................................ 27
Bảng 5.1: Bảng thu thập dữ liệu của Kinect trong các điều kiện môi trƣờng khác
nhau. ............................................................................................................................... 66
xiii
DANH MỤC CÁC HÌNH ẢNH BIỂU ĐỒ
Hình 1.1: Robot mang vật nặng cho ngƣời già ............................................................... 1
Hình 1.2: Robot mang hành lý di chuyển theo ngƣời dùng GPS .................................... 2
Hình 2.1: Cấu trúc tầng File system ................................................................................ 6
Hình 2.2: Phƣơng pháp chuyển từ ảnh 2D sang 3D ...................................................... 10
Hình 2.4: Chƣơng trình mơ phỏng cho hệ thống .......................................................... 13
Hình 2.5: Con rùa thứ hai di chuyển theo con rùa thứ nhất. ......................................... 14
Hình 2.6: /tf trên ROS ................................................................................................... 15
Hình 2.7: Chuyển đổi hệ trục tọa độ ............................................................................. 16
Hình 2.8: Mơ hình động lực học ................................................................................... 16
Hình 2.9: Tọa độ Robot xoay và chạy theo ngƣời ........................................................ 18
Hình 2.10: Sơ đồ các node trong hệ thống .................................................................... 19
Hình 2.11: Mơ hình bộ điều khiển PID. ........................................................................ 20
Hình 2.13: Cách tính tốn PID ...................................................................................... 22
Hình 3.2: Mặt trƣớc và mặt sau board Arduino DUE ................................................... 26
Hình 3.3: Sơ đồ chân của kit Arduino ........................................................................... 27
Hình 3.4: Cảm biến Kinect ............................................................................................ 28
Hình 3.5: Cấu tạo bên trong của Camera Kinect. ......................................................... 29
Hình 3.6: Vùng hoạt động của Kinect. .......................................................................... 29
Hình 3.7: Góc hoạt động của Kinect. ........................................................................... 30
Hình 3.8: Bộ khung xƣơng tạo ra từ Kinect. ................................................................ 31
Hình 3.9: Điều chỉnh độ rộng xung PWM .................................................................... 32
Hình 3.10: Động cơ Faulhaber 12V. ............................................................................ 33
Hình 3.11: Hình đĩa quay của encoder tuyệt đối (a) và encoder tƣơng đối (b) ........... 34
Hình 3.12: Optical Encoder ........................................................................................... 34
Hình 3.13: Hai kênh A và B lệch pha nhau trong encoder. .......................................... 35
Hình 3.14: Cách đấu nối encoder trên động cơ vào mạch ............................................ 36
Hình 3.5 Module mạch cầu HL298 ............................................................................... 37
Hình 3.16: Sơ đồ chân Module L298. ........................................................................... 38
xiv
Hình 3.17: Nguồn Acquy RL1212 cấp cho khối chấp hành. ........................................ 39
Hình 3.18: Sơ đồ nguyên lý hệ thống ............................................................................ 40
Hình 4.1: Mơ hình thực tế hệ thống .............................................................................. 42
Hình 4.2: Bản vẽ hình chiếu đứng và hình chiếu cạnh khung Robot............................ 43
Hình 4.3: Bản vẽ hình chiếu bằng khung Robot. .......................................................... 44
Hình 4.5: Các bộ phận bằng nhựa của Robot. ............................................................... 45
Hình 4.6: Các bộ phận cơ khí của Robot. ..................................................................... 46
Hình 4.7: Sơ đồ hệ thống các Node. ............................................................................. 46
Hình 4.8: Lƣu đồ giải thuật điều khiển của hệ thống. ................................................... 48
Hình 4.9: Hệ thống chạy thực tế. .................................................................................. 49
Hình 4.10: Quy trình các bƣớc thực hiện. ..................................................................... 50
Hình 4.11: Chọn board Arduino. ................................................................................... 51
Hình 2.13: Mở cổng giao tiếp giữa Arduino và máy tính ............................................. 52
Hình 4.14: Upload chƣơng trình cho board Arduino. ................................................... 52
Hình 4.15: Build chƣơng trình. ..................................................................................... 53
Hình 4.17: Hình ảnh hiện trên màn hình máy tính. ....................................................... 54
Hình 5.1: Động tác thực hiện để lấy khung xƣơng từ camera Kinect ........................... 55
Hình 5.2: Camera Kinect nhận dạng đƣợc khung xƣơng .............................................. 56
Hình 5.3: Tọa độ từng vị trí của khung xƣơng .............................................................. 56
Hình 5.4: Khoảng cách Kinect đo đƣợc trên lý thuyết.................................................. 57
Hình 5.5: Khoảng cách xa nhất camera Kinect đo đƣợc trong điều kiện trong nhà ..... 57
Hình 5.6: Khoảng cách xa nhất đo đƣợc trong điều kiện ngồi trời khơng có nắng ..... 58
Hình 5.7: Khoảng cách xa nhất Kinect đo đƣợc trong điều kiện ngồi trời có nắng .... 58
Hình 5.8: Khoảng cách xa nhất camera Kinect đo đƣợc trong điều kiện khơng có
ánh sáng .......................................................................................................................... 59
Hình 5.9: Khoảng cách gần nhất camera Kinect đo đƣợc trong điều kiện trong nhà ... 59
Hình 5.10: Khoảng cách gần nhất camera Kinect đo đƣợc trong điều kiện ngồi trời
khơng có nắng ................................................................................................................ 60
xv
Hình 5.11: Khoảng cách gần nhất camera Kinect đo đƣợc trong điều kiện ngồi trời
có nắng ........................................................................................................................... 60
Hình 5.12: Khoảng cách gần nhất camera Kinect đo đƣợc trong điều kiện khơng có
ánh sáng .......................................................................................................................... 61
Hình 5.13: Góc lớn nhất camera Kinect đo đƣợc trong điều kiện trong nhà ................ 62
Hình 5.14: Góc lớn nhất camera Kinect đo đƣợc trong điều kiện ngồi trời khơng
có nắng ........................................................................................................................... 62
Hình 5.15: Góc lớn nhất Kinect đo đƣợc trong điều kiện ngồi trời có nắng ............... 63
Hình 5.16: Góc lớn nhất Kinect đo đƣợc trong điều kiện khơng có ánh sáng .............. 63
Hình 5.17: Góc nhỏ nhất camera Kinect đo đƣợc trong điều kiện trong nhà ............... 64
Hình 5.18: Góc nhỏ nhất camera Kinect đo đƣợc trong điều kiện ngồi trời khơng
có nắng ........................................................................................................................... 64
Hình 5.19: Góc nhỏ nhất Kinect đo đƣợc trong điều kiện ngồi trời có nắng .............. 65
Hình 5.20: Góc nhỏ nhất Kinect đo đƣợc trong điều kiện khơng có ánh sáng ............. 65
Hình 5.21: Tốc độ của 2 bánh xe khi Angular_Kinect nhỏ. ......................................... 67
Hình 5.22: Tốc độ của 2 bánh xe khi Angular_Kinect lớn. .......................................... 67
Hình 5.23: Biểu đồ vận tốc khi con ngƣời đứng ở giữa Kinect. ................................... 68
Hình 5.24: Biểu đồ vận tốc khi con ngƣời đứng bên phải Kinect. ................................ 68
Hình 5.25: Biểu đồ vận tốc khi con ngƣời đứng bên trái Kinect. ................................. 69
Hình 5.26: Tốc độ của 2 bánh xe khi Kp_Angular bằng 2. .......................................... 69
Hình 5.27: Tốc độ của 2 bánh xe khi Kp_Angular bằng 6. .......................................... 70
Hình 5.28: Sự thay đổi tốc độ bánh xe khi con ngƣời di chuyển từ trái sang phải. ...... 71
Hình 5.29: Tốc độ của 2 bánh xe khi Linear_Kinect nhỏ. ............................................ 72
Hình 5.30: Tốc độ của 2 bánh xe khi Linear_Kinect lớn. ............................................. 72
Hình 5.31: Biểu đồ thể hiện tốc độ 2 bánh xe khi con ngƣời di chuyển lại gần
Robot. ............................................................................................................................. 73
Hình 5.32: Biểu đồ thể hiện tốc độ 2 bánh xe khi con ngƣời di chuyển ra xa Robot. .. 73
Hình 5.33: Tốc độ của 2 bánh xe khi Kp_Linear bằng 0.1. .......................................... 74
Hình 5.34: Tốc độ của 2 bánh xe khi Kp_Linear bằng 0.5. .......................................... 74
Hình 5.35: Sự thay đổi tuyến tính của tốc độ của bánh xe khi con ngƣời di chuyển. .. 75
xvi
Hình 5.35: Kết quả thực tế và mơ phỏng của đề tài. ..................................................... 76
xvii
Chƣơng 1
TỔNG QUAN
1.1. Lý do chọn đề tài
Thay thế con ngƣời làm việc trong môi trƣờng độc hại, nặng nhọc là nhu cầu
hết sức cần thiết đối với con ngƣời ở hiện tại và trong tƣơng lai. Chính vì vậy, ý
tƣởng tạo ra một robot có thể mang, vác, bƣng bê nhữngvật nặng giúp cho con
ngƣời trong cuộc sống hằng ngày, trong nhà máy xí nghiệp là việc làm mang tính
cấp thiết.
Robot di chuyển theongƣời là một loại Robot đƣợc ứng dụng rộng rãi. Nó có
thể vận chuyển đồ cho ngƣời già nhƣ hình 1.1 hoặc robot có thể chở em bé đi theo
sau ngƣời chăm sóc, có thể ứng dụng vào xe lăn để làm phƣơng tiện di chuyển cho
ngƣời khuyết tật mà không cần ngƣời đẩy v.v… Robot di chuyển theo ngƣời đƣợc
gắn một cảm biến Kinect để có thể nhận biết đƣợc ngƣời cần đi theo.
Hình 1.1: Robot mang vật nặng cho người già
Kinect là một thiết bị đầu vào,là cảm biến chuyển động do hãng Microsoft sản
xuất dành cho Xbox 360 và máy tính Windows. Dựa trên một webcam kiểu add-on
ngoại vi cho Xbox 360, nó cho phép ngƣời dùng điều khiển và tƣơng tác với Xbox
360 mà không cần phải dùng đến một bộ điều khiển tay cầm, thông qua một giao
diện ngƣời dùng tự nhiên bằng cử chỉ và lệnh nói.
Chức năng chính của Kinect là một công cụ để ngƣời dùng tƣơng tác với Xbox
360 bằng cử chỉ và lệnh nói. Vì lý do này, các bộ cảm biến có khả năng thu thập dữ
liệu ở độ phân giải 640x480 điểm ảnh. Với các dữ liệu chiều sâu, có thể lấy đƣợc
một khung xƣơng của ngƣời đứng phía trƣớc của cảm biến. Và với bộ xƣơng đó, nó
có thể nhận biết đƣợc cử chỉ của ngƣời sử dụng. Từ khi cảm biến Kinect ra đời đã
tạo thành một cơn sốt cho việc chế tạo Robot nhận biết ngƣời.
1
Từ những lí do trên, nhóm chúng em đã chọn đề tài:“Lập Trình Robot 3
BánhDi Chuyển Theo Ngƣời Sử Dụng Cảm Biến Kinect” để vận chuyển vật
nặng. Đề tài hoàn thành xong sẽ có ứng dụng rộng rãi trong đời sống và trong cơng
nghiệp.
1.2. Tình hình nghiên cứu hiện nay
Hơn nửa thế kỷ qua robot đã có những bƣớc phát triển và tiến hóa mạnh mẽ.
Các hƣớng nghiên cứu robot đang chuyển từ robot công nghiệp sang phát triển các
robot dịch vụ và đƣa robot hòa nhập vào các hoạt động của xã hội loài ngƣời.
Việc tạo ra một robot có thể tự động di chuyển theo con ngƣời, thay thế con
ngƣời mang vác những vật nặng nhọc trở nên rất cần thiết và hữu dụng trong cuộc
sống.
Hiện nay, đã có khá nhiều đề tài nghiên cứu về robot di chuyển theo ngƣời
nhƣ: Robot di chuyển theo ngƣời dùng cảm biến siêu âm, robot di chuyển theo
ngƣời dùng định vị GPS nhƣ hình 1.2.
Hình 1.2: Robot mang hành lý di chuyển theo người dùng GPS
Năm 2010 Microsoft cho ra mắt cảm biến Kinect với những tính năng vƣợt trội,
nhƣ khả năng tƣơng tác trực tiếp với con ngƣời. Đã có một số robot đi theo ngƣời
đƣợc tạo ra sử dụng Kinect nhƣ Turtlebot1, turtlebot2.
1.3. Mục tiêu
Lập trình cho mơ hình Robot 3 bánh hoạt động tốt đúng nhƣ đề tài đặt ra, sử
dụng cảm biến Kinect để nhận biết và xác định khung xƣơng sau đó xuất ra vị trí
con ngƣời từ đó Robot có thể di chuyển theo con ngƣời với khoảng cách xác định d.
1.4. Nội dung nghiên cứu
Trong q trình nghiên cứu đề tài, nhóm chúng em lần lƣợt thực hiện các bƣớc
cụ thể nhƣ sau:
2
Giao tiếp PC với cảm biến Kinect
- Phát hiện khung xƣơng
- Lấy đƣợc 1 điểm bất kì trên khung xƣơng
- Lấy đƣợc tọa độ của điểm bất kì đó (x,y,z)
Giao tiếp PC với Arduino
- Ros serial
- Điều khiển tốc độ động cơ
- Nghiên cứu mơ hình tốn của xe 2 bánh
- Động cơ quay với tốc độ bao nhiêu
Cho Robot chạy thực nghiệm.
Điều chỉnh cho Robot hoạt động ổn định.
Viết quyển báo cáo đồ án tốt nghiệp.
Báo cáo đề tài tốt nghiệp.
1.5. Giới hạn
Đề tài nghiên cứu Robot 3 bánh di chuyển theo con ngƣời sử dụng cảm biến
Kinect đƣợc thực hiện trong những giới hạn cụ thể nhƣ sau:
- Chỉnh sửa lại mơ hình Robot.
- Sử dụng động cơ servo DC 12V để cho Robot di chuyển.
- Robot nhận biết vật thể bằng cảm biến Kinect.
- Khoảng cách nhận biết tối đa là 4m.
- Vận tốc tối đa của robot là 0.5 m/s.
- Robot có thể chở vật nặng 3kg.
1.6. Phƣơng pháp nghiên cứu
Phƣơng pháp thu thập thông tin, tự nghiên cứu, sau đó tổng hợp và đƣa ra
phƣơng án thực hiện đề tài.
Ý tƣởng: Dùng máy tính để thu thập dữ liệu từ cảm biến Kinect, xử lý và gửi
dữ liệu điều khiển xuống board Arduino. Board Arduino sẽ nhận tín hiệu điều khiển
từ máy tính để điều khiển robot di chuyển.
1.7. Bố cục đồ án
Chƣơng 1:Tổng Quan : Đặt vấn đề liên quan đến đề tài, tìm hiểu những lý do
và sự cần thiết để thực hiện đề tài, mục tiêu hoàn thành, giới hạn cũng nhƣ những
bƣớc đi từ cơ bản đến cụ thể mà nhóm sẽ thực hiện trong quá trình nghiên cứu đề
tài.
Chƣơng 2:Cơ Sở Lý Thuyết : Giới thiệu về các kiến thức lý thuyết cơ bản về
hệ chuyển đổi từ 2D sang 3D, mơ hình tốn robot 3 bánh , PID, các giải thuật đƣợc
sử dụng trong chƣơng trình đề thực hiện đề tài.
3
Chƣơng 3:Tính Tốn và Thiết Kế: Trình bày sơ đồ khối của hệ thống, tính
tốn lựa chọn các thiết bị, linh kiện sử dụng trong đề tài. Thiết kế sơ đồ nguyên lý,
sơ đồ đi dây cho toàn hệ thống.
Chƣơng 4:Thi Cơng Hệ Thống: Tìm hiểu và chỉnh sửa mơ hình robot. Tìm
hiểu thuật tốn transform(tf) trong hệ điều hành ROS, vẽ lƣu đồ giải thuật và ứng
dụng phần mềm vào lập trình vào hệ thống.
Chƣơng 5:Kết Quả, Nhận Xét: Trình bày những kết quả đạt đƣợc, so sánh
giữa mơ phỏng và kết quả đạt đƣợc. Nhận xét, đánh giá về ƣu điểm, nhƣợc điểm
của sản phẩm cũng nhƣ khả năng ứng dụng của sản phẩm vào thực tiễn.
Chƣơng 6: Kết Luận và Hƣớng Phát Triển: Đƣa ra kết luận chung và hƣớng
phát triển, cải tiến cho đề tài để có thể ứng dụng vào thực tế trong tƣơng lai.
4
Chƣơng 2
CƠ SỞ LÝ THUYẾT
2.1. Hệ điều hành Robot Operating System (ROS)
Mạnh mẽvà ngơn ngữ trung tính, hệ điều hành Robot cung cấp một lõi tiêu
chuẩn hóa các chức năng hệ điều hành và một thƣ viện rộng lớn của hơn 2.000 gói,
cho phép các nhà nghiên cứu và kỹ sƣ tập trung vào phát minh những cái mới thay
vì tái phát minh.
2.1.1. ROS là gì?
ROS là một hệ điều hành mã nguồn mở, dùng cho các ứng dụng Robot, đƣợc
nghiên cứu đầu tiên tại Đại học Stanford và hiện nay đƣợc phát triển và mở rộng
bởi Willow Garage. Về cơ bản, ROS có những đặc tính thiết yếu của một hệ điều
hành nhƣ khả năng thực hiện các tác vụ (task) song song, giao tiếp, trao đổi dữ liệu
với nhau giữa các tác vụ, quản lý dữ liệu,…Hơn thế nữa, ROS có thể ứng dụng
trong lĩnh vực robotics, ROS hỗ trợ hầu hết các công cụ dành cho việc thu thập, xử
lý, hiển thị, điều khiển,… giúp việc nghiên cứu và phát triển Robot đƣợc dễ dàng,
thuận tiện hơn, cả trong học thuật và trong công nghiệp… ROS đƣợc xây dựng theo
kiến trúc mở, các nhà khoa học, kỹ sƣ có thể chia sẻ, mở rộng, tích hợp nhiều thƣ
viện, hệ thống khác nhau. Việc sử dụng hệ điều hành ROS giúp cho việc thử
nghiệm các ý tƣởng, thuật tốn đƣợc dễ dàng, nhanh chóng hơn. Đặc biệt, ROS
đƣợc xây dựng trên mã nguồn mở nhƣng ROS có thể kết hợp, tƣơng tác với nhiều
Robot framework khác nhƣ Player, YARP, Orocos, CARMEN, Orca, Moos,
Microsoft Robotics Studio và có tính tƣơng tác với ngƣời cao, phục vụ cho cuộc
sống thƣờng ngày của con ngƣời. ROS là hệ điều hành đƣợc phát triển chuyên dụng
cho các ứng dụng điều khiển Robot, với ROS ta có thể lập trình, biên dịch, chạy
thực thi chƣơng trình điều khiển qua nhiều máy tính và nhiều hệ thống Robot khác
nhau. Về mặt trao đổi dữ liệu và giao tiếp trong ROS: ROS tích hợp một vài chuẩn
giao tiếp khác nhau, bao gồm giao tiếp đồng bộ theo chuẩn RPC qua các services,
truyền dữ liệu bất đồng bộ qua topics và lƣu trữ dữ liệu trên Parameter Server.
Các tài nguyên đƣợc cung cấp từ ROS thể hiện đƣợc sức mạnh trong các lĩnh vực
robotics nhƣ là:
- Visualization (Đồ họa).
- Object recognition (Nhận diện vật thể).
- Navigation (Định hƣớng di động).
- Manipulgation/grasping (Thao tác/thu giữ).
5
2.1.2. Cấu trúc của ROS
Cấu trúc ROS gồm có ba tầng: Filesystem, Computation Graph và Community.
Bên cạnh đó cịn có một số khái niệm cấp cao đặc trƣng cho các ứng dụng Robot
nhƣ hệ tọa độ, phép chuyển đổi, thông điệp mơ tả.
a. Tầng ROS File system
Filesystem Level
Stacks
Stack Manifest
Packages
Manifest
Messages
Services
Code
Others
Hình 2.1: Cấu trúc tầng File system1
Filesystem: là nguồn tài nguyên ROS đƣợc lƣu trữ trên bộ nhớ hệ thống bao
gồm những thành phần nhƣ hình 2.1.
Stacks: là tập hợp các packages phối hợp với nhau để thực hiện một chức
năng cụ thể, chẳng hạn nhƣ “navigation stack” là tập hợp các packages dẫn
hƣớng cho Robot. Stack cịn mơ tả cách thức phần mềm ROS đƣợc xây dựng
và chứa thông tin về phiên bản ROS đang sử dụng.
Stack Manifests: (stack.xml) cung cấp cơ sở dữ liệu về một stack, bao gồm
điều kiện cho phép (license) và các thông số phụ thuộc vào những stack
khác.
Packages: Gói dữ liệu là đơn vị chính trong tổ chức phần mềm của hệ điều
hành ROS. Một package có thể chứa các lệnh thực thi của ROS (các nodes),
một thƣ viện phụ thuộc ROS, tập dữ liệu, các file cấu hình hoặc các dữ liệu
cần thiết khác trong hệ thống.
-
-
-
1
Nguồn: Mastering ROS for Robotics Programming Book
6
-
Manifests: là bảng kê khai thông tin dữ liệu của package (manifest.xml),
cung cấp cơ sở dữ liệu về package đó, bao gồm điều kiện cho phép
(license) và những yếu tố phụ thuộc của gói dữ liệu đó. Manifest cịn chứa
thơng tin về đặc trƣng của ngơn ngữ lập trình ví dụ nhƣ các cờ báo (flags)
của trình biên dịch.
- Message (msg) Types: Thông tin mô tả message, đƣợc lƣu trữtrong
my_package/msg/MyMessageType.msg, định nghĩa cấu trúc dữ liệu cho các
messages đƣợc gửi trong ROS.
- Service (srv) Types:Thông tin mô tả các services, đƣợc lƣu trữ trong
my_package/srv/MyServiceType.srv, định nghĩa cấu trúc dữ liệu cho các
lệnh truy cập (request) và các phản hồi (response) của các services trong
ROS.
b. Tầng ROS Computation Graph
“Computation Graph” tạm gọi là lƣợc đồ tính tốn là một mạng peer-to-peer
của ROS trong đó các dữ liệu đƣợc xử lý với nhau. Computation Graph cơ bản gồm
các thành phần: các nút (nodes), Master, Parameter Server, messages, services,
topics, và bags, tất cả các thành phần này đều cung cấp dữ liệu cho Graph bằng
những phƣơng thức khác nhau.
- Parameter Server: là một phần của Master cho phép dữ liệu đƣợc lƣu trữ
trong một vị trí trọng tâm và cho phép truy cập tới.
- Nodes: là đơn vị thực hiện các lệnh tính toán, xử lý dữ liệu. Hệ điều hành
ROS đƣợc thiết kế mơ-đun hố, các mơ-đun đƣợc xây dựng rất chi tiết và
chuyên biệt, một hệ thống điều khiển robot thƣờng sẽ bao gồm nhiều nodes.
Ví dụ, một node thu thập dữ liệu từ camera kinect, một node tính tốn và gửi
dữ liệu tính toán đến node khác… Mỗi node của ROS đƣợc xây dựng nhờ sử
dụng một ROS client library ví dụ nhƣ roscpp hoặc rospy.
- Master: Các ROS Master cung cấp tên đăng ký và tra cứu đến phần cịn lại
của Computation Graph. Nếu khơng có Master, các node sẽ khơng thể tìm
thấy nhau, trao đổi thơng tin, hay gọi services đều không thực hiện đƣợc.
- Messages: Các node trong ROS giao tiếp với nhau thông qua các message.
Một message đơn giản là một cấu trúc dữ liệu, bao gồm các trƣờng đƣợc
định kiểu. Các kiểu dữ liệu chuẩn (nhƣ integer, floating point, boolean,…) và
mảng (array) với kiểu chuẩn đều đƣợc hỗ trợ. Messages có thể bao gồm các
cấu trúc và các mảng lồng nhau (giống nhƣ kiểu structs trong ngôn ngữ C).
- Topics: Messages đƣợc định tuyến thông qua một hệ thống trao đổi
(transportsystem), trong đó phân loại các thông điệp thành 2
7