TỔNG QUAN
Đặt vấn đề
Trong bối cảnh Việt Nam đang tích cực công nghiệp hóa và hiện đại hóa để hội nhập vào sự phát triển toàn cầu, việc ứng dụng khoa học kỹ thuật công nghệ để giảm bớt sức lao động và nâng cao năng suất làm việc trở nên ngày càng quan trọng Do đó, nghiên cứu và chế tạo robot phục vụ cho khoa học kỹ thuật và đời sống đã thu hút sự quan tâm mạnh mẽ từ cộng đồng.
Cảm biến Kinect, được sản xuất bởi Microsoft và ra mắt vào tháng 11 năm 2010, là một thiết bị nhận diện chuyển động Việc kết hợp Camera Kinect với hệ điều hành ROS giúp giảm đáng kể khối lượng công việc lập trình, đặc biệt trong bối cảnh thời gian thực hiện đề tài hạn chế Do đó, nhóm đã quyết định sử dụng Camera Kinect và ROS để phát triển hệ thống, từ đó rút ngắn thời gian hoàn thành dự án.
Robot di chuyển theo người là một ứng dụng công nghệ tiên tiến, giúp hỗ trợ người già và trẻ nhỏ bằng cách vận chuyển đồ hoặc chở em bé theo sau người chăm sóc Loại robot này còn có thể được tích hợp vào xe lăn, tạo điều kiện cho người khuyết tật di chuyển một cách dễ dàng mà không cần sự trợ giúp Đặc biệt, robot sử dụng cảm biến Kinect để nhận diện và theo dõi người cần hỗ trợ, mang lại sự tiện lợi và an toàn trong cuộc sống hàng ngày.
Nhóm chúng em đã quyết định chọn đề tài tốt nghiệp “Lập Trình Robot 3 Bánh Di Chuyển Theo Người Sử Dụng Cảm Biến Kinect” nhằm vận chuyển vật nặng Đề tài này hứa hẹn sẽ có ứng dụng rộng rãi trong đời sống và ngành công nghiệp.
Mục tiêu
Sử dụng hệ điều hành ROS để lập trình điều khiển cho mô hình Robot hai bánh và một bánh tựa, giúp Robot hoạt động hiệu quả theo đề tài đã đặt ra Robot được trang bị cảm biến Kinect để nhận diện và xác định vị trí con người, từ đó có khả năng di chuyển theo con người với khoảng cách đã được xác định.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 2
Nội dung nghiên cứu
Trong quá 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:
- Tìm hiểu về động cơ servo DC
- Tìm hiểu về Board Arduino DUE
- Tìm hiểu về Camera Kinect, cách sử dụng Camera Kinect dùng thư viện Skeleton_tracker để tracking vị trí con người
- Tìm hiểu về phần mềm viết chương trình cho Arduino DUE
- Tìm hiểu về hệ điều hành Robot Operating System (ROS)
- Tìm hiểu thuật toán PID
- Chỉnh sửa và kết nối các linh kiện phần cứng lại với nhau
- Viết chương trình xử lý cho board Arduino
- Nghiên cứu, lập trình nhận dữ liệu từ Camera Kinect, xử lý truyền nhận dữ liệu từ ROS xuống board Arduino và ngược lại
- 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
Giới hạn
Đề tài nghiên cứu Robot 3 bánh di chuyển theo người sử dụng cảm biến Kinect còn nằm 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.
- Khoảng cách nhận biết tối thiểu là 0.5m.
- Vận tốc tối đa của Robot là 0.5 m/s.
- Robot có thể chở vật nặng 3kg.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 3
Bố cục
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ệ điều hành ROS, các giải thuật được sử dụng trong chương trình đề thực hiện đề tài
Chương 3: Tính Toán và Thiết Kế
Trình bày sơ đồ khối của hệ thống và tính toán lựa chọn các thiết bị, linh kiện sử dụng trong đề tài
Chương 4: Thi Công Hệ Thống
Chỉnh sửa mô hình xe và thiết kế ứng dụng phần mềm lập trình vào hệ thống
Chương 5: Kết Quả, Nhận Xét và Đánh Giá
Trình bày những kết quả đạt được và nhận xét, đánh giá về ưu điểm, nhược điểm của sản phẩm
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ủa đề tài.
CƠ SỞ LÝ THUYẾT
Hệ điều hành Robot Operating System (ROS)
ROS là một hệ điều hành mã nguồn mở dành cho ứng dụng Robot, được phát triển tại Đại học Stanford và mở rộng bởi Willow Garage Hệ điều hành này có khả năng thực hiện các tác vụ song song, giao tiếp và quản lý dữ liệu hiệu quả ROS hỗ trợ nhiều công cụ trong lĩnh vực robotics, giúp việc thu thập, xử lý và điều khiển Robot trở nên dễ dàng hơn trong cả học thuật và công nghiệp Với kiến trúc mở, ROS cho phép các nhà khoa học và kỹ sư chia sẻ và tích hợp nhiều thư viện khác nhau, tạo điều kiện thuận lợi cho việc thử nghiệm ý tưởng và thuật toán Đặc biệt, ROS có khả năng tương tác với nhiều framework Robot khác như Player, YARP, và Microsoft Robotics Studio, phục vụ cho cuộc sống hàng ngày Hệ điều hành này cho phép lập trình, biên dịch và chạy các chương trình điều khiển trên nhiều máy tính và hệ thống Robot khác nhau.
Trong ROS, việc trao đổi dữ liệu và giao tiếp được thực hiện thông qua nhiều chuẩn khác nhau Hệ thống hỗ trợ giao tiếp đồng bộ thông qua RPC qua các dịch vụ, truyền dữ liệu bất đồng bộ qua các topics, và lưu trữ thông tin trên Parameter Server.
Với mã nguồn mở, ROS thu hút sự quan tâm và đóng góp từ cộng đồng toàn cầu trong việc phát triển các dự án robotics Nhiều thư viện đã được tạo ra, cung cấp nhiều tính năng hỗ trợ cho việc xây dựng thành công nhiều mô hình robot, điển hình như Robot PR2 (Personal Robot) của Willow Garage vào năm 2006.
Bộ môn Điện tử Công nghiệp 5 giới thiệu thiết bị camera giám sát của hãng Turtobot, minh chứng cho tính ứng dụng cao và sự phát triển rộng rãi của hệ điều hành ROS.
Hình 2.1: PR2 (Personal Robot),Turtlebot Ưu điểm của ROS
Sử dụng ROS trong phát triển ứng dụng robotics giúp giảm thiểu đáng kể khối lượng công việc lập trình và thiết lập hệ thống, nhờ vào việc tận dụng nguồn tài nguyên mã nguồn mở phong phú từ cộng đồng.
Hình 2.2: So sánh khối lượng khoa học giữa việc sử dụng ROS và không dùng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 6
Hình 2.2 cho thấy khối lượng công việc kỹ thuật cơ bản (required engineering) và khối lượng nghiên cứu khoa học nòng cốt (Core Research) cần thiết để hoàn thành sản phẩm, cả khi ứng dụng và không ứng dụng.
Với hiệu quả của ROS, thời gian dành cho các công việc kỹ thuật cơ bản sẽ giảm đáng kể, từ đó tạo điều kiện cho việc nghiên cứu chuyên sâu Điều này giúp tăng cường lượng kiến thức thu được trong quá trình nghiên cứu đề tài, mang lại kết quả vượt trội.
Một số đặc điểm làm cho ROS là một hệ điều hành nên được sử dụng đó là:
- ROS là hệ điều hành mã nguồn mở
- Các tài liệu kỹ thuật, tài liệu hướng dẫn và các kênh hỗ trợ đầy đủ
Một trong những yếu tố quan trọng nhất giúp ROS trở nên mạnh mẽ là tính cộng đồng lớn mạnh Nguồn tài nguyên của ROS chủ yếu được phát triển và xây dựng từ các viện nghiên cứu và trường đại học hàng đầu, nhờ vào sự đóng góp tích cực của cộng đồng.
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à:
- Object recognition (Nhận diện vật thể)
- Navigation (Định hướng di động)
- Manipulgation/grasping (Thao tác/thu giữ)
Xu hướng phát triển của ROS
Trước đây, ROS chỉ hoạt động trên nền tảng Unix, với phần mềm chủ yếu được thử nghiệm trên Ubuntu và Mac OS X Hiện nay, cộng đồng ROS đã mở rộng hỗ trợ cho các hệ điều hành như Fedora, Gentoo, Arch Linux và nhiều nền tảng Linux khác Tuy nhiên, ROS vẫn chưa có hỗ trợ cho Microsoft Windows.
ROS là hệ điều hành mã nguồn mở, thu hút sự đóng góp của cộng đồng để phát triển hệ thống và các công cụ, thư viện đi kèm Các công cụ và thư viện hỗ trợ ROS thường được phát hành dưới dạng ROS Distribution, tương tự như các bản phân phối Linux, cung cấp một bộ phần mềm toàn diện cho người dùng.
Bộ môn Điện tử Công nghiệp 7 đang được sử dụng để xây dựng và phát triển, với sự tham gia đóng góp mã nguồn từ cộng đồng ROS ngày càng gia tăng Tuy nhiên, sự phát triển này vẫn chủ yếu tập trung ở Hoa Kỳ, Tây Âu và Nhật Bản.
The ROS structure consists of three layers: Filesystem, Computation Graph, and Community level Additionally, there are several high-level concepts that are characteristic of specific applications.
Robot như hệ tọa độ, phép chuyển đổi, thông điệp mô tả a Tầng ROS Filesystem
Manifest Messages Services Code Others
Hình 2.3: Cấu trúc tầng Filesystem
- 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.3
Stacks trong ROS là tập hợp các packages phối hợp để thực hiện chức năng cụ thể, ví dụ như "navigation stack" giúp dẫn hướng cho Robot Stacks cũng mô tả cấu trúc phần mềm ROS và chứa thông tin về phiên bản ROS đang sử dụng.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 8
Hình 2.4: Mối quan hệ của Stack và Package
Stack Manifests (stack.xml) là tài liệu cung cấp thông tin chi tiết về một stack, bao gồm các điều kiện cho phép (license) và các thông số phụ thuộc vào các stack khác.
Gói dữ liệu là đơn vị cơ bản trong cấu trúc phần mềm của hệ điều hành ROS, bao gồm các lệnh thực thi (nodes), thư viện phụ thuộc, tập dữ liệu, file cấu hình và các dữ liệu cần thiết khác cho hệ thống.
Thuật toán điều khiển PID
Để điều khiển các ngõ ra của thiết bị như động cơ, nhiệt độ, áp suất và tốc độ một cách ổn định, cần có một thuật toán điều khiển hiệu quả Thuật toán PID là một trong những giải pháp phổ biến được sử dụng trong nhiều ứng dụng khác nhau để đạt được điều này.
Bộ môn Điện tử Công nghiệp 14 thường được áp dụng để giải quyết các vấn đề liên quan đến điều khiển Bộ điều khiển PID là một công cụ hữu ích, có khả năng điều chỉnh bất kỳ ngõ ra nào, miễn là giá trị của chúng được điều chỉnh thông qua thuật toán PID.
PID stands for Proportional, Integral, and Derivative, and it is the most widely used control algorithm in automation applications This method is valued for its ability to achieve accurate results, fast response times, and minimal overshoot, making it essential for precise control in various systems.
Bộ điều khiển PID giám sát đầu ra của hệ thống và so sánh với giá trị mong muốn Khi sai số e khác không, bộ PID sẽ tính toán giá trị tác động u mới để điều chỉnh hệ thống Quá trình này diễn ra liên tục cho đến khi sai số e = 0, giúp hệ thống đạt trạng thái ổn định Nguyên lý hoạt động này được gọi là hệ thống điều khiển vòng kín (Closed Loop Control) nhờ vào việc hồi tiếp trạng thái của hệ thống về bộ điều khiển.
Hình 2.10: Mô hình bộ điều khiển PID (nguồn https://vi.wikipedia.org/wiki/PID)
- Các thành phần của bộ điều khiển PID
Thành phần tỉ lệ (K P) giúp tăng tốc độ đáp ứng của hệ thống và giảm thiểu sai số xác lập (steady-state error) mà không triệt tiêu hoàn toàn.
Thành phần tích phân (K I ) có tác dụng triệt tiêu sai số xác lập nhưng có thể làm giảm tốc độ đáp ứng của hệ
Thành phần vi phân (K D ) làm tăng độ ổn định của hệ thống, giảm độ vọt lố và cải thiện tốc độ đáp ứng của hệ thống
- Hệ PID có thể sử dụng ở ba chế độ P, PI, PD tùy vào đặc tính của hệ thống
Tỉ lệ P càng lớn sẽ giúp giảm sai số xác lập, nhưng không thể tăng tỉ lệ này đến mức vô hạn mà không có giới hạn, cụ thể là ≤ 0.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 15
Hiệu chỉnh tỉ lệ PI: Hiệu chỉnh tỉ lệ PI làm chậm đáp ứng của hệ thống, tăng độ vọt lố, giảm sai số xác lập
Hiệu chỉnh tỉ lệ PD: Hiệu chỉnh PD đẩy nhanh đáp ứng của hệ thống, giảm thời gian quá độ nhưng lại nhạy với nhiễu tần số cao
Hiệu chỉnh tỉ lệ PID: Cải thiện đáp ứng quá độ (giảm độ vọt lố, giảm thời gian quá độ), giảm sai số xác lập
Bảng 2.1: Tác động của việc thay đổi một trong các thông số K , K , K độc lập
Thời gian khởi động Quá độ Thời gian xác lập
Sai số ổn định Độ ổn định
K Giảm Tăng Thay đổi nhỏ Giảm Giảm cấp
K Giảm Tăng Tăng Giảm đáng kể Giảm cấp
K Giảm ít Tăng Giảm ít
Về lý thuyết không tác động
Kết quả của bộ điều khiển thường được đánh giá thông qua việc đo đạc đáp ứng của bộ điều khiển trong một hệ thống nhất định như hình 2.11
Hình 2.11: Đáp ứng của các hệ thống điều khiển
(nguồn https://vi.wikipedia.org/wiki/PID)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 16
Hệ thống điều khiển thể hiện sự đáp ứng theo sự thay đổi với ba phương pháp điều khiển P, PI và PID Trong số đó, bộ điều khiển PID cho kết quả tốt nhất với độ vọt lố ít và thời gian ổn định nhanh.
Bộ điều khiển PID có khả năng hoạt động trên cả dữ liệu liên tục và rời rạc, với ứng dụng chủ yếu trong các hệ thống số hiện đại PID rời rạc đang được sử dụng phổ biến trong nhiều hệ thống điều khiển Công thức của bộ PID được thể hiện qua công thức số (2.1): u(n) = e(n) + ∑ ( ) + (y(n) – y(n – 1)).
Cách tính toán của bộ PID như hình 2.12
Hình 2.12: Cách tính toán PID (nguồn https://vi.wikipedia.org/wiki/PID)
Bộ điều khiển PID có hàm truyền dạng liên tục trong công thức số (2.2):
Biến đổi Z công thức số (2.2) ta được công thức số (2.3):
Viết lại G(z) ta được công thức số (2.4):
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 17
Từ đó, ta tính được tín hiệu điều khiển u(k) khi tín hiệu vào e(k) như công thức (2.6): u(k) = G(z).e(k) =
Trong bài viết này, T đại diện cho thời gian lấy mẫu, e(k) là sai số hiện tại được tính bằng cách lấy giá trị đặt trừ đi giá trị ngõ ra Các sai số tích lũy được biểu thị bằng e(k – 1) và e(k – 2) Cuối cùng, u(k) là ngõ ra của bộ điều khiển.
, , là các thông số P, I, D của bộ điều khiển
Cách điều chỉnh các hệ số , , :
Có nhiều phương pháp để cân chỉnh hệ số Kp, Ki, KD, trong đó có cách chỉnh bằng tay và sử dụng phần mềm Một trong những phương pháp phổ biến là phương pháp Ziegler-Nichols Đầu tiên, thiết lập Kp = 1 và Ki = 0 để chỉ điều khiển theo phương pháp P Sau đó, tăng Kp dần và quan sát sự dao động của động cơ Khi động cơ bắt đầu dao động, ghi nhận giá trị Kp tại thời điểm đó là KC, đo chu kỳ dao động PC và tính toán các thông số KP.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 18
Bảng 2.2 : Thông số điều chỉnh Kp, Ki, Kd
Control Type Kp Ki Kd
PID 0.6KC 2KP / PC KPPC / 8
Giải thuật điều khiển động cơ (Differential Drive)
Differential drive là phương thức điều khiển động cơ đơn giản nhất, trong đó tốc độ quay của xe được xác định bởi sự khác biệt về tốc độ giữa hai bánh xe.
Xe Robot được điều khiển bằng hai động cơ độc lập: động cơ M1 cho bánh xe bên trái và động cơ M2 cho bánh xe bên phải Điều này cho phép bộ điều khiển dễ dàng điều chỉnh góc độ và vận tốc của xe bằng cách thay đổi tốc độ của từng động cơ.
Để di chuyển về phía trước, tốc độ của hai động cơ M1 và M2 cần được điều chỉnh bằng nhau và quay cùng chiều Để chuyển động ngược lại, chỉ cần đảo chiều quay của động cơ.
Để điều khiển chuyển động xoay phải và trái của Robot, cần cho động cơ M1 và M2 quay cùng chiều Khi Robot xoay phải, giảm tốc độ động cơ M1 và tăng tốc độ động cơ M2 Ngược lại, để Robot xoay trái, giảm tốc độ động cơ M2 và tăng tốc độ động cơ M1 Tất cả các chuyển động này được minh họa trong hình 2.13.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 19
Hình 2.13: Chuyển động của Robot.
2.3.2 Mô hình động lực học
Hình 2.14: Mô hình động lực học
Giả sử robot chuyển động không trượt với vận tốc tịnh tiến v và vận tốc góc ω không thay đổi, trong hệ tọa độ Oxy, trạng thái của xe được biểu diễn qua tọa độ tổng quát q = (x, y, θ), trong đó (x,y) là vị trí của xe và θ là góc chuyển động so với trục của bánh xe.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 20
Với: ν : vận tốc dài quanh trục bánh xe phải ν : vận tốc dài quanh trục bánh xe trái
L : khoảng cách giữa hai bánh xe
R : bán kính của bánh xe
Nếu chỉ xét trường hợp tính toán của bánh xe ngõ vào là v và ω ta có phương trình: ̇ = θ ̇ = θ ̇ (2.9)
Với là vận tốc góc
Kết hợp công thức 2.8 và 2.9 trên ta tính được ν và ν cụ thể như công thức 2.10:
Từ công thức 2.10 để tính được vr và vl ta cần tính được mà để tính chúng ta phải phân tích hình 2.15
Hình 2.15: Mô hình Robot xoay và chạy theo người
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 21
Từ hình 2.15 ta thấy : ϴD = arctan(
Theo công thức 2.9, để Robot luôn hướng theo người, cần sử dụng một số cố định Do đó, áp dụng thuật toán PID dẫn đến công thức 2.12.
Trong đó: e = ϴD - ϴ0 (ϴ0 là góc ban đầu)
Từ các công thức được trình bày ở trên ta có được một sơ đồ các node trong hệ thống như hình 2.16.
Hình 2.16: Sơ đồ các node trong hệ thống
Trong mô hình này, chúng ta sử dụng hai bộ điều khiển PID Bộ đầu tiên được tích hợp trong board Arduino để điều chỉnh tốc độ của M1 và M2, đảm bảo rằng robot di chuyển với tốc độ ổn định và chính xác Bộ thứ hai nằm trong ROS, có nhiệm vụ điều chỉnh góc quay của robot, giữ cho góc luôn bằng 0 so với mục tiêu, giúp robot luôn hướng về phía mục tiêu một cách chính xác.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 22
TÍNH TOÁN VÀ THIẾT KẾ
Thiết kế sơ đồ khối hệ thống
Hình 3.1: Sơ đồ khối hệ thống
Chức năng của từng khối:
- Khối nguồn: cung cấp nguồn điện cho các khối điều khiển, khối công suất, khối chấp hành, encoder và camera hoạt động
- Khối điều khiển: có nhiệm vụ giao tiếp truyền nhận dữ liệu với máy tính thông qua hệ điều hành ROS để điều khiển khối công suất
Khối công suất nhận tín hiệu điều khiển từ khối điều khiển và thực hiện việc khuếch đại công suất đầu ra, nhằm điều khiển động cơ một cách hiệu quả.
- Khối chấp hành: thực hiện chuyển động của Robot
- Encoder: đọc giá trị xung từ khối chấp hành và phản hồi về cho khối điều khiển
- Camera Kinect: nhận biết vị trí con người để truyền dữ liệu về máy tính xử lý
- Máy tính: là trung tâm xử lý các tín hiệu để thực hiện điều khiển chung cho cả hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 24
Hệ thống hoạt động với máy tính là trung tâm điều khiển và giám sát, nơi Camera Kinect thu thập dữ liệu vị trí của con người và truyền về máy tính Thông qua hệ điều hành ROS, máy tính xử lý tín hiệu để tính toán vận tốc và gửi xuống khối điều khiển Khối điều khiển nhận và xử lý tín hiệu, sau đó xuất tín hiệu ngõ ra cho khối công suất nhằm điều khiển khối chấp hành theo yêu cầu Cảm biến Encoder tiếp nhận dữ liệu từ khối chấp hành và so sánh với giá trị đặt ra để điều chỉnh cho hợp lý Cuối cùng, khối điều khiển truyền tín hiệu về máy tính để giám sát dữ liệu, và toàn bộ quy trình này diễn ra liên tục.
Tính toán và thiết kế hệ thống
3.2.1 Khối điều khiển – Arduino DUE
Hình 3.2: Hình mặt trước và sau của board Arduino DUE
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 25
Arduino Due là board phát triển đầu tiên trong series Arduino sử dụng nhân ARM, với CPU Atmel SAM3X8E ARM Cortex-M3 Board này được nạp bootloader tương thích với các board Arduino khác, cung cấp 54 chân kỹ thuật số vào/ra, trong đó có 12 chân hỗ trợ chức năng PWM, cùng với 12 ngõ vào tín hiệu Analog.
4 UARTs ( cổng truyền nối tiếp), xung clock sử dụng lên đến 84 MHZ với bộ nhớ Flash
Bảng mạch này được trang bị bộ nhớ SRAM 512 KB và 96 KB, cùng với bộ điều khiển DMA tích hợp hỗ trợ cho CPU Nó có 1 cổng USB OTG, 2 bộ chuyển đổi DAC, 2 giao thức TWI, một jack cấp nguồn, một jack SPI, một jack chuẩn JTAG, cùng với nút reset và nút xóa chương trình.
Hình 3.3: Sơ đồ chân của kit Arduino (nguồn http//:freetronics.com.au)
Thông số kỹ thuật của Arduino Due được trình bày trong bảng 3.1, giúp người dùng nắm rõ thông tin khi làm việc với thiết bị này Với cấu hình mạnh mẽ và khả năng xử lý nhanh, Arduino Due đáp ứng tốt nhu cầu di chuyển của Robot Ngôn ngữ lập trình dễ hiểu, khả năng lắp ráp và kết nối với các thiết bị khác cùng với sự hỗ trợ từ mã nguồn mở giúp việc tìm kiếm tài liệu trở nên đơn giản hơn Với mức giá hợp lý, kit Arduino Due hoàn toàn phù hợp với yêu cầu của nhóm, vì vậy nhóm đã quyết định chọn thiết bị này cho đề tài của mình.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 26
Bảng 3.1: Thông số kỹ thuật của Arduino Due
Vi điều khiển AT91SAM3X8E Điện áp hoạt động 3.3V Điện áp đầu vào (được đề nghị) 7 - 12V Điện áp đầu vào (giới hạn) 6 -16V
Chân I/O số 54 (trong đó 12 cho ngõ ra PWM)
Chân ngõ vào tương tự 12
Chân ngõ ra tương tự 2 (DAC)
Tổng dòng DC đầu ra trên tất cả các I/O 130mA
Dòng DC cho chân 3.3V 800mA
Dòng DC cho chân 5V 800mA
SRAM 96KB (hai Banks:64KB và 32KB)
Hình 3.4: Thiết bị Camera Kinect
Kinect là thiết bị cảm biến chuyển động do Microsoft phát triển, ra mắt lần đầu vào ngày 4 tháng 11 năm 2010 cho Xbox 360 và máy tính Windows Thiết bị này hoạt động như một webcam ngoại vi, cho phép người dùng điều khiển và tương tác với thiết bị mà không cần sử dụng tay cầm.
Bộ môn điện tử công nghiệp 27 mang đến trải nghiệm thú vị cho người chơi game trên Xbox thông qua bộ điều khiển cầm tay, sử dụng giao diện người dùng tự nhiên với cử chỉ và lệnh nói.
Sản phẩm Kinect không chỉ phục vụ cho mục đích chơi game mà còn được ứng dụng trong nghiên cứu xử lý ảnh 3D, phát hiện cử chỉ và bám theo người Tuy nhiên, trong đề tài này, Kinect được sử dụng chủ yếu cho mục đích giám sát thông thường, không đi sâu vào các chức năng như xử lý ảnh 3D hay phát hiện cử chỉ Khả năng hiểu cử chỉ của con người của Kinect dựa trên hai đặc tính chính: thông tin về độ sâu (depth map) và khả năng phát hiện cũng như bám theo đặc tính cơ thể người (body skeleton tracking).
Cấu tạo bên trong của camera Kinect
Bên trong Kinect bao gồm 1 camera RGB, cảm biến độ sâu, bộ phát hồng ngoại, một dãy các microphone và 1 động cơ điều khiển góc nâng
Hình 3.5: Cấu tạo bên trong của Camera Kinect
- Hệ thống cảm biến chiều sâu:
Bao gồm bộ phát hồng ngoại (Infrared light) và camera hồng ngoại (depth image cmos) Kích cỡ ảnh là 640 x 480 pixel, tốc dộ 30 khung hình mỗi giây
Có 2 phạm vi độ sâu:
Phạm vi mặc định có sẵn trong cả hai bộ cảm biến Kinect cho windows và các cảm biến Kinect cho Xbox 360
Phạm vi gần chỉ áp dụng cho Windowns
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 28
Kinect hoạt động hiệu quả nhất trong khoảng cách từ 1.2 đến 3.5 mét Nguyên lý hoạt động của cảm biến chiều sâu dựa trên việc chiếu các tia hồng ngoại từ bộ phát hồng ngoại đến đối tượng, sau đó camera hồng ngoại thu thập dữ liệu phản xạ.
Với góc chụp thì Kinect có vùng hoạt động là 43 0 dọc và 57 0 theo chiều ngang
Hình 3.7: Góc hoạt động của Kinect
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 29
Camera chủ yếu nhận diện ba màu cơ bản: đỏ, xanh lá và xanh da trời (RGB) Quá trình chụp hình diễn ra bằng cách ghi lại một bức ảnh màu và thực hiện phép đo độ sâu (D) Cảm biến màu kết hợp với cảm biến chiều sâu gần nhau, cho phép tạo ra bản đồ hình ảnh 3D và lưu trữ thông tin hình ảnh RGB-D.
Camera có khả năng chụp với tốc độ 12 khung hình/giây ở độ phân giải 1280 x 960 pixel và 30 khung hình/giây ở độ phân giải 640 x 480 pixel, cho thấy rằng độ phân giải thấp hơn giúp tăng tốc độ chụp và truyền hình ảnh Dữ liệu thu thập từ camera sẽ tạo ra bản đồ khung xương của người đứng trước cảm biến, cho phép xác định cử chỉ và hành động của người sử dụng.
Hình 3.8: Bộ khung xương tạo ra từ Kinect
- Động cơ, máy đo gia tốc, micro
Máy đo gia tốc: Kinect sử dụng nó để xác định người đứng trước, đứng sau trong khi đo
Động cơ của Kinect, được đặt ở chân đế, cho phép thiết bị điều chỉnh góc nhìn lên cao hoặc hạ xuống thấp, giúp thu hình ảnh ở độ cao lớn hơn so với khi không có động cơ.
Micro: bao gồm 4 micro nhỏ hoạt động như nhau ở 16 bit với tốc độ lấy mẫu là 16Khz ( số mẫu/giây)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 30
3.2.3 Khối chấp hành - Động cơ DC giảm tốc Faulhaber 12V Động cơ DC là động cơ điện hoạt động với dòng điện một chiều, nó được ứng dụng rộng rãi trong các thiết bị trong gia đình cũng như trong công nghiệp Động cơ có cấu tạo gồm hai phần: Stator là phần đứng yên và Rotor là phần quay so với stator Phần cảm (phần kích từ - thường đặt trên stator) tạo ra từ trường đi trong mạch từ, xuyên qua các vòng dây quấn của phần ứng (thường đặt trên rotor) Khi có dòng điện chạy trong mạch phần ứng, các thanh dẫn phần ứng sẽ chịu tác động bởi các lực điện từ theo phương tiếp tuyến với mặt trụ rotor, làm cho rotor quay
Tùy thuộc cách mắc cuộn dây rotor và stator mà ta có động cơ kích từ song song và động cơ kích từ độc lập
- Động cơ kích từ song song: Cuộn dây kích từ mắc nối tiếp với cuộn dây phần ứng
Động cơ kích từ độc lập có cuộn dây stator và rotor được kết nối riêng biệt, cho phép cấp nguồn độc lập Loại động cơ này có thể sử dụng nam châm vĩnh cửu thay cho cuộn dây kích từ, tạo ra động cơ điện một chiều Để điều khiển tốc độ của động cơ này, cần thay đổi điện áp cung cấp cho rotor Tuy nhiên, việc thay đổi điện áp liên tục cho rotor gặp nhiều khó khăn, vì vậy phương pháp điều xung (PWM) được áp dụng để tối ưu hóa quá trình điều khiển.
Hiện nay, hầu hết các IC đều hỗ trợ tính năng PWM, và Arduino cũng không ngoại lệ, cung cấp PWM 8 bit tương ứng với 255 xung Phương pháp PWM hoạt động bằng cách cấp nguồn cho động cơ thông qua chuỗi xung đóng mở nhanh Nguồn DC được chuyển đổi thành tín hiệu xung vuông với hai mức 0 volt và điện áp hoạt động, và tín hiệu này được cung cấp cho động cơ Khi tần số chuyển mạch đủ lớn, động cơ sẽ hoạt động với tốc độ ổn định, phụ thuộc vào momen của trục quay.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 31
Điều chỉnh tốc độ động cơ được thực hiện thông qua việc điều chế độ rộng xung, tức là thay đổi thời gian mức cao của chuỗi xung vuông cấp cho động cơ Sự điều chỉnh này ảnh hưởng đến công suất trung bình cung cấp cho động cơ, từ đó làm thay đổi tốc độ của động cơ cần điều khiển Cụ thể, khi độ rộng xung nhỏ, động cơ sẽ chạy chậm, và khi độ rộng xung lớn hơn, động cơ DC sẽ chạy nhanh hơn.
Hình 3.9: Điều chỉnh độ rộng xung PWM
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 32
Thông số kỹ thuật động cơ:
- Dòng tải tối đa: 1400 mA
- Tốc độ sau hộp giảm tốc: 120 RPM
- Chiều dài động cơ: 85mm
Động cơ Faulhaber 12V với công suất 17W được lựa chọn cho đồ án của nhóm nhờ vào việc tích hợp sẵn encoder, giúp đơn giản hóa lắp đặt và giảm kích thước mạch Công suất này cũng phù hợp với yêu cầu kéo tải, làm cho động cơ trở thành sự lựa chọn lý tưởng.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 33
Sơ đồ kết nối toàn hệ thống
Hình 3.18: Sơ đồ kết nối phần cứng của Robot
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 40
Giải thích sơ đồ kết nối:
Robot sử dụng kit điều khiển Arduino Due, sử dụng 2 module L298 để điều khiển
Để điều khiển 2 động cơ DC, sử dụng module L298, kết nối chân IN1 và IN2 với chân 8 và 9 của Arduino Due Chân OUT1 và OUT2 sẽ được kết nối với V+ và V- của động cơ tương ứng.
Để điều khiển động cơ DC bằng module L298, kết nối chân IN1 và IN2 với chân 10 và 11 của kit Arduino Due Chân OUT1 và OUT2 sẽ được kết nối với V+ và V- của động cơ Khi IN1 = 1 và IN2 = 0, động cơ sẽ quay thuận; khi IN1 = 0 và IN2 = 1, động cơ sẽ quay ngược; và khi IN1 = IN2, động cơ sẽ dừng Một module L298 có khả năng điều khiển động cơ hiệu quả.
Robot được điều khiển bởi hai động cơ DC, sử dụng hai module L298 để đảm bảo công suất hoạt động Mạch cầu H được cung cấp nguồn 5V, cho phép hoạt động ổn định Các encoder đã được cài đặt trên động cơ, với kênh A và B của encoder động cơ thứ nhất kết nối với chân 22, 23 của Arduino Due, trong khi kênh A và B của động cơ còn lại kết nối với chân 24, 25 Để điều khiển Robot, một laptop được kết nối trực tiếp với Arduino Due và Kinect, trong đó Camera Kinect thu thập tọa độ của người và truyền dữ liệu về laptop Laptop xử lý dữ liệu từ Kinect và gửi tín hiệu điều khiển xuống board Arduino Due, giúp Robot nhận biết vị trí của người và di chuyển theo.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 41
THI CÔNG HỆ THỐNG
Thi công hệ thống
Mô hình xe Robot có kích thước 38x34x34 cm, với bánh xe gắn trực tiếp vào trục động cơ để loại bỏ hiện tượng trượt Máy tính điều khiển được đặt cách mặt sàn 15 cm, trong khi camera Kinect được gắn ở độ cao 38 cm Thân xe được thiết kế rỗng để chứa mạch điều khiển, bộ xử lý Arduino, động cơ encoder và acquy cung cấp nguồn cho toàn bộ hệ thống.
Thay vì sử dụng kim loại, mô hình Robot này được thiết kế với thân bằng nhựa cứng để giảm trọng lượng, giúp dễ dàng vận chuyển các thiết bị như máy tính, camera, và mạch điều khiển Mặc dù khung Robot đã được tối ưu hóa bằng nhựa, nhưng khối lượng của nó vẫn đáng kể Robot được thiết kế để hoạt động trên bề mặt phẳng và với động cơ có tốc độ thấp, giới hạn vận tốc tối đa ở mức 1.65 vòng/s, do đó yêu cầu momen lớn và ổn định Dưới đây là bản vẽ khung Robot với các kích thước cơ bản thể hiện trên các hình chiếu đứng, bằng và cạnh, sử dụng đơn vị centimet (cm).
Hình 4.2: Bản vẽ hình chiếu đứng và hình chiếu cạnh khung Robot
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 43
Hình 4.3: Bản vẽ hình chiếu bằng khung Robot
4.1.2 Các bộ phận bằng nhựa
Các chi tiết lắp rắp khung của Robot có kích thước được mô tả như hình 4.3 và 4.4.
Hình 4.4: Các bộ phận bằng nhựa của Robot
(Tham khảo đồ án điều khiển từ xa xe Robot dùng ROS - 7/2016)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 44
Hình 4.5: Các bộ phận bằng nhựa của Robot
(Tham khảo đồ án điều khiển từ xa xe Robot dùng ROS - 7/2016)
2 động cơ DC giảm tốc Faulhaber
2 gá đỡ động cơ DC giảm tốc Faulhaber
2 bánh xe đường kính 0,95 cm
2 bánh xe đa hướng mắt trâu
Đai ốc, vít bake, kìm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 45
Hình 4.6: Các bộ phận cơ khí của Robot
(Tham khảo đồ án điều khiển từ xa xe Robot dùng ROS - 7/2016)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 46
Lập trình mô phỏng
4.2.1 Cơ sở lý thuyết mô phỏng
Hệ điều hành Robot Operating System (ROS) là một nền tảng mã nguồn mở được sử dụng rộng rãi bởi các chuyên gia và kỹ sư toàn cầu, và nó đang ngày càng phát triển mạnh mẽ.
Nó cung cấp nhiều thư viện, chương trình và ví dụ cụ thể giúp người học hiểu rõ hơn về các ứng dụng thực tế Để làm rõ đề tài “Lập trình Robot 3 bánh di chuyển theo người sử dụng cảm biến Kinect”, nhóm chúng em đã sử dụng một ví dụ mã nguồn mở từ ROS để mô phỏng và dựa vào thuật toán này làm cơ sở cho việc phát triển chương trình trên Robot.
Chương trình mô phỏng bao gồm hai con rùa hoạt động trên hệ điều hành ROS Con rùa thứ nhất được điều khiển bằng bàn phím máy tính để di chuyển, trong khi con rùa thứ hai di chuyển theo con rùa thứ nhất và duy trì khoảng cách an toàn.
Và trên thực tế nếu ứng dụng thuật toán tương tự thì Robot sẽ di chuyển theo con người và giữ khoảng cách với con người
Hình 4.7: Chương trình mô phỏng cho hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 47
Cơ sở lý thuyết cho ứng dụng này là thuật toán transformations (tf), giúp theo dõi sự dịch chuyển của các khung hình Thuật toán này tính toán tọa độ thay đổi của vật thể thứ hai so với vật thể thứ nhất, từ đó xác định tọa độ vector trong hệ tọa độ khi con rùa thứ hai di chuyển theo con rùa thứ nhất Điều này cho phép điều chỉnh góc quay và vận tốc di chuyển của con rùa thứ nhất, đảm bảo rằng con rùa thứ hai luôn di chuyển theo sát.
Từ hình 4.8, giả sử có một vật thể đầu tiên tại vị trí A với tọa độ trên trục Oxy là (xa, ya) Tọa độ này có thể được biểu diễn dưới dạng tfa = (xa - 0, ya - 0), tương đương với tọa độ của A Khi vật di chuyển đến vị trí B, tọa độ sẽ trở thành tfab = (xb - xa, yb - ya) Ngược lại, nếu tính toán tfba, ta sẽ có (xa - xb, ya - yb).
Camera Kinect được gắn trên Robot để theo dõi vị trí con người Khi sử dụng /tf để tính toán tọa độ thay đổi, tọa độ này được lấy từ hệ trục tọa độ của Camera Kinect, nhưng thực tế hệ tọa độ này không giống với hệ tọa độ thực Để có kết quả chính xác theo hệ tọa độ thực, cần phải quy đổi hệ trục tọa độ này.
Ta giả sử hệ trục tọa độ của Kinect là Oxkykzk và hệ trục tọa độ thực là Oxwywzw như hình bên dưới:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 48
Hình 4.9: Chuyển đổi hệ trục toạ độ
Hệ trục tọa độ của Camera Kinect được biểu diễn bằng (xk, yk, zk), nhưng khi chuyển đổi sang hệ trục thực, tọa độ sẽ trở thành: xw = -xk, yw = zk, zw = yk Khi Kinect nhận diện tọa độ của hông con người là (xk, yk, zk), tọa độ trong hệ trục thực sẽ được chuyển đổi thành (-xk, zk, yk) Để điều khiển Robot, chúng ta sẽ sử dụng tọa độ thực để thực hiện các phép tính cần thiết.
4.2.2 Lưu đồ giải thuật mô phỏng
Việc điều khiển Robot thực tế phức tạp hơn nhiều so với mô phỏng Kết quả mô phỏng không chỉ là hình ảnh của mô hình thực tế mà còn là cơ sở để thực hiện mô hình đó Để hiểu rõ hơn về chương trình mô phỏng, chúng ta có thể tham khảo lưu đồ giải thuật liên quan.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 49
Khởi tạo hệ thống Cho phép môi trường ROS hoạt động
Chạy node turtlesim (gọi hai con rùa turtle1 và turtle2)
Turtle2 di chuyển theo Turtle1 và giữ khoảng cách D
Để thực hiện chương trình mô phỏng trên ROS, trước tiên cần khởi tạo hệ thống để môi trường ROS hoạt động Sau khi viết và biên dịch chương trình, chúng ta tiến hành chạy mô phỏng Kết quả là hai con rùa sẽ xuất hiện trên màn hình giao diện, đứng yên với tọa độ ban đầu khác nhau và giữ khoảng cách nhất định.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 50
Hình 4.11: Hai con rùa xuất hiện
Điều khiển con rùa thứ nhất bằng bàn phím máy tính thông qua các nút di chuyển tới, lui, sang trái và sang phải Khi con rùa thứ nhất di chuyển, con rùa thứ hai sẽ theo sau bằng cách điều chỉnh góc quay và vận tốc, đồng thời giữ khoảng cách nhất định với con rùa thứ nhất.
Hình 4.12: Con rùa thứ hai di chuyển theo con rùa thứ nhất
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 51
Để di chuyển con rùa thứ hai theo con rùa thứ nhất, ta cần sử dụng thuật toán /tf Nếu chỉ tính toán /tf(O2O1), con rùa thứ hai sẽ chồng lên con rùa thứ nhất Do đó, cần tính thêm /tf(O1O’2) để đảm bảo con rùa thứ hai luôn cách con rùa thứ nhất một khoảng cách D Khi không còn nhấn các phím điều chỉnh, cả hai con rùa sẽ dừng lại và giữ đúng khoảng cách yêu cầu.
4.2.3 Kết quả quá trình mô phỏng
Sau khi khởi tạo ROS và chạy chương trình mô phỏng thì con rùa đầu tiên xuất hiện
Hình 4.13: Con rùa thứ nhất xuất hiện
Hình 4.14: Con rùa thứ hai xuất hiện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 52
Khi điều khiển các nút nhấn thì cả hai con rùa di chuyển và giữ khoảng cách cố định
Hình 4.15: Hai con rùa di chuyển
Hình 4.16: Hai con rùa di chuyển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 53
Lập trình hệ thống
4.3.1 Sơ đồ hệ thống các Node trong chương trình
Hình 4.17: Sơ đồ hệ thống các Node
Giải thích chức năng từng Node:
Trong hệ thống ROS, ROS MASTER là thành phần quan trọng để đảm bảo hoạt động của toàn bộ hệ thống Nó đóng vai trò là trung tâm điều khiển, giúp các Node nhận diện và giao tiếp với nhau Trước khi tham gia vào hệ thống, tất cả các Node cần phải đăng ký sự có mặt của mình với ROS MASTER.
- Node Skeleton_maker: thu thập dữ liệu tọa độ hông của con người từ Kinect đưa về hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 54
The Node Human_head_detector registers with ROS_master to obtain coordinates from the Skeleton_maker node, facilitating the conversion of Kinect coordinates into real-world coordinates and transforming the initial position of Kinect to the location of the person.
- Node Human_head_transformer: đăng kí với ROS_master nhận /tf từ node
Human_head_detector và /tf một lần nữa để Rorot có thể chạy cách người là 0.5 (m)
The Node Target_tracker registers with ROS_master to calculate the speeds V_left and V_right based on parameters obtained from the node, and it displays these speeds on the screen.
Rosserial_python là một node trung gian cho phép trao đổi dữ liệu hai chiều giữa kit Arduino và máy tính Để thực hiện chức năng này, cần lập trình giao tiếp qua cổng nối tiếp trên máy tính, nhưng ROS đã hỗ trợ giao tiếp này thông qua gói rosserial, hiện chỉ áp dụng cho dòng vi điều khiển của Arduino.
The Velocity_node registers with the ROS master to receive data for V_left and V_right from other nodes, enabling it to output PWM signals that control the left and right wheels of the robot Additionally, it reads encoder pulses to feed into a PID controller for precise motor speed adjustment.
4.3.2 Lưu đồ giải thuật của hệ thống. Đề tài “Lập trình Robot 3 bánh di chuyển theo người sử dụng cảm biến Kinect” hoạt động dựa trên sự điều khiển của hệ điều hành ROS Cụ thể, sử dụng cảm biến Kinect để theo dõi và xác định toạ độ hông người rồi gửi về hệ thống, máy tính đóng vai trò trung tâm sử dụng hệ điều hành ROS để xử lý toạ độ gửi về và chuyển thành toạ độ thực sau đó tính toán ra các giá trị vận tốc và góc quay rồi gửi xuống bộ điều khiển Arduino Ở đây, Arduino tiếp tục sử dụng hệ điều hành ROS cho Arduino để nhận dữ liệu vận tốc và góc quay vừa được máy tính gửi xuống rồi xử lý xuất dữ liệu ra cho bộ điều khiển công suất điều khiển cho Robot di chuyển theo con người Trong quá trình di chuyển Encoder đọc giá trị về cho Arduino xử lý và gửi ngược lại về máy tính trung tâm điều khiển để điều chỉnh tốc độ và góc quay cho phù hợp Quá trình được thực hiện liên tục trong suốt quá trình di chuyển của con người
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 55
Quá trình này được thể hiện qua lưu đồ như hình bên dưới:
Node camera kiểm tra có người không? Đọc tọa độ human- hip
Kiểm tra node rosserial In ra thông báo
Gửi V_left và V_right xuống Arduino
PID cân chỉnh V_left và V_right
Ngắt timer 0.1s đếm xung Encoder
Tính toán sai lệch e = tốc độ đặt - tốc độ hiện tại.
Xuất PWM V_left và V_right cho động cơ
Gọi node chuyển đổi về hệ tọa độ thực.
Hình 4.18: Lưu đồ giải thuật điều khiển của hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 56
Viết tài liệu hướng dẫn sử dụng, thao tác
4.4.1 Viết tài liệu hướng dẫn sử dụng.
Bước 1: kết nối Camera Kinect vào khung Robot, đặt máy tính điều khiển lên
Robot và kết nối Arduino, Camera Kinect vào máy tính
Bước 2: đặt Robot vào vị trí di chuyển, tránh ánh nắng quá cao và sàn di chuyển phải bằng phẳng
Bước 3: cài đặt các thông số cho hệ thống và tiến hành chạy chương trình Bước 4: con người di chuyển để Robot di chuyển theo
Hình 4.19: Hệ thống chạy thực tế
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 57
Sơ đồ các bước thực hiện chạy xe Robot:
Kết nối camera kinect và board Arduin Due với máy tính Đổ chương trình vào board arduino Due
Trên máy tính mở một Treminal mới (ctrl+alt+t)
Vào không giao làm việc: cd catkin_ws
Khởi tạo hệ thống chạy trong shell bằng lệnh Source /devel/setup.bash
Chạy các hệ thống bằng câu lệnh Roslaunch hunman_tracker human_tracker_demo.launch
Hình 4.20: Quy trình các bước thực hiện.
Kết nối Camera Kinect vào khung Robot và cắm cổng giao tiếp USB của Kinect vào máy tính Tương tự cho board Arduino
Sau đó ta mở chương trình của Arduino lên và chọn Board Arduino Vào Tools
Board “Arduino Due (Programming Port)” Arduino Due (Programming Port) và Tiếp tục chọn cổng giao tiếp giữa Arduino và máy tính Vào Tools Port
“/dev/ttyACM(Arduino Due(Programming Port)) như hình bên dưới
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 58
Hình 4.22: Chọn cổng giao tiếp cho board Arduino
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 59
Sau khi chọn board và chọn cổng giao tiếp ta tiến hành đổ chương trình cho board Arduino Due
Hình 4.23: Upload chương trình cho board Arduino
Sau khi hoàn tất việc chạy chương trình cho Arduino, bước tiếp theo là khởi động hệ thống Bạn cần mở một terminal mới và điều hướng đến thư mục làm việc chứa chương trình bằng lệnh: cd catkin_ws, sau đó thực hiện xây dựng lại chương trình bằng lệnh catkin_make.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 60
Sau khi hoàn tất việc xây dựng chương trình, bạn cần khởi tạo môi trường cho hệ thống hoạt động trong shell bằng lệnh: source /devel/setup.bash Tiếp theo, để khởi động hệ thống, hãy sử dụng lệnh: roslaunch human_tracker human_tracker_demo.launch.
Hình 4.25: Setup môi trường và chạy hệ thống
Sau khi chạy câu lệnh hệ thống sẽ khởi động
Hình 4.26: Hình ảnh hiện trên màn hình máy tính
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 61
Khi có người đứng trước camera trên màn hình máy tính sẽ xuất hiện khung xương và robot bắt đầu di chuyển theo người
Hình 4.27: Khi có người trước Camera Kinect
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 62