Lý do chọn đề tài
Việc thay thế con người trong môi trường làm việc độc hại và nặng nhọc đang trở thành nhu cầu thiết yếu trong hiện tại và tương lai Do đó, việc phát triển robot có khả năng mang vác và bưng bê các vật nặng để hỗ trợ con người trong cuộc sống hàng ngày cũng như trong các nhà máy, xí nghiệp là một nhiệm vụ cấp bách và cần thiết.
Robot di chuyển theo người là một ứng dụng phổ biến, giúp vận chuyển đồ cho người già hoặc chở em bé theo sau người chăm sóc Loại robot này có thể được tích hợp vào xe lăn, hỗ trợ người khuyết tật mà không cần người đẩy Đặ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ợ.
Hình 1.1: Robot mang vật nặng cho người già
Kinect là thiết bị đầu vào và cảm biến chuyển động do Microsoft sản xuất, được thiết kế cho Xbox 360 và máy tính Windows Nó hoạt động như một webcam kiểu add-on cho Xbox 360, cho phép người dùng điều khiển và tương tác một cách trực quan với hệ thống.
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
Cảm biến Kinect cho phép nhận diện 360 độ thông qua cử chỉ và lệnh nói, với độ phân giải 640x480 điểm ảnh Nhờ vào dữ liệu chiều sâu, cảm biến có thể tạo ra khung xương của người đứng trước, từ đó nhận biết cử chỉ của người sử dụng Sự ra đời của Kinect đã tạo nên một cơn sốt trong việc phát triển robot có khả năng nhận diện con người.
Từ những lí do trên, nhóm chúng em đã chọn đề tài:“Lập Trình Robot 3
Bánh di chuyển theo người sử dụng cảm biến Kinect được thiết kế để vận chuyển các vật nặng, mang lại nhiều ứng dụng hữu ích trong đời sống và ngành công nghiệp.
Tình hình nghiên cứu hiện nay
Trong hơn nửa thế kỷ qua, robot đã trải qua sự phát triển và tiến hóa mạnh mẽ Xu hướng nghiên cứu hiện nay đang chuyển từ robot công nghiệp sang việc phát triển robot dịch vụ, nhằm tích hợp chúng vào các hoạt động của xã hội loài người.
Việc phát triển robot có khả năng tự động di chuyển theo con người để thay thế sức lao động trong việc mang vác các vật nặng đang trở nên ngày càng cần thiết và hữu ích trong cuộc sống hiện đại.
Hiện nay, nhiều nghiên cứu đã được thực hiện về robot di chuyển theo người, bao gồm các loại robot sử dụng cảm biến siêu âm và robot dựa trên định vị GPS.
Hình 1.2: Robot mang hành lý di chuyển theo người dùng GPS
Năm 2010, Microsoft đã giới thiệu cảm biến Kinect với khả năng tương tác trực tiếp với con người, mở ra nhiều ứng dụng mới trong công nghệ Một số robot di động như Turtlebot1 và Turtlebot2 đã được phát triển sử dụng Kinect, cho thấy tiềm năng của công nghệ này trong lĩnh vực robotics.
Mục tiêu
Lập trình mô hình Robot 3 bánh sử dụng cảm biến Kinect giúp nhận diện và xác định khung xương của con người Robot sẽ xác định vị trí của người dùng và di chuyển theo họ với khoảng cách xác định d, đảm bảo hoạt động hiệu quả theo mục tiêu đề ra.
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:
Giao tiếp PC với cảm biến Kinect
- 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
- Điều khiển tốc độ động cơ
- Nghiên cứu mô hình toá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.
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.
Phương pháp nghiên cứu
Phương pháp thu thập thông tin và tự nghiên cứu sẽ được áp dụng để tổng hợp và đề xuất phương án thực hiện đề tài Ý tưởng chính là sử dụng máy tính để thu thập dữ liệu từ cảm biến Kinect, sau đó xử lý và gửi tín hiệu điều khiển xuống board Arduino Board Arduino sẽ nhận tín hiệu từ máy tính để điều khiển robot di chuyển một cách chính xác.
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 toá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
Chương 3:Tính Toán và Thiết Kế: Trình bày sơ đồ khối của hệ thống, tính toá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 toá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
Hệ điều hành Robot Operating System (ROS)
Hệ điều hành Robot mang đến một nền tảng mạnh mẽ với ngôn ngữ trung tính, bao gồm một lõi tiêu chuẩn hóa các chức năng hệ điều hành và hơn 2.000 gói thư viện phong phú Điều này giúp các nhà nghiên cứu và kỹ sư tập trung vào việc phát minh ra những sáng tạo mới mà không phải mất thời gian tái phát minh.
ROS là hệ điều hành mã nguồn mở dành cho ứng dụng Robot, được phát triển từ nghiên cứu tại Đại học Stanford và hiện nay do Willow Garage mở rộng Với các tính năng như thực hiện tác vụ song song, giao tiếp và quản lý dữ liệu, ROS hỗ trợ hiệu quả cho việc nghiên cứu và phát triển robot trong cả học thuật và công nghiệp Kiến trúc mở của 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, giúp thử nghiệm ý tưởng và thuật toán trở nên dễ dàng hơn ROS tương thích với nhiều framework robot khác như Player, YARP và Microsoft Robotics Studio, đồng thời hỗ trợ việc lập trình, biên dịch và chạy chương trình điều khiển trên nhiều hệ thống robot khác nhau Hệ thống giao tiếp của ROS bao gồm các chuẩn như RPC qua services, truyền dữ liệu qua topics và lưu trữ trên Parameter Server, thể hiện sức mạnh của nó trong lĩnh vực robotics.
- Object recognition (Nhận diện vật thể)
- Navigation (Định hướng di động)
- Manipulgation/grasping (Thao tác/thu giữ)
Cấu trúc của ROS bao gồm ba tầng chính: Filesystem, Computation Graph và Community Ngoài ra, 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 và thông điệp mô tả Tầng ROS Filesystem đóng vai trò quan trọng trong việc tổ chức và quản lý các tệp tin liên quan đến dự án robot.
Manifest Messages Services Code Others
Hình 2.1: Cấu trúc tầng File system 1
- 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 trong ROS là tập hợp các packages phối hợp để thực hiện chức năng cụ thể, như “navigation stack” giúp dẫn hướng cho Robot Nó 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.
Stack Manifests (stack.xml) là một cơ sở dữ liệu quan trọng về một stack, cung cấp thông tin về đ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ốt lõi 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.
1 Nguồn: Mastering ROS for Robotics Programming Book
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 cấp phép (license) và các yếu tố phụ thuộc Ngoài ra, manifest còn chứa thông tin về đặc trưng của ngôn ngữ lập trình, chẳng hạn 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
The article describes the various types of services (srv) in ROS, specifically detailing how they are defined in the my_package/srv/MyServiceType.srv file This file outlines the data structure for both the request and response commands of services, which are integral to the ROS Computation Graph layer.
A Computation Graph, also known as a computation diagram, is a peer-to-peer network within the Robot Operating System (ROS) where data is processed collaboratively The fundamental components of a Computation Graph include nodes, a Master, Parameter Server, messages, services, topics, and bags, each contributing data to the graph through various methods.
- 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ế theo mô-đun hóa, với các mô-đun được xây dựng chi tiết và chuyên biệt Hệ thống điều khiển robot thường bao gồm nhiều node khác nhau.
Trong hệ thống ROS, mỗi node thực hiện các chức năng khác nhau, như một node thu thập dữ liệu từ camera Kinect và một node khác tính toán và gửi dữ liệu đó đến node khác Các node này được phát triển thông qua các thư viện khách hàng của ROS, chẳng hạn như roscpp hoặc rospy.
Các ROS Master đóng vai trò quan trọng trong việc cung cấp tên đăng ký và tra cứu cho toàn bộ Computation Graph Nếu không có Master, các node sẽ không thể kết nối, trao đổi thông tin hoặc gọi các dịch vụ một cách hiệu quả.
- Messages: Các node trong ROS giao tiếp với nhau thông qua các message
Một message là một cấu trúc dữ liệu đơn giản, bao gồm các trường được định kiểu với các kiểu dữ liệu chuẩn như integer, floating point, boolean, và hỗ trợ cả mảng Các messages có thể chứa các cấu trúc và mảng lồng nhau, tương tự 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
Trong hệ thống ROS, có hai khái niệm chính là publish (đưa tin) và subscribe (đăng ký nhận thông tin) Một node gửi thông điệp đến một topic, với tên topic quy định nội dung của thông điệp Các node liên quan đến loại dữ liệu cụ thể sẽ đăng ký nhận tin từ topic tương ứng Mỗi topic có thể có nhiều publishers và subscribers, và một node có thể gửi và nhận thông tin từ nhiều topic khác nhau Điều đặc biệt là các nguồn truyền tin và đối tượng nhận tin không cần biết về sự tồn tại của nhau, giúp tách biệt nguồn thông tin và bộ phận sử dụng thông tin Mỗi topic được xem như một kênh truyền thông điệp có kiểu định sẵn, cho phép các node kết nối để gửi và nhận thông điệp miễn là chúng cùng kiểu với topic đó.
Hệ thống ROS cho phép tách rời nguồn cung cấp thông tin và đối tượng nhận thông tin thông qua thuộc tính "name" Thuộc tính "name" đóng vai trò quan trọng trong việc thiết lập mối quan hệ giữa các thành phần trong hệ thống.
Phương pháp chuyển ảnh từ 2D sang 3D của cảm biến Kinect
Với kết cấu đặt biệt của mình, cảm biến Kinect sẽ cho ta những hình ảnh 3D
Việc tìm hiểu phương pháp chuyển đổi giữa ảnh 2D và 3D rất quan trọng, vì nó giúp xác định tọa độ của vật thể Từ đó, chúng ta có thể tính toán khoảng cách giữa vật thể và cảm biến một cách chính xác.
Cảm biến Kinect bao gồm một camera với chức năng chính là nhận biết ba màu cơ bản: đỏ, xanh lá cây và xanh da trời (RGB) Quá trình chụp ảnh của camera bao gồm việc ghi lại một bức ảnh màu (RGB) và thực hiện phép đo độ sâu (D) Sự kết hợp giữa cảm biến hình ảnh và cảm biến chiều sâu cho phép tạo ra hình ảnh 3D thông qua việc sáp nhập bản đồ Thông tin ảnh RGB-D sau đó được lưu trữ để sử dụng sau này.
Dữ liệu sâu thu thập được sẽ tạo ra một bản đồ khung xương của người đứng trước cảm biến, từ đó giúp xác định cử chỉ và hành động của người sử dụng.
2.2.2 Cảm biến đo chiều sâu (depth sensor)
Máy phát tia hồng ngoại tạo ra tia hồng ngoại trong vùng hoạt động của nó, từ đó hình thành cấu trúc các điểm sáng trên bề mặt vật thể Camera hồng ngoại sẽ thu thập hình ảnh phản chiếu của cấu trúc này, mang lại kết quả là một hình ảnh vật thể với các mức độ chiều sâu khác nhau.
2.2.3 Phương pháp tạo ra ảnh 3D
Cảm biến hình ảnh RGB-D thực hiện chụp ảnh RGB và quét 3D với kích thước ảnh RGB mặc định là 640x480 pixel và tốc độ chụp 30fps Bằng cách kết hợp với camera đo độ sâu, cảm biến này tạo ra ảnh có độ sâu (3D) thông qua kỹ thuật ánh sáng có cấu trúc Kỹ thuật này chiếu một mô hình các điểm ảnh lên vùng hoạt động, cho phép hệ thống quan sát tính toán độ sâu của đối tượng khi các điểm ảnh gặp bề mặt khác nhau.
Hình 2.2: Phương pháp chuyển từ ảnh 2D sang 3D 2
- Phác thảo bản đồ => định hướng bề mặt
Camera tính toán tổng quát giúp xác định vị trí và hướng của đối tượng thông qua việc kết hợp kiểm tra hướng và kiểm tra các đỉnh Quá trình này diễn ra liên tục với sự sắp xếp lặp đi lặp lại nhằm tạo ra những bức ảnh tốt nhất.
- Kết hợp dữ liệu sâu từ cảm biến đã biết sẽ đƣa ra biểu diễn một diện tích duynhất của không gian xung quanh máy ảnh
Cảm biến chuyển động theo dõi một bề mặt từ các vị trí khác nhau, giúp phát hiện những khoảng trống hoặc lỗ, nơi mà dữ liệu độ sâu không có trong hình ảnh.
Kinect có khả năng lấp đầy các khoảng trống bằng cách di chuyển cảm biến xung quanh đối tượng, giúp xác định những điểm chưa được nhận diện phía sau Bề mặt liên tục của đối tượng được cải thiện nhờ vào dữ liệu có độ phân giải cao.
Khối lượng tái tạo từ cảm biến dò tia (Raycast) tạo ra một đám mây điểm với độ tô bóng cao, từ đó kết hợp lại để hình thành hình ảnh 3 chiều rõ nét.
Dò tia là một kỹ thuật quan trọng trong đồ họa máy tính, cho phép tạo ra hình ảnh bằng cách theo dõi đường đi của ánh sáng qua các điểm ảnh trên tấm kính ảnh Kỹ thuật này mang lại khả năng tạo ra hình ảnh với độ chính xác cao và chi tiết tuyệt vời, giúp nâng cao chất lượng hình ảnh trong các ứng dụng như mô phỏng ánh sáng và thiết kế 3D.
2 Báo cáo tìm hiểu cảm biến Kinect, trường đại học Công Nghệ
11 mức độ rấtcao như ảnh thật Thường thật hơn các phương pháp kết xuất dạng quét dòng thông thường 3
Xử lý ảnh là một công đoạn quan trọng khi làm việc với hình ảnh RGB và dữ liệu độ sâu, thường gặp phải vấn đề nhiễu và các lỗ do độ phân giải máy ảnh kém Để khắc phục tình trạng này, có nhiều giải pháp khác nhau, trong đó một phương pháp đơn giản nhưng hiệu quả là tính giá trị trung bình của các điểm ảnh xung quanh các lỗ hổng.
Mô hình toán robot 3 bánh
Robot di chuyển nhờ vào hai động cơ độc lập: động cơ M1 gán cho bánh xe bên trái và động cơ M2 cho bánh xe bên phải Sự độc lập này cho phép bộ điều khiển dễ dàng điều chỉnh góc độ và vận tốc bằng cách thay đổi tốc độ của từng động cơ.
Để đạt được chuyển động về phía trước, tốc độ của động cơ M1 và M2 cần phải bằng nhau và quay cùng chiều Để chuyển động về phía sau, 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 điều chỉnh tốc độ của các động cơ M1 và M2 Khi robot xoay phải, giảm tốc độ động cơ M1 và tăng tốc độ động cơ M2 Ngược lại, khi robot xoay trái, giảm tốc độ động cơ M2 và tăng tốc độ động cơ M1.
Tất cả chuyển động đƣợc mô tả ở hình 2.3:
3 Theo http://vi.wikipedia.org
Robot đi tới Robot đi lui
Robot rẽ trái Robot rẽ phải
Hình 2.3: Chuyển động của robot
Hệ điều hành Robot Operating System (ROS) là một nền tảng mã nguồn mở được nhiều chuyên gia và kỹ sư trên toàn thế giới sử dụng và phát triển ROS 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 tiễn Để minh họa cho đề 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 tôi đã sử dụng một ví dụ có sẵn từ mã nguồn mở ROS để mô phỏng và áp dụng thuật toán này làm cơ sở cho việc thực hiệ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 sẽ di chuyển theo con rùa thứ nhất và duy trì khoảng cách nhất định.
Robot sẽ di chuyển theo con người và duy trì khoảng cách an toàn, nhờ vào việc áp dụng thuật toán tương tự như con rùa thứ nhất.
Hình 2.4: Chương trình mô phỏng cho hệ thống
Một trong những cơ sở lý thuyết quan trọng cho ứng dụng này là thuật toán transformations (tf), cho phép theo dõi liên tục sự dịch chuyển của các khung hình Thuật toán tf 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 giúp xác định vị trí của con rùa thứ nhất để điều chỉnh góc quay và vận tốc di chuyển, đảm bảo rằng con rùa thứ hai luôn di chuyển theo sát con rùa thứ nhất.
Hình 2.5: Con rùa thứ hai di chuyển theo con rùa thứ nhất
Khi con rùa đầu tiên di chuyển, con rùa thứ hai sẽ thay đổi góc quay và vận tốc để theo sau, nhưng vẫn giữ khoảng cách nhất định với con rùa đầu tiên.
Để con rùa thứ hai di chuyển theo con rùa thứ nhất mà không bị chồng lên nhau, cần sử dụng thuật toán /tf Nếu chỉ tính toán /tf(O2 O1), con rùa thứ hai sẽ nằm chồng lên con rùa thứ nhất Do đó, cần tính thêm /tf(O1 O’2) để đảm bảo con rùa thứ hai luôn duy trì khoảng cách an toàn với con rùa thứ nhất.
D Khi không còn nhấn các phím điều chỉnh thì con rùa thứ nhất dừng lại và con rùa thứ hai cũng dừng lại và nằm ở vị trí đúng với khoảng cách yêu cầu
Từ hình 2.6, giả sử con rùa thứ nhất (turtle1) có tọa độ trên trục Oxy là (𝑿 𝒕𝒖𝒓𝒕𝒍𝒆𝟏, 𝒀 𝒕𝒖𝒓𝒕𝒍𝒆𝟏) Tọa độ của con rùa thứ hai (turtle2) được xác định là (𝑿 𝒕𝒖𝒓𝒕𝒍𝒆𝟐, 𝒀 𝒕𝒖𝒓𝒕𝒍𝒆𝟐), từ đó ta có thể suy ra tfturtle2 là (x turtle2 – 0, y turtle2 - 0), hay viết gọn là (x turtle2, y turtle2) Khi vật di chuyển đến vị trí của turtle1, tọa độ tfturtle2,turtle1 sẽ là (x turtle1 – x turtle2, y turtle1 – y turtle2) Ngược lại, nếu tính toán tfturtle1,turtle2, ta sẽ có (x turtle2 – x turtle1, y turtle2 – y turtle1).
Camera Kinect được gắn trên Robot nhằm theo dõi vị trí con người, tuy nhiên, khi sử dụng /tf để tính toán tọa độ, hệ tọa độ của Camera Kinect không hoàn toàn giống với hệ tọa độ thực Để đạt đượ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 độ của Kinect (Ox k, y k, z k) sang hệ tọa độ thực (Ox w, y w, z w).
Hình 2.7: Chuyển đổi hệ trục tọa độ
Hệ trục tọa độ của Camera Kinect được biểu diễn là (x k, y k, z k), nhưng khi chuyển đổi sang hệ trục thực, các tọa độ sẽ được điều chỉnh thành x w = -x k, y w = z k, z w = y k Khi Kinect ghi nhận tọa độ của đầu người là (x k, y k, z k), tọa độ thực sẽ trở thành (-x k, z k, y k) Do đó, để điều khiển Robot, chúng ta cần sử dụng tọa độ thực để thực hiện các phép tính.
2.3.2 Mô hình động lực học
Hình 2.8: Mô hình động lực học
Giả sử robot di chuyển mà không bị 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 mô tả 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 Phương trình mô tả trạng thái này được thể hiện qua công thức (2.1).
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:
Với 𝜔 là vận tốc góc
Kết hợp công thức 2.1 và 2.2 trên ta tính đƣợc ν 𝑟 và ν 𝑙 cụ thể nhƣ công thức 2.3:
Từ công thức 2.3 để 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.9
Hình 2.9: Tọa độ Robot xoay và chạy theo người
Từ hình 2.9 ta thấy: ϴ D = arctan( 𝑌 21 − 𝑌 11
Theo công thức 2.2, ta có 𝜃 = 𝜔, trong đó 𝜔 là một số cố định để Robot có thể quay theo người Do đó, khi áp dụng thuật toán PID cho 𝜔, ta nhận được công thức 2.5.
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.10
Hình 2.10: Sơ đồ các node trong hệ thống
Thuật toán PID
Để điều khiển ngõ ra của thiết bị như động cơ, nhiệt độ, áp suất hay tốc độ, cần có một thuật toán điều khiển Thuật toán PID là một trong những phương pháp phổ biến được áp dụng để giải quyết các vấn đề điều khiển Bộ điều khiển PID 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 này.
PID stands for Proportional, Integral, and Derivative, and it is the most widely used control algorithm in automated control applications This method is favored for its ability to achieve accurate performance, fast response times, and stability with minimal overshoot.
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 để hiệ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, khi đó 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.11:Mô hình bộ điều khiển PID 4
Các thành phần của bộ điều khiển PID
Thành phần tỉ lệ (Kp) giúp tăng tốc độ phản hồi của hệ thống và giảm thiểu sai số xác lập (steady-state error) mà không hoàn toàn triệt tiêu 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ó ảnh hưởng lớn đến sai số xác lập; khi 𝐊 𝐩 tăng, sai số giảm, tuy nhiên không thể tăng 𝐊 𝐩 vô hạn khi 𝐞 𝐱𝐥 không bằng không, điều này dẫn đến giới hạn 𝐊 𝐩 ≤ 𝐊 𝐠𝐡.
- 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
4 Nguồn https://vi.wikipedia.org/wiki/PID
Bảng 2.1: Tác động của việc thay đổi một trong các thông số K p , K I , K D độc lập
Thời gian khởi động Quá độ Thời gian xác lập
Sai số ổn định Độ ổn định
K p Giảm Tăng Thay đổi nhỏ Giảm Giảm cấp
K I Giảm Tăng Tăng Giảm đáng kể Giảm cấp
K D 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.12
Hình 2.12: Đáp ứng của các hệ thống điều khiển 5
Hệ thống điều khiển phản ứng với sự thay đổi được thể hiện qua ba phương pháp điều khiển P, PI và PID Trong đó, 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.
5 Nguồn https://vi.wikipedia.org/wiki/PID
Bộ PID có khả năng hoạt động trên cả dữ liệu liên tục và rời rạc, tuy nhiên, hiện nay, PID rời rạc được ứng dụng phổ biến trong các hệ thống điều khiển do tính chất số của hầu hết các hệ thống hiện đại Công thức của bộ PID được thể hiện qua công thức số (2.6): u(n) = 𝐊 𝐩 e(n) + 𝐊 𝐢 𝒏 𝒌=𝟎 𝒆(𝒌) + 𝐊 𝐝 (y(n) – y(n – 1)).
Cách tính toán của bộ PID nhƣ hình 2.13
Hình 2.13: Cách tính toán PID 6
Bộ điều khiển PID có hàm truyền dạng liên tục trong công thức số (2.7):
Biến đổi Z công thức số (2.7) ta đƣợc công thức số (2.3):
Viết lại G(z) ta đƣợc công thức số (2.9):
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.11): u(k) = G(z).e(k) = 𝐚 𝟎 + 𝐚 𝟏 𝒛
6 Nguồn https://vi.wikipedia.org/wiki/PID
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 diễn bằng e(k – 1) và e(k – 2), trong khi 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 để điều chỉnh hệ số Kp, Ki, Kd, trong đó có phương pháp Ziegler-Nichols Đầu tiên, thiết lập Kp = 1 và Ki, Kd = 0 để chỉ sử dụng điều khiển P Tiếp theo, tăng dần Kp và quan sát độ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ố cần thiết.
Bảng 2.2 : Thông số điều chỉnh K p , K i , K d
Sơ đồ khối hệ thống
Một yếu tố quan trọng quyết định sự thành công của đề tài và sự ổn định của mô hình là việc nghiên cứu và tính toán để lựa chọn thiết bị phù hợp Từ đó, thiết kế mô hình sẽ đáp ứng đúng yêu cầu của đề tài.
Dự án "Lập trình Robot 3 bánh di chuyển theo con người sử dụng cảm biến Kinect" yêu cầu thiết kế một Robot có khả năng di chuyển theo chuyển động của con người Để thực hiện điều này, cần tính toán và lựa chọn thiết bị theo dõi để đọc tọa độ người, thiết bị xử lý cho toàn bộ hệ thống, khối kết nối để điều khiển hoạt động của Robot, và các thiết bị cấu hình khung Robot.
Vậy cụ thể trong đề tài này việc tính toán và thiết kế bao gồm các phần nhƣ sau:
- Thiết kế sơ đồ khối cho hệ thống
- Tính toán thiết kế hệ thống
- Sơ đồ kết nối toàn hệ thống
Chi tiết tính toán, thiết kế đƣợc trình bày cụ thể ở phần sau
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: 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
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í tọa độ của con người và truyền về máy tính Qua hệ điều hành ROS, máy tính xử lý tín hiệu để tính toán giá trị vận tốc, sau đó truyền xuống khối điều khiển Khối điều khiển nhận và xử lý tín hiệu này, xuất tín hiệu ngõ ra cho các khối khác trong hệ thống.
Hệ thống điều khiển sử dụng 26 công suất để điều chỉnh khối chấp hành theo yêu cầu Cảm biến Encoder 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ý Sau đó, 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à quá 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: Mặt trước và mặt sau board Arduino DUE
Arduino Due là board phát triển đầu tiên sử dụng nhân ARM trong dòng sản phẩm Arduino, trang bị CPU Atmel SAM3X8E ARM Cortex-M3 và bootloader tương thích với các board Arduino khác Board này có 54 chân kỹ thuật số vào/ra, trong đó 12 chân hỗ trợ chức năng PWM, cùng với 12 ngõ vào tín hiệu Analog Arduino Due cung cấp 4 cổng UART, xung clock lên đến 84 MHz, bộ nhớ Flash 512 KB, bộ nhớ SRAM 96 KB và bộ điều khiển DMA hỗ trợ CPU Ngoài ra, board còn tích hợp 1 cổng USB OTG, 2 bộ chuyển đổi DAC, 2 TWI, jack cấp nguồn, jack SPI, jack chuẩn JTAG, cùng với nút reset và nút xóa chương trình.
Arduino Due là một kit mạnh mẽ với khả năng xử lý nhanh, lý tưởng cho việc điều khiển robot Thông số kỹ thuật chi tiết của Arduino Due được trình bày trong bảng 3.1, giúp người dùng nắm bắt thông tin cần thiết khi làm việc với thiết bị này Với ngôn ngữ lập trình dễ hiểu, khả năng kết nối linh hoạt với các thiết bị khác và sự hỗ trợ mạnh mẽ từ cộng đồng mã nguồn mở, Arduino Due trở thành lựa chọn phù hợp cho dự án của nhóm nhờ vào tính khả thi và giá cả hợp lý.
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
7 Nguồn http//:freetronics.com.au
SRAM 96KB (hai Banks:64KB và 32KB)
Kinect là thiết bị cảm biến chuyển động do Microsoft sản xuất, lần đầu tiên ra mắt tại Bắc Mỹ 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 hệ thống mà không cần bộ điều khiển cầm tay Kinect mang đến giao diện người dùng tự nhiên thông qua cử chỉ và lệnh nói, tạo ra trải nghiệm thú vị cho người chơi game trên Xbox.
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 sẽ đượ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 nhận diện cử chỉ của Kinect dựa vào hai đặc tính chính: thông tin về độ sâu (depth map) và khả năng phát hiện cùng bám theo đặc điểm cơ thể người (body skeleton tracking).
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 8
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 Windows
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 để thu thập thông tin về không gian xung quanh.
8 Tham khảo báo cáo “Tìm hiểu về camerakinect”
30 phát hồng ngoại đến đối tƣợng, sau đó camera hồng ngoại sẽ thu thập dữ liệu bị phản chiếu
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
Camera chủ yếu nhận biết ba màu cơ bản: đỏ, xanh lá và xanh da trời (RGB) Quá trình chụp hình bao gồm việc ghi lại một ảnh màu (RGB) và thực hiện phép đo độ sâu (D) Cảm biến RGB kết hợp với cảm biến chiều sâu gần nhau, cho phép tạo ra hình ảnh 3D và lưu trữ thông tin hình ảnh RGB-D.
Camera có khả năng chụp 12 khung hình/giây với độ phân giải 1280 x 960 pixel và 30 khung hình/giây với độ 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ạ thấp, giúp thu hình ảnh ở độ cao lớn hơn nhiều 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)
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 mắc riêng rẽ, cho phép cấp nguồn riêng biệt Loại động cơ này có thể sử dụng nam châm vĩnh cửu thay vì cuộn dây kích từ, tạo ra động cơ điện một chiều Để điều khiển tốc độ động cơ, người ta thay đổi điện áp cung cấp cho rotor, nhưng việc này khá khó khăn, vì vậy phương pháp điều xung (PWM) được áp dụng Hầu hết các IC hiện nay đều hỗ trợ tính năng PWM, bao gồm cả Board Arduino với khả năng PWM 8bit 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ơ qua chuỗi xung đóng mở nhanh chóng, chuyển đổi nguồn DC thành tín hiệu xung vuông giữa 0 volt và điện áp hoạt động, giúp động cơ chạy đều đặn tùy thuộc vào momen của trục quay.
Bằng cách điều chỉnh độ rộng xung, ta có thể kiểm soát tốc độ động cơ một cách hiệu quả Thời gian mức cao của xung vuông ảnh hưởng trực tiếp đến công suất trung bình cung cấp cho động cơ, từ đó điều chỉnh tốc độ hoạt động của nó Khi độ rộng xung nhỏ, động cơ sẽ chạy chậm, trong khi độ rộng xung lớn hơn sẽ khiến động cơ DC hoạt động nhanh hơn.
Hình 3.9:Điều chỉnh độ rộng xung PWM
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 được lựa chọn cho đồ án của nhóm vì đã tích hợp sẵn encoder, giúp đơn giản hóa quá trình lắp đặt và giảm kích thước mạch Hơn nữa, công suất của động cơ này phù hợp với yêu cầu kéo tải, làm cho nó trở thành sự lựa chọn tối ưu cho dự án.
Encoder là thiết bị dùng để đo quãng đường di chuyển của bánh xe hoặc xác định vị trí góc của đĩa quay và trục động cơ Nó được ứng dụng trong nhiều thiết bị có cơ cấu quay để theo dõi độ dịch chuyển chính xác.
Có hai loại encoder là encoder tương đối (incremental encoder) và encoder tuyệt đối (absolute encoder) nhƣ hình 3.11
Hình 3.11: Hình đĩa quay của encoder tuyệt đối (a) và encoder tương đối (b)
Encoder tuyệt đối có cấu tạo phức tạp hơn so với encoder tương đối, cho phép xác định chính xác vị trí mà không cần xử lý, nhưng giá thành cao Ngược lại, encoder tương đối có cấu tạo đơn giản hơn, yêu cầu xử lý tín hiệu trước khi xác định vị trí quay của động cơ, vì vậy được sử dụng rộng rãi trong các ứng dụng không yêu cầu độ chính xác cao Trong bài viết này, chúng tôi tập trung vào incremental optical encoder, một loại encoder tương đối sử dụng cảm biến quang, bao gồm nguồn phát quang (thường là hồng ngoại), cảm biến quang và đĩa chia rãnh.
Encoder thường có ba kênh, bao gồm kênh A, kênh B và kênh Z (Index) Trong cấu trúc của encoder, có hai cặp phát thu hồng ngoại, trong đó kênh A được sử dụng để nhận tín hiệu từ các rãnh nhỏ trên đĩa quay Khi động cơ quay, tia hồng ngoại từ nguồn phát xuyên qua các lỗ nhỏ và được cảm biến quang thu nhận, tạo ra N xung trên kênh A sau mỗi vòng quay, với N là số rãnh trên đĩa, thể hiện độ phân giải (resolution) của encoder.
Sơ đồ nguyên lý hệ thống
Hình 3.18: Sơ đồ nguyên lý hệ thống
Giải thích sơ đồ kết nối:
Robot sử dụng kit điều khiển Arduino Due và 2 module L298 để điều khiển 2 động cơ DC Module L298 đầu tiên được kết nối với chân IN1, IN2 tương ứng với chân 8, 9 của Arduino Due, trong khi chân OUT1, OUT2 được kết nối với V+ và V- của động cơ DC Module L298 thứ hai cũng được kết nối tương tự để điều khiển động cơ thứ hai.
Kit Arduino Due điều khiển động cơ DC thông qua các chân OUT1 và OUT2, với IN1 và IN2 xác định hướng quay của động cơ Để điều khiển hai động cơ DC, cần sử dụng hai module L298 do công suất hạn chế Module L298 được cấp nguồn 5V để đảm bảo mạch cầu H hoạt động ổn định Encoder được cài đặt trên hai động cơ, kết nối với các chân 22, 23 và 24, 25 của Arduino Due để thu thập dữ liệu Robot được điều khiển thông qua một laptop kết nối 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í và di chuyển theo người.
Thi công hệ thống
Mô hình xe Robot có kích thước 38x34x34 cm, với bánh xe được 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 sàn 15 cm, trong khi camera Kinect được gắn trên kệ cao cách mặt đất 38 cm, đảm bảo hiệu suất hoạt động tối ưu cho xe.
Bài viết đề cập đến việc thiết kế rỗng của sản phẩm 43, nơi chứa mạch điều khiển cho động cơ và bộ xử lý Arduino, cùng với động cơ encoder và acquy, nhằm cung cấp nguồn năng lượng cho toàn bộ hệ thống.
Trong mô hình Robot này, toàn bộ thân được thiết kế bằng nhựa cứng thay vì kim loại để giảm khối lượng Mặc dù khung Robot đã được làm bằng nhựa, nhưng do phải mang theo nhiều thiết bị như máy tính, camera, mạch điều khiển và động cơ, khối lượng của Robot vẫn đáng kể Robot chỉ di chuyển trên bề mặt phẳng và với động cơ có tốc độ thấp, do đó vận tốc tối đa được giới hạn ở 1.65 vòng/s, yêu cầu một momen lớn và ổn định ở vận tốc thấp Dưới đây là bản vẽ khung Robot với các kích thước cơ bản được thể hiện trên các hình chiếu đứng, bằng và cạnh, với đơn vị tính là centimet (cm).
Hình 4.2: Bản vẽ hình chiếu đứng và hình chiếu cạnh khung Robot
Hình 4.3: Bản vẽ hình chiếu bằng khung Robot 9
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 10
9 Tham khảo đồ án điều khiển từ xa Robot dùng ROS – 7/2016
10 Tham khảo đồ án điều khiển từ xa Robot dùng ROS - 7/2016
Hình 4.5: Các bộ phận bằng nhựa của Robot 11
- 2 động cơ DC giảm tốc Faulhaber
- 2 giá đỡ động cơ DC giảm tốc Faulhaber
- 2 bánh xe đường kính 0,95 cm
- Đai ốc, vít bake, kìm
11 Tham khảo đồ án điều khiển từ xa Robot dùng ROS - 7/2016
Hình 4.6: Các bộ phận cơ khí của Robot 12
LẬP TRÌNH HỆ THỐNG
4.2.1 Sơ đồ hệ thống các Node trong chương trình
Hình 4.7: Sơ đồ hệ thống các Node
12 Tham khảo đồ án điều khiển từ xa Robot dùng ROS - 7/2016
Giải thích chức năng từng Node:
Trong hệ thống ROS, ROS MASTER là trung tâm điều khiển quan trọng, cho phép các Node tìm kiếm và trao đổi thông tin 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ự hiện diện của mình với ROS MASTER.
- Node Openni_tracker:Thu thập dự liệu tọa độ đầu của con người từ kinect đưa về hệ thống
- Node Humanhead_tracker: Đăng kí với ROS_master lấy tọa độ từ node
Openni_tracker được sử dụng để chuyển đổi tọa độ của Kinect sang tọa độ thực và xác định vị trí ban đầu của Kinect so với vị trí của con người Từ đó, tính toán tốc độ V_left và V_right dựa trên các thông số thu được từ node, và hiển thị chúng lên màn hình Đồng thời, xuất tín hiệu PWM để điều khiển chuyển động của bánh trái và bánh phải của robot, cũng như đọc xung từ encoder để đưa vào bộ PID nhằm cân chỉnh tốc độ động cơ.
4.2.2 Lưu đồ giải thuật của hệ thống Đề tài “Lập trình Robot 3 bánhdi 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ạ độ đầu 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 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
In ra thông báo Đọc tọa độ head
Gọi node chuyển đổi về hệ tọa độ thực
Kiểm tra giao tiếp giữa Arduino và máy tính
Gửi V_left và V_right xuống Arduino
Xuất PWM V_left và V_right cho động cơ
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
PID cân chỉnh V_left và V_right
Hình 4.8: Lưu đồ giải thuật điều khiển của hệ thống.
VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC
4.3.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.9: Hệ thống chạy thực tế
Sơ đồ các bước thực hiện chạy xe Robot:
Người mà robot đang đi theo
Kết nối camera Kinect và board Arduino với máy tính
Vào không gian làm việc catkin_ws
Chạy lệnh mở cổng giao tiếp giữa
Nạp chương trình vào board
Khởi tạo hệ thống chạy trong shell bằng lệnh source /devel/setup.bash
Chạy hệ thống bằng lệnh roslaunch human_tracking_robot_demo.launch
Hình 4.10: 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
Hình 4.12: Chọn cổng giao tiếp cho board Arduino
Sau khi chọn board và chọn cổng giao tiếp ta tiến hành ở terminal để chạy lệnh mở cổng giao tiếp
Hình 4.13:Mở cổng giao tiếp giữa Arduino và máy tính
Sau khi mở cổng giao tiếp ta tiến hành đổ chương trình cho board Arduino Due
Hình 4.14: Upload chương trình cho board Arduino
Chạy lệnh mở cổng giao tiếp
Sau khi hoàn tất việc chạy chương trình cho Arduino, chúng ta sẽ tiến hành khởi động hệ thống Đầu tiên, hãy 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 hệ thống bằng lệnh: cd catkin_ws Cuối cùng, chúng ta thực hiện việc xây dựng lại chương trình bằng lệnh catkin_make.
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_tracking_robot human_tracking_robot_demo.launch`.
Câu lệnh setup biến môi trường và lệnh chạy hệ thống
Hình 4.16: 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.17: Hình ảnh hiện trên màn hình máy tính
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.18: Khi có người trước camera kinect
Thông báo chƣa tìm thấy người
Tốcđộ robot Hình ảnh depth từ camera