GIỚI THIỆU CHUNG
Tổng quan về mobile robot
Rô-bốt di động (MbR) là loại rô-bốt có khả năng di chuyển linh hoạt trong môi trường mà không bị giới hạn ở một vị trí cố định MbR có thể hoạt động hoàn toàn tự động, cho phép chúng tự điều hướng trong bất kỳ môi trường nào mà không cần thiết bị hướng dẫn Ngoài ra, MbR cũng có thể sử dụng các thiết bị định hướng để di chuyển theo hướng được chỉ định Hình ảnh minh họa cho MbR được trình bày trong hình 1.1.
Hình 1.1 Mobile Robot SUMMIT-XL của hãng Robotnik
1.1.2 Ứng dụng của mobile robot
MbR khác biệt hoàn toàn so với các cánh tay robot lớn trong nhà máy, thường thay thế con người trong các công việc khó khăn và nguy hiểm như hàn, cắt hay tiện, vì chúng chỉ hoạt động tại một vị trí cố định MbR được phát triển với mục đích đa dạng, không chỉ trong ngành công nghiệp mà còn trong cuộc sống hàng ngày Nhiều bệnh viện hiện nay đã ứng dụng robot di động để cải thiện hiệu quả công việc và chất lượng dịch vụ y tế.
Trong kho hàng hiện đại, việc lắp đặt hệ thống robot di động giúp di chuyển vật liệu từ các kệ hàng đến khu vực thực hiện đơn đặt hàng một cách hiệu quả Bên cạnh đó, các robot cũng được sử dụng cho mục đích giải trí và thực hiện công việc gia đình, như robot lau nhà, làm vườn và dọn tuyết.
Hình 1.2 Smart hospital robot vận chuyển trong bệnh viện
Hình 1.3 Robot lau nhà Neato Botvac D85
Robot đã trở thành một phần thiết yếu trong cuộc sống, không chỉ trên thế giới mà còn ở Việt Nam, nơi nghiên cứu và phát triển công nghệ robot đang được chú trọng Thuật ngữ "robot" ngày càng xuất hiện nhiều trên các phương tiện truyền thông Mặc dù phần lớn robot hiện nay được nhập khẩu từ các quốc gia có công nghệ phát triển, nhưng nhiều chuyên gia và phòng nghiên cứu tại các trường đại học hàng đầu trong nước cũng đang tích cực nghiên cứu công nghệ này, với tiềm năng lớn cho tương lai.
[2] Điều này cho thấy, tầm quan trọng của rô-bốt đang ngày càng được hiểu rõ
Trong thế giới hiện đại, con người vẫn phải đối mặt với nhiều tình huống bất ngờ, buộc họ di chuyển trong các khu vực nguy hiểm như thiên tai hay cháy nổ Một nhiệm vụ quan trọng trong công tác cứu hộ là xác định vị trí những người sống sót bị mắc kẹt và cung cấp cho họ vật dụng thiết yếu Đặc biệt, trong những khu vực có điều kiện khắc nghiệt như đất nhiễm độc hay khu vực từng là chiến trường, việc sử dụng một thiết bị nhỏ gọn, điều khiển từ xa để di chuyển, quan sát và truyền tải hình ảnh là vô cùng cần thiết.
Hình 1.4 Thu gom bom mìn trên địa bàn huyện ALưới
Hình 1.5 Cứu hộ sau trận cháy lán trại Tân Mai
Giới thiệu về công nghệ mạng không dây và thực tế ảo
Cuộc cách mạng công nghiệp lần thứ 4 (công nghiệp 4) đang làm thay đổi sâu sắc phương thức sản xuất và vận hành dây chuyền công nghiệp, ảnh hưởng đến cả đời sống hàng ngày của con người Cách mạng này đã cải thiện cách thức giao tiếp giữa các đối tượng và đa dạng hóa kết nối để tối ưu hóa năng lực của các thành phần trong hệ thống Đặc biệt, mạng không dây và thực tế ảo (VR) đang phát triển mạnh mẽ, thu hút sự quan tâm từ nghiên cứu hàn lâm đến sản phẩm thương mại.
1.2.1 Công nghệ mạng không dây
Kết nối không dây được thiết lập thông qua sóng điện từ, với các dải tần số khác nhau tùy thuộc vào mục đích hoạt động Các thiết bị trong mạng không dây giao tiếp bằng các giao thức khác nhau, và dữ liệu thường được phát sóng ra mọi hướng thay vì qua dây dẫn Điều này có nghĩa là các thiết bị không phải của người nhận cũng có thể tiếp cận sóng dữ liệu, nhưng nhờ vào các phương pháp định danh và bảo mật của từng giao thức, chỉ người nhận mới có thể mở dữ liệu được gửi đi Các kết nối không dây phổ biến hiện nay bao gồm nhiều loại khác nhau.
Wifi là công nghệ phổ biến nhất hiện nay, dễ dàng tiếp cận ở mọi nơi Công nghệ này hoạt động hiệu quả trong khoảng cách từ vài chục đến vài trăm mét, với tốc độ ngày càng được cải thiện Tuy nhiên, wifi vẫn có một số nhược điểm như tính bảo mật kém và khả năng bị nhiễu, mặc dù quá trình phát triển đã khắc phục được nhiều vấn đề này.
Bluetooth là công nghệ kết nối không dây tầm ngắn, thường được sử dụng để liên kết các thiết bị cá nhân hoặc mạng cục bộ nhỏ như chuột và bàn phím không dây Mặc dù Bluetooth thuận tiện cho việc kết nối thiết bị gần, nhưng nó tiêu tốn nhiều năng lượng hơn so với Wi-Fi và có tốc độ truyền dữ liệu thấp.
IrDA (Infrared Data Association) là công nghệ kết nối hồng ngoại không dây, hoạt động hiệu quả trong khoảng cách ngắn khoảng 5 mét Mặc dù có giới hạn về khoảng cách và tính linh động do khả năng truyền thông tin có hướng, IrDA vẫn được sử dụng phổ biến trong việc điều khiển các thiết bị như tivi và cửa cuốn.
Zigbee là công nghệ kết nối quan trọng trong tương lai, nổi bật với khả năng truyền thông trong phạm vi hẹp, tốc độ cao và tiết kiệm năng lượng Mặc dù wifi và bluetooth ngày càng cải thiện tốc độ, nhưng chúng vẫn tiêu tốn nhiều năng lượng, do đó Zigbee trở thành giải pháp tối ưu cho các ứng dụng cần hiệu suất cao mà không làm tiêu hao quá nhiều năng lượng.
1.2.2 Công nghệ thực tế ảo (Virtual Reality – VR)
Thực tế ảo (VR) là một hệ thống mô phỏng các hiện tượng và sự vật theo thời gian thực, cho phép người dùng tương tác thông qua các kênh cảm giác Các mô phỏng này có thể là hoàn toàn ảo do máy tính tạo ra hoặc là hình ảnh thực tế bên ngoài được ghi lại và truyền tải Công nghệ thực tế ảo được mô tả trong hình 1.6.
Hình 1.6 Công nghệ thực tế ảo
Thực tế ảo (VR) đang ngày càng phổ biến và được áp dụng rộng rãi ở các nước phát triển trong nhiều lĩnh vực như khoa học kỹ thuật, kiến trúc, quân sự, giải trí, du lịch và địa ốc Công nghệ này đáp ứng đa dạng nhu cầu trong nghiên cứu, giáo dục, thương mại và dịch vụ.
Mục tiêu và yêu cầu của đồ án
Việc ứng dụng công nghệ thực tế ảo (VR) vào điều khiển robot di động (MbR) đã được đề xuất từ những năm 1998 nhưng chủ yếu chỉ dừng lại ở việc tái tạo môi trường ảo để điều khiển robot Với sự phát triển của khoa học máy tính và công nghệ bán dẫn, IoT và VR đã được áp dụng sâu rộng hơn trong lĩnh vực này Một số nghiên cứu đã sử dụng các công nghệ trên để điều khiển từ xa MbR, tuy nhiên, VR chủ yếu được dùng để tái tạo môi trường song song với môi trường thực nhằm giảm sai số quỹ đạo di chuyển, không phải để quan sát và hỗ trợ trực tiếp cho người điều khiển Một số công bố khác đã sử dụng VR để giám sát hoạt động của robot nhưng không mang tính điều khiển Do đó, bài toán đặt ra là “Ứng dụng công nghệ mạng không dây và thực tế ảo để điều khiển từ xa mobile robot”.
Mô hình hoạt động của robot tại môi trường cần khảo sát được đề xuất như hình 1.7
Khu vực cần khảo sát
Vị trí của người điều khiển
Hình 1.7 Mô hình hoạt động của mobile robot trong khu vực cần khảo sát
Từ mô hình hoạt động của MbR, những yêu cầu về hệ thống MbR được đưa ra như sau:
Có khả năng di chuyển trong các khu vực nguy hiểm
Được kết nối và điều khiển không dây
Thiết bị thu hình ảnh trực tiếp cho phép truyền tải đến thiết bị quan sát và điều chỉnh góc nhìn theo hướng của người sử dụng trong thời gian thực, ứng dụng công nghệ thực tế ảo để mang lại trải nghiệm sống động và tương tác.
Có khả năng tự bù được góc quay camera khi lên, xuống chướng ngoại vật
Vậy đề tài: “Ứng dụng công nghệ mạng không dây và thực tế ảo để điều khiển từ xa mobile robot” gồm những yêu cầu cần thực hiện là:
Tính toán lựa chọn thiết bị và ghép nối MbR
Xây dựng phần mềm điều khiển, quan sát hình ảnh trực tiếp
Lập trình điều khiển MbR theo những chỉ tiêu đặt ra phía trên
Các kết quả cuối cùng sẽ được tiến hành chạy thực nghiệm trong môi trường thực tế
Chương 1 cho thấy cái nhìn tổng quan về sự phát triển và ứng dụng của MbR, giới thiệu về hai công nghệ mạng không dây và thực tế ảo, khả năng ứng dụng của hai công nghệ vào việc điều khiển MbR, từ đó đưa ra mục tiêu và yêu cầu của đồ án
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
CẤU HÌNH HỆ THỐNG VÀ TÍNH TOÁN LỰA CHỌN THIẾT BỊ, CÔNG NGHỆ
Cấu hình hệ thống
Hệ thống MbR hoạt động theo yêu cầu được nêu ở chương 1, với việc điều khiển từ xa thông qua hai thiết bị Một thiết bị cho phép người dùng điều khiển chuyển động của MbR bằng thao tác tay, trong khi thiết bị còn lại giúp quan sát hình ảnh từ MbR và điều chỉnh góc thu hình của camera trên thân MbR Bộ điều khiển trung tâm của MbR nhận dữ liệu từ các thiết bị điều khiển và cảm biến, giúp vận hành động cơ tạo chuyển động cho xe Dưới đây là sơ đồ khối cho cấu hình hệ thống MbR.
Bộ Điều khiển Trung tâm
Cảm biến Bộ xử lý phụ
Hình 2.1 Cấu hình hệ thống mobile robot
Hệ thống MbR sẽ bao gồm 3 thành phần: thiết bị 1, thiết bị 2 và khối mobile robot, chức năng cho từng khối trong hệ thống được giải thích như sau:
Thiết bị 1 cần phải ghi lại góc quay mà người điều khiển thực hiện, sau đó sử dụng thông tin này để điều chỉnh góc quay của camera trên MbR.
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Bị 1 cần có khả năng nhận và hiển thị hình ảnh trực tiếp từ camera, với các chức năng này được thực hiện qua truyền thông không dây.
Thiết bị 2 có chức năng điều khiển chuyển động của MbR, thông qua thao tác tay của người dùng Dữ liệu điều khiển sẽ được thu thập và truyền không dây đến MbR.
Khối MbR là trung tâm của hệ thống, đảm nhiệm các vai trò như kết nối không dây, xử lý dữ liệu và thu hình ảnh BĐKTT là thành phần quan trọng nhất, thực hiện kết nối, xử lý và trung chuyển hình ảnh từ camera đến thiết bị 1, đồng thời nhận góc bù từ BXLP để điều khiển camera chính xác Hai khối bánh xe tạo chuyển động cho MbR qua động cơ DC sử dụng xung PWM Camera ghi hình tại hiện trường và gửi dữ liệu về BĐKTT qua cáp USB, với góc nhìn được điều khiển bởi hai động cơ servo cho phép xoay linh hoạt trong không gian ba chiều Khối cảm biến đo góc nghiêng của MbR và gửi thông tin về BXLP, nơi tính toán góc quay và gửi kết quả về BĐKTT Cuối cùng, khối Wi-Fi module hỗ trợ kết nối truyền và nhận dữ liệu trên MbR.
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Tính toán lựa chọn thiết bị
Công nghệ và thết bị sẽ được lựa chọn phù hợp với chức năng của từng khối trong cấu hình hệ thống
2.2.1 Lựa chọn công nghệ truyền thông không dây
Wi-Fi được lựa chọn trong hệ thống truyền thông không dây nhờ vào sự phổ biến và tiềm năng phát triển của nó, cho phép truyền thông ở khoảng cách xa Tốc độ truyền tin nhanh giúp truyền tải hình ảnh và điều khiển MbR theo thời gian thực Việc sử dụng Wi-Fi cũng tạo điều kiện thuận lợi cho việc thiết lập mạng cục bộ không dây WLAN, giúp các thành phần kết nối và chia sẻ dữ liệu dễ dàng hơn.
Hai giao thức truyền thông phổ biến trong mạng cục bộ là TCP và UDP, thuộc bộ giao thức TCP/IP Cả hai giao thức này đều kết nối các máy tính và cho phép gửi dữ liệu, nhưng chúng có những điểm khác biệt quan trọng.
Bảng 2.1 Sự khác nhau giữa hai giao thức TCP và UDP
Phần header kích thước 20 bytes Phần header kích thước 8 bytes
Dùng cho mạng WAN Dùng cho mạng LAN
Trong giao thức truyền dữ liệu, TCP không cho phép mất gói tin và đảm bảo việc truyền dữ liệu, trong khi UDP cho phép mất gói tin và không đảm bảo việc truyền dữ liệu Mặc dù tốc độ truyền của TCP thấp hơn, nhưng UDP lại có tốc độ truyền cao hơn.
UDP thường được sử dụng để truyền tải các gói tin ngắn và cho phép mất mát dữ liệu Tuy nhiên, đối với dữ liệu điều khiển của MbR, việc nhận chính xác là rất quan trọng, do đó sử dụng TCP sẽ là lựa chọn hợp lý hơn.
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Hình 2.2 Sự phát triển của công nghệ Wi-Fi
2.2.2 Lựa chọn thiết bị điều khiển
Sử dụng điện thoại thông minh làm thiết bị điều khiển là một lựa chọn hợp lý nhờ vào tính nhỏ gọn và khả năng tích hợp nhiều tính năng như xem ảnh, video, lướt web, và định vị Với các cảm biến như gyroscope và accelerometer, điện thoại thông minh có thể đo góc quay và hỗ trợ công nghệ thực tế ảo Ngoài ra, việc tích hợp các phương thức truyền thông không dây như Bluetooth và Wi-Fi giúp kết nối dễ dàng Hệ điều hành Android cũng cho phép lập trình viên tùy biến và xây dựng ứng dụng một cách linh hoạt nhờ mã nguồn mở và thư viện hỗ trợ phong phú.
Kết hợp điện thoại thông minh với kính thực tế ảo mang đến cho người dùng khả năng quan sát hình ảnh và điều khiển camera một cách linh hoạt Bộ kính thực tế ảo được thiết kế với hệ thống giá đỡ có thể điều chỉnh tiêu cự thấu kính, phù hợp với khoảng cách giữa hai mắt của mỗi người Điều này giúp tối ưu hóa trải nghiệm sử dụng, đồng thời đảm bảo độ rộng màn hình hiển thị của điện thoại cũng được điều chỉnh phù hợp.
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Hệ thống thấu kính của kính thực tại ảo bao gồm hai thấu kính tương ứng với hai mắt của người quan sát, và chất lượng thấu kính ảnh hưởng lớn đến độ trung thực của hình ảnh; nếu thấu kính kém, người dùng có thể gặp phải tình trạng hoa mắt và mỏi mắt Ngoài ra, hệ thống ốp mắt và quai đeo đầu được thiết kế hợp lý giúp gắn kính vào mắt một cách thoải mái, với trọng lượng nhẹ, cho phép người dùng sử dụng lâu mà không cảm thấy mỏi cổ hay đau đầu.
Hình 2.3 Kính thực tế ảo và điện thoại thông minh
2.2.3 Lựu chọn thiết bị cho khối mobile robot
Romeo for Intel Edison được lựa chọn làm bộ điều khiển trung tâm (BĐKTT) nhờ khả năng trung chuyển hình ảnh, xử lý dữ liệu và điều khiển hệ thống nhanh chóng, cùng với khả năng truyền thông không dây Sản phẩm này được nghiên cứu và phát triển bởi Intel, một trong những hãng công nghệ hàng đầu, với tính năng nổi bật như module Wi-Fi, Bluetooth 4.0, RAM và bộ nhớ Flash Các thông số cơ bản của Intel Edison bao gồm bộ xử lý Intel AtomTM 500Mhz và Intel QuarkTM 100Mhz.
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Thiết bị hỗ trợ Wi-Fi với cả hai băng tần 2.4 và 5 GHz theo tiêu chuẩn IEEE 802.11 a/b/g/n, bảo mật bằng WPA, WPA2 và AES, cùng chế độ WPS Bluetooth được trang bị chuẩn 4.0 Ngoài ra, thiết bị còn hỗ trợ cấp nguồn qua USB và nguồn bên ngoài như pin hoặc ắc quy Với bộ nhớ NAND Flash 4 GB, thiết bị có khả năng lưu trữ dữ liệu hệ thống và dữ liệu người dùng RAM LPDDR3 1 GB với tốc độ lên tới 1033 MT/s, bao gồm 8 ngăn chứa, địa chỉ hàng từ R0-R13 và địa chỉ cột từ C0-C9, với tốc độ truyền tối đa đạt 800 MT/s.
Hình 2.4 Bộ xử lý Romeo for Intel Edison
Arduino Nano được lựa chọn làm bộ xử lý phụ nhờ vào kích thước nhỏ gọn và tốc độ xử lý cao Nó có khả năng giao tiếp với Intel Edison qua cổng UART và với MPU6050 theo chuẩn I2C Thông số kỹ thuật của Arduino Nano bao gồm vi xử lý Atmega328, điện áp đầu vào từ 7-12V, điện áp hoạt động 5V, xung nhịp 16 MHz, và bộ nhớ 32 KB, trong đó có 2 KB SRAM và 1 KB EEPROM.
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Cảm biến MPU6050 được MbR sử dụng để đo góc nghiêng của xe trong môi trường tự nhiên MPU6050 bao gồm 6 trục cảm biến với 3 trục gyroscope và 3 trục accelerometer, cùng với 6 ADC để số hóa đầu ra của các trục Thiết bị này sử dụng giao thức I2C để giao tiếp.
Hình 2.6 Module cảm biến MPU6050
Camera quan sát mà MbR sẽ sử dụng có độ phân giải 2mega cho phép ghi hình và truyền hình ảnh về BĐKTT thông qua cáp USB
Chương 2 Cấu hình hệ thống và tính toán lựa chọn thiết bị, công nghệ
Lựu chọn servo với khả năng quay 180 độ để điều khiển góc quay camera cho MbR, và động cơ DC 6V sẽ giúp MbR chuyển động
Hình 2.7 Camera, động cơ DC, động cơ servo
Nguồn năng lượng cho MbR được cung cấp từ pin lipo 7.4 V, có kích thước nhỏ gọn, dễ dàng gắn vào thân xe Pin này cho phép xe hoạt động liên tục trong 1 giờ và có khả năng sạc lại sau khi sử dụng.
Khung xe được chọn là bộ khung của DFROBOT, làm từ kim loại cứng và hợp kim nhôm bền bỉ, kết hợp với bộ truyền động bánh xích giúp xe di chuyển dễ dàng trên địa hình khó khăn.
Hình 2.8 Khung xe Mobile Robot
Chương 2 đề xuất ra cấu hình hệ thống cần thiết đáp ứng được nguyên lý hoạt động của MbR, chỉ ra tính năng cho từng khối trong cấu hình, từ đó tính toán lựa chọn công nghệ thiết bị phù hợp sử dụng trong đồ án
Chương 3 Ghép nối phần cứng
GHÉP NỐI PHẦN CỨNG
Ghép nối phần cứng cho hệ thống
Công việc ghép nối phần cứng cho MbR được chia thành hai phần chính: đầu tiên, ghép nối Romeo for Intel Edison với các thiết bị như động cơ, servo, camera và Arduino Nano; thứ hai, kết nối Arduino Nano với cảm biến MPU6050 Phần còn lại là lắp ráp cơ khí cho MbR.
3.1.1 Ghép nối dây mạch điều khiển
Việc nối dây mạch cho toàn bộ hệ thống cần được thực hiện chính xác cho từng chân nối Sau khi hoàn thành, cần kiểm tra độ chắc chắn của các tiếp điểm và đảm bảo tính thẩm mỹ cho hệ thống MbR Đặc biệt, cần chú ý đến việc ghép nối cho Romeo Intel Edison.
Bản 3.1 sẽ thể hiện việc kết nối của thiết bị ngoại vi đến các chân của Romeo for Intel Edison
Bảng 3.1 Bảng nối chân của Romeo for Intel Edison với các thiết bị
Thiết bị Romeo for Intel Edison
Pin lipo Nguồn Động cơ trái M1 Động cơ phải M2
Chương 3 Ghép nối phần cứng
22 b) Ghép nối giữa Romeo for Intel Edison và Arduino Nano
Giao tiếp giữa Romeo for Intel Edison và Arduino Nano sẽ được thực hiện qua chuẩn UART, sử dụng hai dây để truyền và nhận dữ liệu.
Cổng TX của thiết bị này sẽ được kết nối với cổng RX của thiết bị kia và ngược lại Chi tiết về cách nối chân sẽ được trình bày trong bảng 3.2.
Bảng 3.2 Bảng nối chân giữa Romeo for Intel Edison và Arduino Nano
Romeo for Intel Edison Arduino Nano
+5V Vin c) Ghép nối giữa Arduino Nano và MPU6050
Để kết nối cảm biến MPU6050 với Arduino Nano, cần cấu hình hai chân A4 và A5 thành SDA và SCL, do MPU6050 sử dụng giao thức truyền thông I2C Thông tin chi tiết về việc ghép nối chân được trình bày trong bảng 3.3.
Bảng 3.3 Bảng nối chân giữa Arduino Nano với MPU6050
Chương 3 Ghép nối phần cứng
Từ các bảng nối chân trên, toàn bộ sơ đồ nối dây cho hệ thống MbR được biểu diễn trong hình 3.1
Pin Lipo Động cơ trái Động cơ Phải
VCC GND SDA SCL XDA XCL AD0 INT
Sơ đồ nối chân cho toàn bộ hệ thống mobile robot được trình bày trong Hình 3.1 Để tăng tính thẩm mỹ, chân RX và TX của Arduino Nano và Romeo for Intel Edison sẽ được thay thế bằng các ký hiệu 'a' và 'b'.
Chương 3 Ghép nối phần cứng
3.1.2 Lắp ráp cơ khí của mobile robot
Sau khi hoàn thành nối dây cho phần mạch của hệ thống, kết cấu cơ khí của MbR sẽ được lắp ráp tuần tự theo các bước như sau:
Lắp ráp khung kim loại với hệ thống bánh xích để tạo thành một khối hoàn chỉnh, sau đó lắp động cơ DC vào khung và kết nối với hệ thống bánh răng, giúp truyền động hiệu quả đến hệ thống bánh xích.
Hình 3.2 Khung kim loại, bánh xích và động cơ DC bên trong
Tiến hành lắp ráp hai động cơ servo cho khung quay camera, cho phép điều chỉnh theo hai trục trái phải và lên xuống Động cơ servo ở dưới sẽ được giấu trong đế điều khiển camera quay trái phải, trong khi động cơ servo ở trên sẽ kết nối với khung điều khiển camera để điều chỉnh độ cao.
Hình 3.3 Khung và đế quay của camera
Chương 3 Ghép nối phần cứng
Gắn mạch điều khiển và cảm biến MPU6050 vào khung xe, kiểm tra kết nối dây một cách cẩn thận Tiếp theo, lắp đặt khung quay camera vào khung xe để hoàn tất quá trình ghép nối cho MbR.
Sử dụng điện thoại sony Z3 cho thiết bị điều khiển và quan sát
Hệ thống MbR đã hoàn thiện về phần cứng, với hình ảnh rõ ràng thể hiện vị trí của từng thiết bị Các thiết bị có thể nhìn thấy được được đánh dấu bằng nét liền, trong khi các thiết bị ẩn trong khung xe được thể hiện bằng nét đứt (hình 3.4).
Khung xe Bánh xích Led
Arduino nano Động cơ trái Động cơ phải
Hình 3.5 Sony z3 thiết bị điều khiển và quan sát
Chương 3 Ghép nối phần cứng
Truyền thông I2C và UART
Hai chuẩn truyền thông được sử dụng trong khối mobile robot, gồm truyền thông I2C và UART sẽ được giới thiệu như sau
I2C, hay còn gọi là "Inter-Integrated Circuit", là một loại bus nối tiếp được phát triển bởi Philips, ban đầu chỉ sử dụng trong linh kiện của hãng này Tuy nhiên, nhờ vào tính ưu việt và sự đơn giản, I2C đã được chuẩn hóa và hiện nay được áp dụng rộng rãi trong các thiết bị truyền thông nối tiếp của vi mạch tích hợp.
I2C sử dụng hai đường truyền tín hiệu [4]:
Một đường xung nhịp đồng hồ(SCL) chỉ do Master phát đi (thông thường ở 100kHz và 400kHz Mức cao nhất là 1Mhz và 3.4MHz)
Một đường dữ liệu(SDA) theo hai hướng
Khi làm việc với giao thức I2C, cần lưu ý rằng dữ liệu trên đường SDA chỉ được ghi nhận tại sườn lên của tín hiệu CLK Điều này cho phép linh hoạt trong việc sử dụng xung clock, không nhất thiết phải đạt tốc độ chính xác như 1MHz hay 3.4MHz Nhờ vào đặc điểm này, có thể sử dụng hai chân GPIO để thiết lập giao tiếp I2C mềm mà không cần một chân CLK với tần số chính xác, chỉ cần sử dụng delay và điều chỉnh mức logic.
Việc truyền nhận dữ liệu trong truyền thông I2C được thể hiện trong lưu đồ thuật toán ở hình 3.6
Chương 3 Ghép nối phần cứng
Truyền byte tiếp theo hoặc dừng
Bô đệm = dữ liệu Nhận Đầy bộ đệm
Hình 3.6 Lưu đồ thuật toán truyền nhận dữ liệu
3.2.2 Truyền thông UART a) Khái niệm
UART (Universal Asynchronous Receive/Transmit) là một chuẩn giao tiếp dữ liệu không đồng bộ phổ biến, dễ sử dụng, thường được áp dụng trong việc giao tiếp giữa các vi điều khiển và các thiết bị khác.
Giao tiếp UART giữa hai thiết bị diễn ra thông qua hai đường dẫn RX (nhận) và TX (truyền) Do là giao tiếp không đồng bộ, hai thiết bị cần được cấu hình đồng nhất về khung truyền và tốc độ truyền Sơ đồ khối dưới đây mô tả quá trình giao tiếp trong UART.
Chương 3 Ghép nối phần cứng
Hình 3.7 Giao tiếp trong UART
Tốc độ Baud là một khái niệm quan trọng trong việc truyền và nhận dữ liệu không đồng bộ, yêu cầu các thiết bị tham gia phải thống nhất về thời gian truyền cho mỗi bit Định nghĩa tốc độ baud là số bit được truyền trong một giây; ví dụ, nếu tốc độ baud được cài đặt là 19200, thì thời gian truyền cho mỗi bit sẽ khoảng 52.083 micro giây.
Khung truyền (Frame) trong truyền thông nối tiếp, đặc biệt là nối tiếp không đồng bộ, rất dễ gặp phải tình trạng mất hoặc sai lệch dữ liệu Để đảm bảo quá trình truyền thông diễn ra thành công, cần tuân thủ một số quy cách nhất định, trong đó tốc độ baud và khung truyền là hai yếu tố quan trọng Khung truyền quy định số bit trong mỗi lần truyền, các bit "báo" như bit Start và bit Stop, cũng như các bit kiểm tra như Parity Hơn nữa, số lượng bit trong một data cũng được quy định bởi khung truyền, góp phần vào tính chính xác của dữ liệu truyền đi.
Chương 3 đã giải quyết được việc ghép nối phần mạch cho BĐKTT Romeo for Intel Edison, BXLP Arduino Nano và các thiết bị với nhau, đồng thời lắp ráp khung cơ khí, khung quay camera tạo thành hệ thống MbR hoàn chỉnh
Chương 4 Thiết kế phần mềm
THIẾT KẾ PHẦN MỀM
Thuật toán xác định góc quay và một số khái niệm
4.1.1 Thuật toán xác định góc quay
Thuật toán tính góc quay sẽ xử lý dữ liệu từ cảm biến gyroscope và accelerometer trên điện thoại thông minh hoặc cảm biến MPU6050 Quá trình này cho phép xác định góc quay của điện thoại và độ nghiêng của MbR khi di chuyển qua các chướng ngại vật.
Chương 4 Thiết kế phần mềm
Góc Euler là ba góc dùng để mô tả sự định hướng của vật thể trong hệ tọa độ ba chiều cố định, cũng như định hướng của khung tham chiếu di động trong vật lý Mọi định hướng có thể đạt được thông qua ba phép quay cơ bản quanh ba trục của hệ tọa độ, và các góc Euler được xác định bởi ba vòng quay này.
Góc α (roll) là góc quay quanh trục x, góc θ (pitch) là góc quay quanh trục y, và góc ψ (yaw) là góc quay quanh trục z Để xác định giá trị các thành phần của phép quay quanh trục, cần sử dụng ma trận quay được định nghĩa rõ ràng.
Chương 4 Thiết kế phần mềm
31 b) Phương pháp xác định góc quay
Xác định góc pitch và roll bằng phép đo gia tốc
Vector gia tốc Gp thu được sau phép quay quanh trục sẽ được biểu diễn ở trong phương trình (4.4):
Trong đó g = 9,8 (m/s²) là giá trị gia tốc trọng trường
Từ phương trình (4.4) suy ra phương trình (4.5):
𝐺 𝑝𝑧 ) là các thành phần của vector gia tốc đo được qua cảm biến accelerometer
↔ ( cos(θ) sin(θ) sin(𝛼) sin(θ) cos(𝛼)
−sin(θ) cos(θ) sin(𝛼) cos(θ) cos(𝛼)
Từ phương trình (4.6) suy ra:
Vậy là xác định được góc 𝛼 và với góc 𝛼 tính được nhờ phương trình (4.7) thì góc θ được tính theo công thức (4.8)
𝐺 𝑝𝑥 cos(θ) + 𝐺 𝑝𝑦 sin(θ) sin(𝛼) + 𝐺 𝑝𝑧 sin(θ) cos(𝛼) = 0
Chương 4 Thiết kế phần mềm
Góc yaw có thể được xác định bằng cảm ứng từ, trong đó từ trường của trái đất tại bất kỳ vị trí nào được mô tả bởi một vector ba chiều gồm ba thành phần 𝐵 𝑥, 𝐵 𝑦 và 𝐵 𝑧 Một ví dụ điển hình để đo hướng của từ trường này là sử dụng la bàn.
Vector từ trường sau khi thực hiện các phép quay được xác định như phương trình (4.9):
Cường độ từ trường, ký hiệu là B, trên bề mặt trái đất dao động từ 22μT đến 67μT Góc nghiêng γ của trường địa từ so với phương nằm ngang thay đổi tùy thuộc vào vị trí địa lý.
Vậy thì có phương trình (4.10):
) 4.10 Biến đổi tương đương được phương trình (4.11):
𝐵 𝑝𝑥 cos(θ) + 𝐵 𝑝𝑦 sin(θ) sin(𝛼) + 𝐵 𝑝𝑧 sin(θ) cos(𝛼)
−𝐵 𝑝𝑥 sin(θ) + 𝐵 𝑝𝑦 cos(θ) sin(𝛼) + 𝐵 𝑝𝑧 cos(θ) cos(𝛼)
Suy ra phương trình (4.12): tan(ψ) = −𝐵 𝑓𝑦
𝐵 𝑝𝑥 cos(θ) + 𝐵 𝑝𝑦 sin(θ) sin(𝛼) + 𝐵 𝑝𝑧 sin(θ) cos(𝛼) 4.12
Chương 4 Thiết kế phần mềm
Từ đấy 3 góc quay đã có thể được tính ra theo phép đo gia tốc
Gyroscope được sử dụng để xác định góc bằng cách đo vận tốc chuyển động xoay quanh một trục, tức là vận tốc góc Độ thay đổi góc quay kết hợp với góc ban đầu cho phép tính toán góc tức thời Ví dụ, đối với góc α, góc quay quanh trục x có thể được biểu diễn qua phương trình (4.13).
𝛼 𝑡 = 𝜔 𝑥 × 𝑑𝑡 + 𝛼 0 Trong đó 𝛼 𝑡 là góc tức thời, 𝜔 𝑥 là tốc độ quay quay trục x, 𝑑𝑡 là biến thiên thời gian và 𝛼 0 là góc ban đầu
4.13 c) Sử dụng bộ lọc bổ sung
Việc chỉ sử dụng phép đo gia tốc hoặc vận tốc để xác định góc quay thường không mang lại kết quả chính xác Phép đo góc từ cảm biến gia tốc nhạy với nhiễu ngắn hạn nhưng có thể cho kết quả đúng trong thời gian dài, trong khi đó, phép đo từ gyroscope chính xác trong thời gian ngắn nhưng dễ dẫn đến sai số lớn khi sử dụng lâu do bản chất tích phân tốc độ góc theo thời gian Để giảm thiểu sai lệch, phương pháp kết hợp giữa phép đo gia tốc và vận tốc được đề xuất, trong đó góc Ac được xác định qua gia tốc và góc Ag qua vận tốc.
Và A là góc sau khi được kết hợp Bổ lọc bổ sung sử dụng như phương trình (4.14):
Trong bài viết này, chúng ta sẽ thảo luận về các hệ số α và β, trong đó α + β = 1 và α >> β Chúng ta chọn α = 0.98 và β = 0.02 cho các phần mềm ứng dụng thuật toán tính góc Dưới đây là hình ảnh mô tả bộ lọc bổ sung.
Chương 4 Thiết kế phần mềm
Hình 4.3 Sơ đồ khối cho bộ bù
4.1.2 Giới thiệu về giao tiếp client-server socket trong TCP/IP
Giao tiếp client-server socket là phương thức truyền thông không dây mà hệ thống MbR áp dụng Để hiểu rõ cách thức hoạt động của nó, cần nắm vững một số khái niệm cơ bản, trong đó có socket trong giao tiếp TCP.
Socket là cổng logic cho phép chương trình kết nối với chương trình khác trên thiết bị khác qua Internet Nhờ vào việc sử dụng nhiều Socket đồng thời, các chương trình mạng có thể hoạt động song song trên Internet.
Stream Socket dựa trên giao thức TCP (Transmission Control Protocol), cho phép truyền dữ liệu giữa hai quá trình đã thiết lập kết nối Giao thức này đảm bảo rằng dữ liệu được truyền đến nơi nhận một cách đáng tin cậy và đúng thứ tự, nhờ vào cơ chế quản lý luồng lưu thông trên mạng và cơ chế chống tắc nghẽn.
Một TCP/IP Socket bao gồm địa chỉ IP và cổng port, giúp xác định duy nhất một tiến trình trên mạng Cụ thể, địa chỉ IP dùng để nhận diện một máy tính trong mạng, trong khi cổng port xác định một tiến trình cụ thể trên máy đó.
Chương 4 Thiết kế phần mềm
Quy trình hoạt động của ứng dụng Server – Client bắt đầu khi Server lắng nghe và chờ kết nối từ Client qua địa chỉ IP và cổng đã được chỉ định Khi Client gửi dữ liệu đến Server, quá trình xử lý diễn ra bao gồm nhận dữ liệu, xử lý thông tin và trả kết quả lại cho Client Client chỉ thực hiện việc gửi truy vấn và chờ nhận kết quả từ Server Sơ đồ khối mô tả cách thức giao tiếp giữa client và server thông qua socket.
Hình 4.4 Sơ đồ khối mô tả cách thức giao tiếp client-server socket
4.1.3 Một số khái niệm về lập trình android
Các khái niệm sau đây sẽ cho phép người đọc hình dung được cấu tạo và cách hoạt động của một ứng dụng android a) Activity
Một phần mềm Android bao gồm nhiều activity, mỗi activity có giao diện cho phép người dùng tương tác với ứng dụng Mỗi activity đi kèm với các tập tin xử lý logic để quản lý các thao tác trên màn hình Việc chuyển đổi giữa các activity giúp hoàn thành các chức năng của phần mềm Chẳng hạn, màn hình nhập số điện thoại là một activity, và khi người dùng nhấn gọi, phần mềm sẽ chuyển sang activity khác.
Giao diện của activity được xác định qua các file XML, trong đó các Views được trình bày dưới dạng hình chữ nhật, chịu trách nhiệm vẽ và xử lý các sự kiện tương tác.
Chương 4 Thiết kế phần mềm
36 c) Tập tin xử lý logic của activity - Java
Phần mềm điều khiển trung tâm
Chương trình được lập trình cho phép BĐKTT nhận dữ liệu từ thiết bị qua Wi-Fi và cảm biến, BXLP được kết nối trực tiếp trên xe Sau khi xử lý dữ liệu, lệnh điều khiển sẽ được gửi đến động cơ để điều chỉnh chuyển động của xe và góc quay camera Trình biên dịch sử dụng là Arduino IDE phiên bản dành riêng cho Intel.
Sau đây là hình ảnh cho lưu đồ thuật toán của BĐKTT (hình 4.5):
Hình 4.5 Lưu đồ thuật toán cho phần mềm điều khiển trung tâm
Xử lý dữ liệu Điều khiển Motor & Servo
Lấy dừ liệu góc bù
Chương 4 Thiết kế phần mềm
Khởi tạo chương trình, thêm các thư viện, định nghĩa chân nối và các hàm con điều khiển servo, motor, khai báo biến và hằng cần thiết
Chờ MbR kết nối vào Wi-Fi, có kết nối thì tiến hành kiểm tra địa chỉ ip của nó
Khởi tạo cổng server socket cho MbR để chuẩn bị sẵn sàng cho việc nhận dữ liệu từ thiết bị 2
Chờ Client từ thiết bị 2 kết nối, sau khi có kết nối thì chuyển sang quá trình nhận dữ liệu
Tiến hành quá trình nhận dữ liệu điều khiển từ thiết bị 2, nhận xong chuyển sang quá trình tiếp theo
Mở cổng serial (UART) ở Baudrate đã được định trước và chờ kết nối từ Arduino Nano
Nhận dữ liệu bù góc gửi từ Arduino Nano
Xử lý các dữ liệu đã nhận được từ thiết bị 2 và Arduino Nano
Sau khi hoàn tất quá trình xử lý, hệ thống sẽ tiến hành điều khiển tốc độ và hướng quay của từng động cơ, cùng với góc quay của servo trên đỉnh và servo trên cơ sở, dựa trên dữ liệu đã được xử lý.
Cuối cùng kiểm tra xem nếu kết nối còn duy trì thì tiếp tục vòng lặp như sơ đồ
4.2.3 Cách thức nhận dữ liệu a) Nhận dữ liệu từ thiết bị 2
Dữ liệu từ thiết bị 2 được gửi đi dưới dạng một bản tin đã được đóng gói thành chuỗi ký tự, với chiều dài mỗi bản tin hoàn chỉnh là 21 ký tự Cấu trúc của bản tin này được trình bày trong bảng 4.1.
Bảng 4.1 Khung bản tin nhận
Các ký hiệu W, G, Y, Z đại diện cho các chuỗi 4 ký tự được mã hóa trong các thiết bị điều khiển, với ý nghĩa cụ thể của từng chuỗi như sau: W.
Chương 4 Thiết kế phần mềm
38 là dữ liệu tốc độ động cơ, G là dữ liệu xác định hướng và tốc độ rẽ hướng MbR,
Dữ liệu góc quay trái phải (yaw) của camera được ký hiệu là Y, trong khi dữ liệu góc quay lên xuống (pitch) được ký hiệu là Z Bản tin bắt đầu với ký tự ‘#’ và kết thúc bằng ký tự ‘!’, với các dữ liệu được ngăn cách bởi dấu ‘/’ Việc áp dụng chuẩn bản tin này sẽ giúp đơn giản hóa quá trình nhận dữ liệu.
Quá trình nhận dữ liệu từ thiết bị 2 bắt đầu khi server kiểm tra có client kết nối truyền dữ liệu Server sẽ đọc dữ liệu từng ký tự một trong chuỗi gửi đến Khi gặp ký tự bắt đầu bản tin là ‘#’, phần mềm sẽ nhập bốn ký tự tiếp theo vào mảng W cho đến khi gặp ký tự ‘/’, tại đó sẽ ngắt và nhập bốn ký tự tiếp theo vào mảng khác Quá trình này tiếp tục cho đến khi gặp ký tự ‘!’, lúc này các giá trị nhận được theo thứ tự W, G, Y, Z sẽ được chuyển đổi từ dạng String sang int.
Tín hiệu bù góc từ Arduino Nano sẽ có giá trị khác ‘0’ khi MbR di chuyển qua vật cản hoặc trên địa hình gồ ghề, thể hiện góc lệch của xe so với phương ngang Giá trị góc bù nằm trong khoảng [-90;90] và chỉ có một giá trị duy nhất, vì vậy cần mã hóa giá trị số thành một ký tự char tương ứng để tối ưu hóa thời gian xử lý và truyền nhận.
Khi góc bù là '65', nó sẽ được chuyển đổi thành ký tự 'A' và gửi đi Sau đó, phần mềm nhận sẽ chuyển 'A' trở lại thành '65' để nhập vào giá trị góc bù C.
4.2.4 Cách thức xử lý dữ liệu với giá trị W nhận về sẽ có giá trị trong khoảng [-255;255], G là [-85;85], Y là [- 90;90], Z là [0;180] và góc bù C là [-90;90] Lý do có giá trị như vậy sẽ được giải thích ở phần truyền dữ liệu của PMĐKCĐ và PMĐKGQ
Trên MbR, động cơ có thể quay tối đa với giá trị đầu vào là 255 và giảm dần đến khi dừng lại khi giá trị tiến về 0 Điều này cho phép đảo chiều quay động cơ và điều khiển riêng biệt từng động cơ Nhờ đó, MbR có thể hoạt động với các chế độ khác nhau tùy thuộc vào giá trị W và G nhận được, với chiều quay cụ thể của động cơ trái (M1) và động cơ phải (M2) được thể hiện trong bảng 4.2.
Chương 4 Thiết kế phần mềm
Bảng 4.2 Tính toán giá trị nhập vào và chiều quay cho từng motor theo W, G
T W = G = Tốc độ M1 Tốc độ M2 Chiều
Hệ thống điều khiển động cơ của xe cho phép linh hoạt với 8 chế độ hoạt động và 1 chế độ dừng, giúp điều chỉnh tốc độ và hướng di chuyển Để tránh việc điều khiển vô tình, khoảng giá trị “-5;5” được sử dụng, đảm bảo tín hiệu không bị kích hoạt khi người dùng di chuyển ngón tay nhẹ Sự thay đổi của các giá trị W và G sẽ ảnh hưởng trực tiếp đến tốc độ và độ cua của xe; ví dụ, trong chế độ số 5, khi xe tiến và tay phải điều khiển sang phải, giá trị G càng lớn thì độ cua càng lớn, trong khi tốc độ của động cơ còn lại được xác định bởi W Ở chế độ số 4, xe thực hiện chuyển động xoay phải tại chỗ với giá trị W nhỏ, cho phép điều chỉnh chính xác hơn.
G sau khi khuếch đại ba lần
Chế độ hoạt động của servo cho phép camera điều chỉnh góc nhìn từ thấp nhất đến cao nhất khi giá trị nhập vào cho top servo tăng từ 0 đến 180 Đồng thời, base servo sẽ thay đổi hướng quay của camera từ trái sang phải khi giá trị nhập vào tăng từ 0 đến 180 Do đó, giá trị Y quyết định góc quay của servo, trong khi giá trị Z và C xác định góc cho top servo, được xử lý theo bảng 4.3.
Chương 4 Thiết kế phần mềm
Bảng 4.3 Tính toán giá trị góc quay của servo
Phần mềm xử lý phụ
Trong quá trình hoạt động của MbR, cảm biến MPU6050 được gắn cố định trên thân xe sẽ đo lường các thông số từ gyroscope và accelerometer, sau đó gửi dữ liệu về BLXP Arduino Nano Tại đây, Arduino Nano sẽ áp dụng thuật toán tính toán góc quay để xác định góc nghiêng của xe tại thời điểm đó Dữ liệu này sẽ được chuyển về BĐKTT nhằm thực hiện việc bù góc quay cho camera, giúp giữ cho camera ổn định theo điều khiển của người dùng.
Sau đây là lưu đồ thuật toán cho arduino Nano (hình 4.6)
Gửi tín hiệu bù góc cy
Xử lý dữ liệu đưa ra góc bù
Hình 4.6 Lưu đồ thuật toán cho Bộ xử lý phụ
Chương 4 Thiết kế phần mềm
Khai báo các biến, hàm, thư viện cần thiết cho chương trình Mở cổng serial ở baurate tương thích với Intel edison
Đọc dữ liệu từ cảm biến MPU6050 qua giao thức I2C và xử lý thông tin để tính toán góc quay theo ba trục.
Bù góc quay được thực hiện theo trục pitch, chỉ cần lấy góc pitch để xác định độ nghiêng lên xuống của MbR Tiếp theo, giá trị góc pitch sẽ được chuyển đổi thành ký tự char tương ứng, như đã trình bày chi tiết trong mục 4.2.3 phần b.
Mở cổng serial để chuyển bản tin sang Intel Edison và thực hiện lại vòng lặp theo lưu đồ thuật toán Đồ thị thể hiện tín hiệu góc nghiêng của xe khi nằm ngang và giao động lên xuống được trình bày trong hai hình ảnh Góc pitch được thu nhận từ việc sử dụng bộ lọc bổ sung và không sử dụng; trong đó, đường màu xanh dương biểu thị tín hiệu góc pitch đo từ accelerometer, đường màu xanh dương nhạt là tín hiệu góc đo từ gyroscope, và đường màu cam là tín hiệu góc pitch sau khi áp dụng lọc bù.
Hình 4.7 Đồ thị góc pitch khi xe nằm ngang
Chương 4 Thiết kế phần mềm
Hình 4.8 Đồ thị góc pitch khi xe nghiêng lên xuống
Dựa trên đồ thị, có thể rút ra một số nhận xét liên quan đến thuật toán xác định góc quay Cụ thể, góc đo từ accelerometer thường gặp phải nhiễu, trong khi góc đo từ gyroscope lại có hiện tượng trôi giá trị Do đó, việc áp dụng bộ lọc bổ sung là cần thiết để khắc phục nhược điểm của cả hai loại cảm biến, như thể hiện qua đường màu cam trong đồ thị.
Phần mềm điều khiển chuyển động
PMĐKCĐ được phát triển trên nền tảng Android, tương thích với hầu hết các phiên bản hiện hành Bộ điều khiển hoạt động dựa vào thao tác vuốt tay của người dùng, trong đó tay trái thực hiện vuốt lên xuống và tay phải vuốt trái phải Giá trị điều khiển chuyển động của xe được xác định thông qua khoảng cách giữa điểm chạm đầu tiên của ngón tay và vị trí hiện tại của nó, sau đó các tín hiệu này sẽ được xử lý, đóng gói và truyền đến MbR.
Chương 4 Thiết kế phần mềm
Lưu đồ thuật toán của PMĐKCĐ được thể hiện trong hình 4.9
Nhập Ip,Port mở server,client socket
Xử lý thao tác vuốt tay thành giá trị G, W
Client thiết bị 1 kết nối ?
Lấy giá trị Z, Y từ thiết bị 1 Đóng gói thành bản tin S= f (w,g,z,y)
Gửi bản tin đến MbR S=f (w,g,z,y) qua client thiết bị 2
Hình 4.9 Lưu đồ thuật toán bộ điều khiển chuyển động
Phần mềm sẽ được chia thành hai phần (activity) lần lượt là phần khởi động và phần điều khiển như sau a) Phần khởi động
Phần khởi động của ứng dụng sẽ có giao diện cho phép người dùng nhập thông số độ phân giải Xp, Yp của màn hình điện thoại, thông số này có thể tìm thấy trong tài liệu của nhà sản xuất Người dùng chỉ cần nhập giá trị tương đối chính xác, giúp phần mềm hoạt động hiệu quả trên nhiều nền tảng điện thoại với độ phân giải khác nhau.
Chương 4 Thiết kế phần mềm
Để tạo client cho quá trình gửi dữ liệu, cần nhập địa chỉ IP và port của server socket trên MbR, cùng với cổng serverport mà PMĐKCĐ sẽ mở để nhận dữ liệu từ PMĐKGQ Sau khi hoàn tất việc nhập thông tin, nhấn nút để tiếp tục.
Nhấn 'CONNECT' trên màn hình để chuyển sang giao diện điều khiển, nơi các thông số nhập vào sẽ được liên kết với tập tin Java của phần khởi động Những thông số này sau đó sẽ được gửi đến phần điều khiển để xử lý dữ liệu và mở socket truyền thông Hình ảnh bên dưới minh họa giao diện khởi động của PMĐKCĐ (hình 4.10).
Hình 4.10 Giao diện khởi động phần mềm điều khiển chuyển động b) Phần điều khiển
Phần điều khiển cho PMĐKCĐ bao gồm một giao diện sử dụng công nghệ cảm ứng đa điểm trên Android, chia màn hình thành hai phần để điều khiển đồng thời hai giá trị W và G Màn hình bên trái cho phép người dùng vuốt lên xuống bằng tay trái để điều chỉnh tốc độ tiến lùi (giá trị W), trong khi màn hình bên phải cho phép vuốt trái phải bằng tay phải để kiểm soát hướng và độ quay cho MbR (giá trị G) Chế độ điều khiển hiện tại như tiến-lùi hay trái-phải cũng được hiển thị trên màn hình Mỗi nửa màn hình được liên kết với một tập tin xử lý logic (java) riêng để quản lý các tác vụ diễn ra.
Chương 4 Thiết kế phần mềm
Hình 4.11 Giao diện điều khiển phần mềm điều khiển chuyển động
Phương thức hoạt động của phần điều khiển được thiết lập cho nửa màn hình trái, trong đó các điểm trên màn hình được gán tọa độ theo trục x, y Khi ngón tay chạm vào màn hình, tọa độ chạm sẽ được xử lý qua hàm ‘Multi-touch’ thông qua sự kiện ‘action_pointer_down’, và tọa độ x của ngón tay sẽ được lưu vào biến X0 Ứng dụng chỉ cho phép một điểm chạm trên mỗi nửa màn hình, nghĩa là khi đã có một điểm chạm, sẽ không nhận thêm bất kỳ điểm chạm nào khác, nhằm tránh tình trạng hai ngón tay cùng chạm vào màn hình dẫn đến loạn giá trị điều khiển.
Sau khi giá trị điểm chạm ban đầu X0 được lấy ra, thông qua sự kiện
‘action_move’ liên tục cập nhật giá trị Xt, đại diện cho tọa độ điểm chạm của ngón tay Từ hai giá trị này, chúng ta có thể xác định độ dài và hướng vuốt của ngón tay bằng cách tính hiệu giữa chúng Sau đó, với giá trị độ phân giải Xp, hệ thống sẽ xử lý và đưa ra giá trị W hợp lý Tương tự, cho màn hình bên phải, các giá trị Y0, Yt và Yp được lấy để tính toán và đưa ra giá trị G.
W, G ở trên sẽ được xử lý thêm lần nữa trước khi sẵn sàng cho việc truyền thông, sau đó nhận dữ liệu góc quay từ thiết bị 1, đóng gói bản tin và truyền đến MbR Cách xử lý và truyền thông sẽ được trình bày ở mục sau
4.4.3 Cách xử lý dữ liệu và truyền thông a) Xử lý dữ liệu
Dữ liệu W sẽ được xử lý từ ba giá trị X0, Xt, Xp theo phương trình (4.15):
Chương 4 Thiết kế phần mềm
Theo công thức, khi vuốt tay sang trái trên màn hình, độ lớn W tỉ lệ thuận với chiều dài đường vuốt theo chiều dọc so với vị trí chạm ban đầu Dấu của W cho biết hướng vuốt để điều khiển chuyển động tiến-lùi Giá trị W tối đa khoảng 350, vượt quá giới hạn 255 của động cơ, nhằm tạo độ dư trong điều khiển, giúp người sử dụng thoải mái hơn Sau đó, giá trị W sẽ được xử lý để nằm trong khoảng [-255; 255].
Tương tự với màn hình bên phải giá trị Y0, Yt, Yp được lấy và xử lý theo công thức (4.16) để tính được dữ liệu G:
G sẽ đạt giá trị tối đa khoảng 120 và sẽ được xử lý lại trong phần truyền thông Hướng và độ lớn của G tỉ lệ thuận với chiều vuốt trái-phải, điều khiển chuyển động sang trái hoặc phải tương ứng.
Việc truyền thông sẽ diễn ra trong file logic thứ 3, nơi tín hiệu W và G được xử lý theo chuẩn truyền thông cố định Sau khi nhận giá trị Y và Z từ thiết bị 1, các giá trị này sẽ được ghép lại thành một bản tin hoàn chỉnh Cuối cùng, một client socket sẽ được tạo ra để gửi bản tin đến MbR.
Cách xử lý tín hiệu được thực hiện bằng cách xem xét giá trị W ở dạng số nguyên trong khoảng từ -350 đến 350 Khi dữ liệu được gửi theo chuẩn bản tin, W được biểu diễn bằng 4 ký tự dạng chuỗi, với giá trị nằm trong khoảng từ -255 đến 255 Do đó, quy trình xử lý sẽ được thực hiện theo bảng 4.4.
Chương 4 Thiết kế phần mềm
Bảng 4.4 Xử lý dữ liệu W trước truyền thông
TT Giá trị W Cách xử lý Kết quả
1 -350;-256 Gán W = 255 chuyển về string và thêm kí tự “-” “-255”
2 -255;-100 Gán W= -W chuyển về string và thêm kí tự “-” “-xxx”
3 -99;-10 Gán W= -W chuyển về string và thêm kí tự “-0” “-0xx”
4 -9;-1 Gán W= -W chuyển về string và thêm kí tự “-00” “-00x”
5 0;9 Giữ nguyên W chuyển về string và thêm kí tự “000” “000x”
6 10;99 Giữ nguyên W chuyển về string và thêm kí tự “00” “00xx”
7 100;255 Giữ nguyên W chuyển về string và thêm kí tự “0” “0xxx”
8 255;350 Gán W = 255 chuyển về string và thêm kí tự “0” “0255”
Giá trị G sẽ được tiến hành xử lý tương tự W để đưa về chuẩn bao gồm 4 kí tự
Thông qua cổng server port mà PMĐKCĐ mở, các giá trị Y, Z từ PMĐKGQ sẽ được gửi đến với chuẩn 4 ký tự tương tự W, G Sau khi hoàn tất quá trình nhận dữ liệu, bản tin sẽ được đóng gói với ký tự bắt đầu là “#”, các dữ liệu được ngăn cách bằng “/” và kết thúc bằng “!” Client socket sẽ được khởi tạo với địa chỉ IP và cổng Port của server trên BĐKTT để gửi bản tin theo định dạng trong bảng 4.5.
Bảng 4.5 Bản tin truyền đi
Việc kết hợp dữ liệu từ các thiết bị điều khiển riêng biệt thành một quy chuẩn chung giúp tránh xung đột dữ liệu Nếu MbR nhận từng dữ liệu riêng lẻ, nó sẽ gặp khó khăn trong việc phân biệt các loại dữ liệu khác nhau để điều khiển, dẫn đến khả năng xung đột, chẳng hạn như khi dữ liệu 'W' có thể được nhận nhiều lần.
Chưa nhận được ‘Z’ do cơ chế nhận của BĐKTT chỉ tiếp nhận từng ký tự char Việc sử dụng quy chuẩn giúp MbR xác định trước số lượng ký tự trong bản tin, thứ tự dữ liệu, thời điểm bắt đầu và kết thúc, từ đó đảm bảo việc nhận dữ liệu hiệu quả và tránh mất tin.
Chương 4 Thiết kế phần mềm
Phần mềm điều khiển góc quay camera
Nhiệm vụ điều khiển góc quay camera sẽ được thực hiện qua phần mềm trên thiết bị 1, sử dụng cảm biến gyroscope và accelerometer tích hợp trên điện thoại để tính toán góc quay Góc quay này tương ứng với chuyển động đầu của người dùng và sẽ được truyền đến MbR để điều khiển camera thông qua hai động cơ servo.
Lưu đồ thuật toán cho PMĐKGQ như hình 4.12
Dùng thuật toán tính góc
Nhập Ip, Port của server thiết bị 2
Hình 4.12 Lưu đồ thuật toán của phần mềm điều khiển góc quay
Phần mềm này có khả năng tính toán giá trị góc “Y - yaw, Z - pitch” thông qua thao tác quay đầu mà không cần điều khiển từ giao diện như phần mềm điều khiển khác Do đó, nó chỉ cần sử dụng một activity duy nhất, bao gồm cả giao diện và file logic, tích hợp cả phần nhập thông số ban đầu và phần điều khiển Việc sử dụng một activity sẽ giúp tiết kiệm tài nguyên và tối ưu hóa hiệu suất.
Chương 4 Thiết kế phần mềm
49 nguyên bộ nhớ của ứng dụng và tránh việc phải chuyển thông tin giữa các activity với nhau Sau đây là hình ảnh giao diện của PMĐKGQ (hình 4.13):
Hình 4.13 Giao diện phần mềm điều khiển góc quay
Nguyên lý điều khiển của phần mềm sử dụng dữ liệu từ cảm biến gia tốc và con quay hồi chuyển tích hợp trong điện thoại Thuật toán kết hợp từ hai cảm biến và bộ lọc để xác định góc quay, từ đó tính toán các giá trị roll, pitch và yaw, hiển thị trên giao diện người dùng.
Camera được điều khiển bằng 2 servo cho phép quay 2 bậc tự do, chỉ cần điều chỉnh góc yaw để quay trái-phải và góc pitch để quay lên-xuống Dữ liệu điều khiển được xác định qua giá trị ban đầu y0 và giá trị tức thời yt của góc yaw.
Khi bắt đầu điều khiển, bạn cần nhập địa chỉ IP và cổng của server socket trên PMĐKCĐ Sau đó, giữ đầu nhìn thẳng và ấn nút start; giá trị góc yaw của điện thoại sẽ được lưu lại làm giá trị góc ban đầu theo phương ngang Đối với phương dọc, góc ban đầu sẽ được xác định theo phương vuông góc với pháp tuyến mặt đất.
Tiến hành xử lý các giá trị góc đo để thu thập dữ liệu và đóng gói bản tin truyền thông gửi đến MbR trong phần tiếp theo.
Chương 4 Thiết kế phần mềm
4.5.3 Xử lý và truyền thông
Do góc yaw được tính trong khoảng [-179; 180], việc sử dụng hiệu giữa yt và y0 có thể dẫn đến giá trị hiệu lớn hơn 360 hoặc nhỏ hơn -360, gây khó khăn trong các phép toán liên quan.
Vấn đề liên quan đến góc quay ‘-360’ xuất phát từ tính chu kỳ của góc, trong đó giá trị tiếp theo của góc ‘180’ là ‘-179’ Tuy nhiên, đối với góc pitch, do góc ban đầu luôn vuông góc với pháp tuyến mặt đất, việc xử lý trở nên đơn giản hơn Dữ liệu liên quan sẽ được trình bày trong bảng 4.6.
Bảng 4.6 Xử lý giá trị điều khiển góc quay Góc Giá trị y0 Giá trị yt Cách xử lý yaw
Góc Giá trị zt Cách xử lý
Khi xử lý góc yaw, nếu góc y0 là '174' và góc yt là '-176', điều này cho thấy đầu đã quay được 10 độ Tuy nhiên, khi thực hiện phép tính hiệu 'Y = yt - y0', kết quả sẽ là '-350' Để xử lý trường hợp này, cần thêm một bước điều chỉnh.
Khi xử lý góc '360' vào Y, quy trình tương tự áp dụng cho các trường hợp khác Đối với góc Pitch, quá trình đơn giản hơn: nếu giá trị zt âm, sẽ đảo dấu và nhập 'Z'.
Sau khi tín hiệu được xử lý, bảng tin sẽ được định dạng thành chuẩn 4 ký tự giống như W, G ở mục 4.4.3, sau đó sẽ được đóng gói và gửi qua client socket đến địa chỉ IP và cổng của server socket trên thiết bị 2 đã được nhập trong giao diện.
Phần mềm hiển thị hình ảnh thực tế ảo
Một trong những yêu cầu quan trọng của hệ thống là khả năng quan sát hình ảnh truyền về từ camera gắn trên MbR theo thời gian thực thông qua kính.
Chương 4 Thiết kế phần mềm
Công nghệ thực tế ảo mang đến cho người dùng trải nghiệm như đang hòa mình vào không gian làm việc của MbR Để đảm bảo hiệu quả, phần mềm phát triển cần đáp ứng hai yêu cầu chính: thu nhận hình ảnh từ camera theo thời gian thực và hiển thị chúng trên hai khung hình giống nhau Phần mềm này được xây dựng trên nền tảng hệ điều hành Android, hoạt động trên thiết bị 1.
Sau đây là lưu đồ thuật toán (hình 4.14)
Kết nối Wi-Fi? Đọc và giải mã dữ liệu
Hình 4.14 Lưu đồ thuật toán phần mềm hiển thị hình ảnh thực tế ảo
Camera truyền hình ảnh qua USB tới BĐKTT và phát qua wifi theo chuẩn nén MJPEG, thực chất là chuỗi hình ảnh liên tiếp Để quan sát qua kính thực tế ảo, camera chỉ sử dụng một luồng hình ảnh, trong khi ứng dụng nhận hai luồng dữ liệu từ camera theo thời gian thực Hai luồng này sẽ lần lượt hiển thị trên hai khung hình có kích thước bằng nhau, với quá trình luân phiên nhận và hiển thị diễn ra liên tục.
Chương 4 Thiết kế phần mềm
Hình ảnh chuyển động giữa hai luồng phải đủ ngắn để mắt người cảm nhận được sự tương đồng trên hai khung hình Sơ đồ khối mô tả chi tiết quá trình này như trong hình 4.15.
- Đọc và giải mã dữ liệu
- Lưu trữ dữ liệu dưới dạng các điểm ảnh
- Hiển thị các điểm ảnh dưới dạng thời gian thực
Hình 4.15 Sơ đồ khối cho tiến trình nhận và hiển thị video
PMHTHA thực tế ảo bao gồm 3 phần (activity): phần khởi động, phần cài đặt, và phần xem video
Giao diện khởi động hiển thị hai phím ấn tùy chọn, bao gồm phím cài đặt để truy cập phần cài đặt và phím xem video để mở phần xem video Các phím này được liên kết với một file logic để xử lý chức năng của chúng.
Hình 4.16 Giao diện khởi động
Phần cài đặt giao diện bao gồm ô nhập URL, cho phép người dùng nhập đường link của web server chứa hình ảnh trực tiếp từ camera IP trên MbR Ngoài ra, còn có mục nhập tên đăng nhập và mật khẩu cho những camera IP yêu cầu tài khoản để xem hình ảnh Phần này cũng tích hợp một file logic để nhận dữ liệu.
Chương 4 Thiết kế phần mềm
53 dữ liệu nhập vào lưu lại để sử dụng cho phần xem video Sau đây là hình ảnh cho giao diện cài đặt (hình 4.17)
Hình 4.17 Giao diện cài đặt
Sau khi hoàn tất cài đặt, phần xem video sẽ hoạt động khi có hình ảnh được truyền lên URL Giao diện hiển thị gồm hai khung hình giống nhau, mỗi khung hình liên kết với một luồng nhận dữ liệu từ file Java Hình ảnh sẽ được luân phiên nhận và hiển thị trên cả hai khung hình, tạo thành giao diện xem video hiệu quả.
Hình 4.18 Giao diện xem video
Chương 4 đã hoàn thành được việc thiết kế phần mềm cho toàn bộ hệ thống, giới thiệu một số khái niệm và trình bày thuật toán tính góc quay đồng thờinêu ra quá trình xử lý và truyền nhận dữ liệu giữa các thiết bị trong hệ thống MbR
Chương 5 Ghép nối và chạy thử