42
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG ──────── * ─────── ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH CÔNG NGHỆ THÔNG TIN XÂY DỰNG MODULE ĐỊNH VỊ VỆ TINH ĐỘ CHÍNH XÁC CAO TRÊN HỆ ĐIỀU HÀNH ROS Sinh viên thực hiện: Nguyễn Bá Quý Lớp KTMT&TT2 K55

Xây dựng module định vị vệ tinh độ chính xác cao

Embed Size (px)

Citation preview

Page 1: Xây dựng module định vị vệ tinh độ chính xác cao

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘIVIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

──────── * ───────

ĐỒ ÁNTỐT NGHIỆP ĐẠI HỌC

NGÀNH CÔNG NGHỆ THÔNG TIN

XÂY DỰNG MODULE ĐỊNH VỊ VỆ TINH ĐỘ CHÍNH XÁC CAO TRÊN HỆ ĐIỀU

HÀNH ROS

Sinh viên thực hiện: Nguyễn Bá QuýLớp KTMT&TT2 K55

Giáo viên hướng dẫn: TS. Hoàng Văn Hiệp

HÀ NỘI 05 -2015

Page 2: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

1. Thông tin về sinh viênHọ và tên sinh viên: Nguyễn Bá QuýĐiện thoại liên lạc: 0988098337 Email: [email protected]ớp: KTMT&TT 2 – K55 Hệ đào tạo: Đại học chính quyĐồ án tốt nghiệp được thực hiện tại: Bộ môn Kỹ thuật máy tính Đại học Bách khoa Hà Nội.Thời gian làm ĐATN: Từ ngày 05/03/2015 đến 29/05/20152. Mục đích nội dung của ĐATNXây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS.3. Các nhiệm vụ cụ thể của ĐATN

Nhiệm vụ chung của cả nhóm Xây dựng hoàn chỉnh robot với khung, bánh xe và các thiết bị cần thiết phải

được lắp trên xe Xây dựng được mô hình điều khiển robot trên hệ điều hành ROS, với các

node trao đổi dữ liệu với nhau qua các topic. Điều khiển robot chạy được. Robot nhận diện và né được vật cản trên đường đi. Xác định được tọa độ GPS. Truyền video thời gian thực được đến máy chủ ở xa. Hiển thị được các thông số hoạt động như vận tốc 2 bánh, vị trí theo GPS,

các node còn hoạt động hay không lên trên thiết bị máy tính bảng. Nhiệm vụ riêng:

Tìm hiểu thư viện RTKLIB để lấy tọa độ từ bộ thu Hemisphere. Tìm hiểu kiến trúc hệ điều hành ROS, các phương thức hoạt động, giao tiếp

dữ liệu, phương pháp xây dựng ứng dụng trên ROS. Xây dựng một module có thể cung cấp tọa độ GPS cho hoạt động của robot.

4. Lời cam đoan của sinh viên:Đề tài này được thực hiện bởi nhóm 5 người bao gồm: Ngô Tuấn Anh, Nguyễn Đức Trung, Nguyễn Bảo Khánh, Nguyễn Thị Mai và Nguyễn Bá Quý. Trong đó, quá trình xây dựng hoàn chỉnh robot với khung, bánh xe, các thiết bị khác và xây dựng mô hình điều khiển robot trên hệ điều hành ROS cả nhóm cùng phối hợp thực hiện. Phần điều khiển cho robot chạy được do Nguyễn Đức Trung thực hiện. Phần nhận diện và né vật cản trên đường đi do Nguyễn Bảo Khánh thực hiện. Phần xác định tọa độ GPS do tôi Nguyễn Bá Quý thực hiện. Phần truyền video thời gian thực do Ngô Tuấn Anh thực hiện. Phần hiển thị thông số hoạt động lên máy tính bảng do Nguyễn Thị Mai thực hiện.Tôi Nguyễn Bá Quý cam kết ĐATN là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Hoàng Văn Hiệp.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 2

Page 3: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Các kết quả nêu trong ĐATN là trung thực, không phải là sao chép toàn văn của bất kỳ công trình nào khác.

Hà Nội, ngày 29 tháng 05 năm 2015Tác giả ĐATN

Nguyễn Bá Quý

5. Xác nhận của giáo viên hướng dẫn về mức độ hoàn thành của ĐATN và cho phép bảo vệ:

Hà Nội, ngày 29 tháng 05 năm 2015Giáo viên hướng dẫn

TS.Hoàng Văn Hiệp

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 3

Page 4: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

LỜI CẢM ƠNKhông có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp của người khác. Trong suốt thời gian từ khi bắt đầu học tập ở giảng đường đại học đến nay, em đã nhận được rất nhiều sự quan tâm, giúp đỡ của thầy cô, gia đình và bạn bè.

Trước hết em xin gửi lời cám ơn chân thành tới các thầy cô và cán bộ giảng dạy tại trường Đại học Bách Khoa Hà Nội, các thầy cô trong bộ môn Kỹ thuật máy tính đã tận tình chỉ bảo, giúp đỡ em trong quá trình học tập và nghiên cứu khoa học tại trường. Các thầy cô không chỉ dạy kiến thức, phương pháp làm việc và nghiên cứu khoa học, mà còn giúp đỡ chúng em trưởng thành hơn trong cuộc sống.

Đặc biệt em xin bày tỏ lòng biết hơn sâu sắc tới thầy Hoàng Văn Hiệp, người đã tận tâm hướng dẫn, giúp đỡ em trong suốt quá trình thực hiện đồ án tốt nghiệp. Em cũng xin gửi lời cám ơn chân thành nhất tới thầy Ngô Lam Trung đã luôn nhiệt tình giúp đỡ, hướng dẫn và tạo điều kiện giúp em nghiên cứu trong suốt quá trình nghiên cứu và học tập tại phòng Lab 505 – Tòa nhà B1Trường Đại học Bách khoa Hà Nội.

Cuối cùng, em xin kính chúc thầy cô trong Bộ môn Kỹ Thuật Máy Tính thật dồi dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến thức cho thế hệ mai sau.

Hà Nội ngày 29 tháng 5 năm 2015

Sinh viên: Nguyễn Bá Quý

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 4

Page 5: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP

Trong đồ án này, em đã tìm hiểu và xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Đồ án của em được trình bày qua 4 chương:

Chương I: Đặt vấn đề và đưa ra giải pháp

Trình bày lý do xây dựng hệ thống robot tự hành

Chương II: Kết quả xây dựng hệ thống robot chung

Trình bày các vấn đề lý thuyết liên quan: hệ điều hành ROS, GPS và thư viện RTKLIB.

Chương III: Quá trình thực hiện và kết quả đạt được của cá nhân

Chương IV: Kết luận và định hướng

Tài liệu tham khảo

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 5

Page 6: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

LỜI NÓI ĐẦU

Ngày nay dưới sự phát triển vượt bậc của nhân loại về cả khoa học lẫn kinh tế, các robot thông minh như ASIMO, TIAN…không còn quá xa lạ với mọi người. Robot được sử dụng rộng rãi trong công nghiệp, nghiên cứu khoa học, giải trí và đặc biệt là an ninh quốc phòng. Những Robot này đòi hỏi cần hoạt động tự động, thông minh và linh hoạt. Do sự phát triển vượt bậc về công nghệ chế tạo cảm biến, đặc biệt là các loại cảm biến 3D, định vị, camera…, cùng với việc tích hợp các máy tính vào robot đã khiến cho các ý tưởng đáng kinh ngạc về tính tương tác với người và khả năng tự vận hành của robot được dần hiện thực hóa.

Trong lĩnh vực robot phục vụ con người, robot không chỉ di chuyển, mà còn mang các vật dụng thường ngày, tránh được các vật cản (cố định, di chuyển được, người…), nhận biết được sự thay đổi của môi trường hoạt động, quyết định và vận hành theo các tác vụ đã được hoạch định trước.

Các bài toán trên phải được giải quyết dựa vào các thông tin không hoàn toàn chính xác, nhiễu thay đổi, phụ thuộc nhiều vào môi trường hoạt động. Trong đó các bài toán về robot tự hành, bài toán về định vị robot và tránh được các vật cản được xem là một bài toán nền tảng để có thể thực hiện các tác vụ thông minh kế tiếp.

Ở phạm vi nghiên cứu đồ án lần này, cả nhóm đã cùng nhau xây dựng hệ thống robot với các tác vụ cơ bản trên, hướng tới mục đích xây dựng robot giám sát.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 6

Page 7: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

MỤC LỤC

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP..............................................2LỜI CẢM ƠN............................................................................................................3TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP....................................................4LỜI NÓI ĐẦU...........................................................................................................5MỤC LỤC..................................................................................................................6DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ.........................................7PHẦN I: Đặt vấn đề và đưa ra giải pháp................................................................8

1.1. Đặt vấn đề......................................................................................................81.2. Các kết quả cần đạt được...............................................................................9

PHẦN II: KẾT QUẢ XÂY DỰNG HỆ THỐNG CHUNG.................................102.1. Chế tạo robot...............................................................................................102.2. Xây dựng mô hình điều khiển.....................................................................13

2.2.1. Tổng quan về hệ điều hành ROS..........................................................132.2.1.1. Tầng ROS Filesystem........................................................................142.2.1.2. Tầng Computation Graph..................................................................152.2.1.3. Tầng Community...............................................................................182.2.2. Mô hình điều khiển hệ thống dựa trên ROS.........................................19

2.3. Các kết quả..................................................................................................21PHẦN III: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ ĐẠT ĐƯỢC CỦA CÁ NHÂN.......................................................................................................................23

3.1 Phân tích yêu cầu.........................................................................................233.2 Thư viện RTKLIB.......................................................................................23

3.2.1 Tổng quan về GPS................................................................................233.2.2 RTKLIB là gì?......................................................................................23

3.3 Xác định tọa độ bằng RTKLIB...................................................................243.3.1 Sơ đồ khối.............................................................................................243.3.2 Các tham số cấu hình............................................................................253.3.3 Một số hàm và cấu trúc sử dụng để lấy tọa độ trong RTKLIB............25

3.4 Xây dựng chương trình................................................................................263.5 Kết quả đạt được..........................................................................................27

PHẦN IV: KẾT LUẬN VÀ ĐỊNH HƯỚNG........................................................294.1 Những việc đã làm được.............................................................................294.2 Những việc chưa làm được..........................................................................294.3 Những khó khăn gặp phải............................................................................294.4 Tổng kết.......................................................................................................29

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 7

Page 8: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ

Thuật ngữ Ý nghĩaMessage Thông điệpModule Thành phần, chức năngMotor Động cơNode File thực thiPublish Quảng bá gói tinRobot Người máyRobotics Ngành robot họcRS232 Kết nối RS232Subcribe Theo dõiTopic Chủ đề

Từ viết tắt Viết đầy đủ Ý nghĩa

AHRS Attitude and heading reference system Hệ thống tham chiếu hướng và trạng thái

DOF Degree of Freedom Bậc tự do

GPS Global Positioning System Hệ thống định vị toàn cầu

ICC Instantaneous Center of Curvature Tâm đường cong tức thời

IMU Inertial measurement unit Đơn vị đo lường quán tính

ROS Robot Operating System

Phần mềm nền tảng giúp phát triển các ứng dụng robot

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 8

Page 9: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

PHẦN I: Đặt vấn đề và đưa ra giải pháp1.1. Đặt vấn đề

Khái niệm Robot hay người máy là một cỗ máy cơ-điện tử được điều khiển bởi một chương trình máy tính hoặc một mạch điện tử, thực hiện công việc một cách tự động hoặc bán tự động. Để phân biệt với các loại máy thông thường, Robot cần có vài đặc điểm sau (một cách gần chính xác):

Do con người tạo ra (nhân tạo). Có khả năng nhận biết môi trường xung quanh. Có thể tương tác với những vật thể trong môi trường. Có sự thông minh, có khả năng đưa ra các lựa chọn dựa trên môi trường và

được điều khiển một cách tự động theo những trình tự đã được lập trình trước.

Có khả năng điều khiển được bằng các lệnh để có thể thay đổi tùy theo yêu cầu của người sử dụng.

Có thể di chuyển quay hoặc tịnh tiến theo một hay nhiều chiều. Có sự khéo léo trong vận động.

Lĩnh vực công nghệ liên quan đến thiết kế, xây dựng cấu trúc, điều khiển hoạt động và xây dựng ứng dụng dựa trên robot, cũng như các hệ thống máy tính, cảm biến, và xử lý thông tin được gọi là “Robotics”. Ngày nay việc chế tạo robot còn được lấy cảm hứng từ tự nhiên tạo nên một lĩnh vực mới là robot phỏng sinh – còn được gọi là “Soft robotics”. Tùy thuộc vào mục đích và phương thức tiếp cận, lĩnh vực robot có thể tìm hiểu ở nhiều khía cạnh khác nhau.

Hiện nay có thể phân biệt các loại robot thành các mảng chính, được quan tâm nhiều là: Các loại tay máy robot công nghiệp (Robot manipulators), robot di động (Mobile robots), robot phỏng sinh (Bio-inspired robots) và robot cá nhân (Personal robots). Trong đó robot tự hành hay robot di động là một trong những hướng phát triển của lĩnh vực robotics, trọng tâm là nghiên cứu chuyển động của robot trong một không gian nhất định. Robot di động tự hành là hướng nghiên cứu nóng hiện nay, được thực hiện với rất nhiều nhóm nghiên cứu trên thế giới. Robot tự hành thực sự là một lĩnh vực riêng biệt từ cuối những năm 1960 bằng dự án Shakey tại SRI. Báo cáo của N.J.Nilsson “A Mobile Automation: An Application of Artificial Inteligence Techniques” tại IJCAI 1969 đã đưa ra các yếu tố “nhận thức”, “lập bản đồ”, “lập kế hoạch đường đi” và các khái niệm về kiến trúc điều khiển. Ngày nay với sự phát triển của máy tính và vi xử lý cũng như là các loại cảm biến đã giúp cho robot tự hành phát triển không ngừng. Robot có thể được điều khiển bằng vi xử lý hoặc máy tính nhúng; một hệ thống robot có thể được kiểm soát bởi một máy tính trung tâm qua mạng không dây. Việc tương tác với môi trường bên

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2

1

9

Page 10: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

ngoài có thể được thực hiện nhờ vào các cảm biến siêu âm, hồng ngoại hoặc camera. Việc định hướng robot trong không gian được thực hiện bằng GPS hoặc la bàn số. Các tính năng của robot tự hành rất đa dạng : robot có thể di chuyển trong môi trường độc hại, địa hình phức tạp, có thể vẽ lại bản đồ của môi trường và truyền về bộ điều khiển trung tâm. Dưới đây là hình ảnh của robot khám phá sao hỏa của NASA có khả năng định vị và dẫn hướng nhờ vào các cặp camera, phân tích thành phần vật chất bằng cách phân tích quang phổ, truyền dữ liệu về trái đất bằng sóng radio ...

Chúng ta đã chứng kiến sự phát triển như vũ bão của công nghệ thông tin từ khi máy tính cá nhân PC ra đời (1980) đến nay. Chỉ trong vòng 30 năm, bộ mặt của thế giới đã thay đổi đáng kể do PC thâm nhập vào mọi ngóc ngách của cuộc sống. Hiện nay, PC đã không còn là trung tâm của cuộc cách mạng công nghệ thế giới. Theo dự báo trong vòng 20 năm nữa, robot sẽ là trung tâm của cuộc cách mạng công nghệ lớn tiếp theo trên thế giới.

Như đã trình bày ở trên thì xu hướng phát triển robot ngày càng có nhiều chức năng hơn cũng như tích hợp nhiều công nghệ hiện đại. Nhóm đồ án gồm có 5 sinh viên quyết định thực hiện xây dựng một robot tự hành với các tính năng thường thấy nhất. Yêu cầu đặt ra là robot sẽ là có chức năng sau:

Chuyển động theo hướng và vận tốc yêu cầu. Nhận diện được các chướng ngại vật và né tránh chướng ngại vật. Xác định được vị trí hiện tại và vị trí mong muốn. Tự động tìm đường đi thích hợp. Xây dựng bản đồ môi trường. Hiển thị thông tin về các thông số trạng thái của robot. Truyền dữ liệu hình ảnh từ robot đến máy chủ điều khiển từ xa.

1.2. Các kết quả cần đạt đượcĐối với cả nhóm:

Hoàn thành xây dựng robot và mô hình điều khiển. Xây dựng và ghép nối các chức năng của từng thành viên thành công lên

robot.Đối với bản thân:

Xây dựng ứng dụng cung cấp tọa độ GPS hỗ trợ điều khiển robot từ xa. Thử nghiệm thực tế thành công và ghép nối tốt với các chức năng khác trong

hệ thống robot.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 10

Page 11: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

PHẦN II: KẾT QUẢ XÂY DỰNG HỆ THỐNG CHUNG

2.1. Chế tạo robotCác thành phần của hệ thống robot gồm có:

2 bộ động cơ Maxon DC cho bánh trái và bánh phải 2 bộ điều khiển động cơ EPOS 70/10 1 nguồn 36v ghép từ 3 acquy 12v 1 bộ định vị GPS Hemisphere 1 thiết bị đo lường quán tính 9DOF Razor IMU 1 scanning laser Hokuyo UTM-30LX 1 camera thu nhận dữ liệu video streaming 1 máy tính bảng Nexus chạy hệ điều hành Android 1 laptop ThinkPad T440p chạy hệ điều hành ROS 1 laptop Asus chạy hệ điều hành Win 7 làm nhiệm vụ máy server

Mô tả sơ đồ hệ thống vật lý của robot

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2

2

11

Page 12: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Nhìn vào sơ đồ ta có thể thấy kết nối giữa các thành phần trong hệ thống của Robot giám sát. Trung tâm của hệ thống là máy ThinkPad chạy hệ điều hành Xubuntu và đã được cài hệ điều hành ROS – môi trường để giao tiếp với các thành phần trong hệ thống. Nó được kết nối trực tiếp với các thành phần như bộ động cơ Maxon, EPOS 70/10, camera Buffalo, laser HOKUYO, Razor 9dof IMU và GPS Hemisphere. Nó cũng thực hiện kết nối không dây với máy Asus thông qua mạng wifi và máy tính bảng Nexus thông qua bluetooth.Mỗi một thành phẩn trong hệ thống đảm nhận một chức năng riêng biệt. Cụ thể như sau:

- Camera Buffalo: có chức năng ghi nhận hình ảnh video. Dữ liêụ trả về ở dạng raw video. Dữ liệu video thu bởi camera sẽ được ThinkPad lưu trữ và streaming về cho máy Asus theo 2 cách: video được ghi ra file sau đó thực hiện truyền file dùng giao thức TCP hoặc video được streaming trực tiếp sử dụng ffserver làm máy chủ hiển thị video.

- Laser HOKUYO: Có chức năng quét phát hiện vật cản khoảng cách 30m với cung độ là 270. Dữ liệu laser trả về sẽ là khoảng cách từ vật cản so với laser. Dựa vào dữ liệu này máy tính sẽ biết được vật trước mặt có phải vật cản hay không để có thể dựa vào ROS điều khiển bánh xe chuyển hướng tránh vật cản.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 12

Page 13: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

- 9DOF Razor IMU: là thiết bị đo lường quán tính, nó cho biết trạng thái của xe có đang cân bằng hay, từ đó 2 bánh xe được điều chỉnh tốc độ để tạo quỹ đạo đi theo đường thẳng. Dữ liệu trả về là thông số về gia tốc, góc quay, hướng của thiết bị theo thời gian thực.

- GPS: làm nhiệm vụ thu nhận dữ liệu định vị thông qua GPS. Các trường trả về bao gồm có giá trị kinh độ, vĩ độ và chiều cao của thiết bị so với mặt đất. Thông tin này sau đó sẽ được máy tính truyền tới các thiết bị được kết nối không dây là Nexus và máy chủ Server để hiển thị.

- EPOS 70/10: bộ điều khiển động cơ. Thiết bị này sẽ kết nối vào máy tính qua RS232 để nhận lệnh điều khiển động cơ Maxon.

- Maxon: bộ động cơ quay bánh xe, sử dụng nguồn điện 36v được cấp bởi acquy

- Server Asus: chạy hệ điều hành Windows 7 X64, làm nhiệm vụ nhận dữ liệu và hiển thị hình ảnh video, tốc độ quay bánh xe, phát hiện vật cản thu được từ máy ThinkPad thông qua kết nối wifi. Dữ liệu về vị trí sẽ được sử dụng để server hiển thị vị trí tương ứng trên ứng dụng google map. Ngoài ra server cũng có chức năng gửi lệnh điều khiển robot từ xa (remote) thông qua máy ThinkPad.

- Nexus: thực hiện nhận giá trị theo dõi vận tốc, vận tốc góc và vị trí nhận được từ ThinkPad thông qua bluetooth để hiển thị lên màn hình.

Hình ảnh thực tế của robot sau khi lắp ráp hoàn chỉnh:

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 13

Page 14: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

2.2. Xây dựng mô hình điều khiển

2.2.1. Tổng quan về hệ điều hành ROSHệ điều hành robot – Robot Operation System là một nền tảng mã nguồn mở dành cho việc thiết kế, xây dựng các ứng dụng phần mềm robot, cung cấp một hệ thống điều khiển phân tán trên cụm máy tính không đồng nhất.

Nó ra đời với mục đích cho phép các nhà nghiên cứu tăng tốc phát triển các hệ thống robotic mới, hỗ trợ tái sử dụng mã lệnh thông qua các công cụ và giao diện tiêu chuẩn. ROS còn mang các đặc điểm khiến nó trở thành hệ điều hành vô cùng thích hợp đối với robot như:

Hỗ trợ lập trình không đồng bộ do lập trình theo hướng call-back. Hệ điều hành mang tính chất phân tán nên các tiến trình nằm riêng việt

nhưng vẫn có thể kết nối thông qua message (thông điệp). Tránh được việc phụ thuộc phần cứng do sử dụng phương thức truyền tin

kiểu message. Quản lý chức năng hệ thống dễ dàng thông qua danh sách node.

Về cấu trúc, hệ điều hành ROS gồm có ba tầng: Filesystem, Computation Graph, và Community. Các tầng có liên quan vô cùng mật thiết với nhau và trong mỗi tầng lại chứa những định nghĩa, khái niệm về các thành phần tạo nên kiến trúc cũng như cách hoạt động của hệ thống. Chi tiết các tầng sẽ được mô tả ở ngay sau đây.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 14

Page 15: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

2.2.1.1. Tầng ROS FilesystemFilesystem 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ư:

Packages: Gói dữ liệu là đơn vị chính trong tổ chức phần mềm của hệ điều hành ROS. Một package có thể chứa các lệnh thực thi của ROS (các nodes), một thư viện dành cho ROS, tập dữ liệu, các file cấu hình, hoặc các dữ liệu cần thiết khác trong hệ thống. Package chính là thành phần nguyên tử nhỏ nhất được xây dựng và đưa vào sử dụng trong ROS. Có nghĩa rằng hạt nhân nhỏ nhất mà ta có thể xây dựng và đưa vào sử dụng trong ROS chính là một package.

Metapackages: Là các package cụ thể chỉ làm nhiệm vụ đại diện cho nhóm các package khác có liên quan với nhau. Hầu hết các metapackages đều được sử dụng giống như việc đảm bảo tính tương thích sau này khi chuyển đổi sang rosbuild stack.

Package Manifests: bảng kê khai thông tin dữ liệu của package (package.xml), cung cấp siêu dữ liệu về package đó bao gồm tên gọi, phiên bản, thông tin bản quyền (license) và những yếu tố phụ thuộc của gói dữ liệu đó. Manifest còn chứa thông tin về đặc trưng của ngôn ngữ lập trình ví dụ như các cờ báo (flags) của trình biên dịch.

Stacks: là tập hợp các packages phối hợp với nhau để thực hiện một chức năng cụ thể, chẳng hạn như “navigation stack” là tập hợp các packages dẫn hướng cho robot.

Stack Manifests: (stack.xml) cung cấp thông tin về một stack, bao gồm thông tin bản quyền (license) và các thông số phụ thuộc vào những stack khác.

Message  (msg)  Types:  Thông  tin  mô  tả  message,  được  lưu  trữ  trong my_package/msg/MyMessageType.msg, định nghĩa cấu trúc dữ liệu cho các messages được gửi trong ROS.

Service  (srv)  Types:  thông  tin  mô  tả  các  services,  được  lưu  trữ  trong my_package/srv/MyServiceType.srv, định nghĩa cấu trúc dữ liệu cho các lệnh truy cập (request) và các phản hồi (response) của các services trong ROS.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 15

Page 16: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

2.2.1.2. Tầng Computation Graph“Computation Graph” (lược đồ tính toán) là một mạng peer-to-peer của các tiến trình ROS cùng thực hiện xử lý với nhau. Computation Graph cơ bản gồm các thành phần: các nút  (nodes), Master, Parameter Server, messages, servicer, topics, và bags. Tất cả các thành phần này đều cung cấp dữ liệu cho Graph bằng những phương thức khác nhau.

Nodes: là các tiến trình thực hiện việc tính toán. Hệ điều hành ROS được thiết kế mô-đun hoá, một hệ thống điều khiển robot thường chứa nhiều node, các node phải được xây dựng chi tiết và chuyên biệt. Ví dụ, một node điều khiển hệ thống cảm biến, một node điều khiển động cơ bánh xe, một nút thực hiện việc tác vụ định vị, một node hoạch định đường đi, một node vẽ quỹ đạo của hệ thống… Mỗi node ROS được xây dựng nhờ sử dụng một ROS client library, chẳng hạn như roscpp hoặc rospy.

Master: Các ROS Master cung cấp tên đăng ký và tra cứu đến phần còn lại của Computation Graph. Nếu không có Master, các node sẽ không thể tìm thấy nhau, trao đổi thông tin, hoặc gọi services.

Messages: Các node giao tiếp với nhau thông qua các message. Một message đơn giản là một cấu trúc dữ liệu, bao gồm các trường được định kiểu. Các kiểu dữ liệu chuẩn (như integer, floating point, boolean,…) và mảng (array)

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 16

Page 17: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

với kiểu chuẩn đều được hỗ trợ. Messages có thể bao gồm các cấu trúc và các mảng lồng nhau (giống như kiểu structs trong ngôn ngữ C).

Topics: Messages được định tuyến thông qua một hệ thống trao đổi (transport system), trong đó phân loại các thông điệp thành 2 dạng: publish (đưa tin) và subcribe (đăng ký nhận thông tin). Một node gửi đi một message bằng việc đưa thông tin tới một topic (chủ đề). Tên của topic được dùng để quy định nội dung của message. Một node liên quan đến loại dữ liệu như thế nào sẽ đăng ký nhận tin từ topic tương ứng. Một topic có thể có nhiều đối tượng đưa tin (publishers) cũng như nhiều đối tượng đăng ký nhận tin (subcribers); và mỗi một node cũng có thể truyền tin nhiều topic khác nhau, cũng như có thể nhận tin từ nhiều topic. Các nguồn truyền tin và các đối tượng nhận tin nhìn chung không cần phải biết về sự tồn tại của nhau. Ý tưởng xây dựng ROS ở đây là tách biệt nguồn tạo ra thông tin với bộ phận sử dụng thông tin đó. Topic được xem như là một kênh truyền các thông điệp được định kiểu. Mỗi kênh truyền này có một tên riêng, và node nào cũng có thể kết nối với kênh này để gửi/nhận thông điệp, miễn là thông điệp cùng kiểu với topic đó.

Quan hệ giữa action – topic

Services: Mô hình truyền thông theo mẫu publish/subcribe như trình bày ở trên là một mô hình rất linh hoạt, tuy vậy, đặc điểm của nó là thông tin được truyền đa đối tượng, một chiều (many-to-many, one-way) đôi khi lại không phù hợp với các trường hợp cần tương tác theo kiểu request/reply (yêu cầu/đáp ứng), kiểu tương tác này thường gặp trong các hệ thống phân phối. Do vậy, cần có thêm một thành phần nữa trong ROS Graph, đó là “services”, nhằm thực hiện được các yêu cầu tương tác theo kiểu request/reply. Services là một cặp cấu trúc thông điệp: một thông điệp để gửi yêu cầu và một thông

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 17

Page 18: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

điệp dành cho đáp ứng. Một node cung ứng một service với một thuộc tính “name”, một client sử dụng service đó bằng cách gửi đi một thông điệp yêu cầu (request message) rồi đợi phản hồi. Trong thư viện client của ROS, phương thức tương tác này thường được cung cấp như một hàm được gọi từ xa.

Mô tả phương thức hoạt động của service

Bags: là một định dạng để lưu và phát lại dữ liệu từ các ROS messages. Bags là một cơ chế quan trọng để lưu trữ dữ liệu, chẳng hạn như dữ liệu cảm biến, những dữ liệu này là cần thiết để phát triển và thử nghiệm các thuật toán.

ROS Master hoạt động như một nameservice trong ROS Computation Graph, lưu trữ thông tin đăng ký của các topic và services cho nodes. Một node giao tiếp với Master để báo thông tin đăng ký của node. Khi giao tiếp với Master, các nodes cũng có thể nhận thông tin về các nodes khác đã đăng ký với Master từ đó thực hiện kết nối phù hợp để trao đổi dữ liệu. Master cũng sẽ gửi lại thông tin (callbacks) đến các nodes trong trường hợp có thay đổi thông tin đăng ký với Master, cho phép các node tự động tạo kết nối khi có nodes mới tham gia vào mạng.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 18

Page 19: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Mô hình giao tiếp cơ bản trong ROS

Sự kết nối giữa các nodes là kết nối trực tiếp; Master chỉ cung cấp thông tin tra cứu (lookup information), giống như một máy chủ DNS. Các nodes đăng ký nhận tin từ một topic, sẽ gửi yêu cầu kết nối trực tiếp đến các nodes cung cấp thông tin cho topic đó. Kết nối được khởi tạo khi các chuẩn kết nối (connection protocol) phù hợp

với nhau. Chuẩn giao thức phổ biến nhất thường được dùng trong ROS là TCPROS, thông qua chuẩn TCP/IP.

Cách xây dựng hệ thống như trong ROS cho phép nguồn cung cấp tin và đối tượng nhận tin có thể tách rời nhau, và mối liên hệ được thực hiện thông qua thuộc tính “name”. “Name” là thuộc tính đóng vai trò rất quan trọng trong ROS: các nodes, topics, services, và các parameters đều được đặt tên. Mỗi thư viện ROS Client đều hỗ trợ command-line để liên kết các tên này (remapping names), nhờ đó mà chương trình đã được biên dịch có thể cấu hình lại được khi chạy ngay cả khi hoạt động trong một cấu trúc Computation Graph khác.

2.2.1.3. Tầng CommunityCác khái niệm tầng kết nối của ROS được hiểu là những tài nguyên ROS mà cộng đồng người sử dụng có thể trao đổi với nhau. Đó có thể là phần mềm hoặc những kiến thức liên quan. Các loại tài nguyên nay bao gồm:

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 19

Page 20: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Distribute: ROS Distribution là tập hợp các phiên bản mà ta có thể cài đặt. Các phiên bản này có vai trò tương tự như các bản phân phối của Linux.

Repositories: ROS dựa vào một mạng liên kết các kho lưu trữ code, nơi mà các tổ chức khác nhau có thể phát triển và cho xuất bản các thành phần phần mềm robot của riêng mình.

Trang ROS Wiki: Cộng đồng ROS Wiki là diễn đàn chính thống chuyên cung cấp các tài liệu thông tin liên quan tới ROS. Bất cứ ai cũng có thể đăng ký một tài khoản và đóng góp tài liệu của riêng họ mà có thể chỉnh sửa hoặc cập nhật. Hoặc họ có thể viết các bài hướng dẫn, và nhiều hơn thế nữa.

Blog: Trang blog Willow Garage luôn cung cấp thông tin cập nhật thường xuyên, bao gồm cả hình ảnh và video liên quan tới ROS.

2.2.2. Mô hình điều khiển hệ thống dựa trên ROS

Mô hình của hệ thống điều khiển robot sử dụng message để kết nối các node lại với nhau. Nguyên tắc sẽ là một hoặc nhiều node cùng dùng một kiểu thông điệp là M sẽ publish thông điệp của mình lên trên một topic là T, sau đó một hoặc nhiều node khác sẽ lấy thông điệp M về bằng cách subcrise topic T. Một node có thể vừa publish vừa có thể subscrise không giới hạn số lần.

Ở hệ thống điều khiển robot của nhóm dựa trên nền tảng ROS, có tất cả 6 node và 6 topic để các node trao đổi thông tin. Một node có thể publish message lên topic, hoặc subcribe các topic cần thiết để nhận message trả về. Mô hình cụ thể được thể hiện ở hình vẽ dưới đây.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 20

Page 21: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Hình 1. Hệ thống các module hoạt động của robot

Node Remote_T.Anh: o Publish message chứa dữ liệu điều khiển tới topic /cmd_vel. Sau đó

node Epos_Trung thực hiện subscribe, nhận dữ liệu điều khiển quay bánh xe. Ngược lại node Epos_Trung cũng publish ra một message chứa thông tin về vận tốc, vận tốc góc của bánh xe cho node Remote_T.Anh thông qua topic /epos_vel.

o Subcrise thông tin về vị trí lấy được từ node GPS_Quy qua topic /location. Dữ liệu nhận được sẽ được truyền tới máy server qua giao thức TCP.

o Subscrise thông tin về vật cản từ node Laser_Khanh thông qua topic /detection. Thông tin sẽ chứa cờ phát hiện vật cản và khoảng cách từ laser tới vật cản đó. Tiếp theo dữ liệu cũng theo giao thức TCP truyền về cho Server xử lý.

Node Epos_Trung:

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 21

Page 22: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

o Publish message chứa dữ liệu về vận tốc thẳng và vận tốc góc của bánh xe cho node Remote_T.Anh và node SystemInfo_Mai thông qua topic /epos_vel.

o Subscrise dữ liệu điều khiển từ node Remote_T.Anh thông qua topic /cmd_vel. Dữ liệu nhận được sẽ được node Epos_Trung xử lý và điều khiển cách bánh xe quay.

o Subscrise dữ liệu chuyển động từ node Laser_Khanh thông qua topic /move. Thông tin nhận được có chứa tốc độ và tốc độ quay cần thiết để robot tránh vật cản. Dựa vào dữ liệu, node sẽ điều chỉnh xoay bánh một góc phù hợp và quay các bánh xe với vận tốc hợp lý để tránh được vật cản.

o Subscrise dữ liệu từ thiết bị đo lường quán tính IMU thông qua topic /imu, thông tin nhận được chứa vận tốc góc mà thiết bị đo được từ đó điều chỉnh lại tốc độ quay của 2 bánh xe.

Node Laser_Khanh: thực hiện publish message chứa thông tin về vật cản lên topic /detection cho node Remote_T.Anh và publish message chứa thông tin tốc độ cần thiết cho node Epos_Trung subscrise lấy thông tin và xử lý theo phân tích ở phần trên.

Node Imu_Control: bộ imu sẽ làm nhiệm vụ gửi thông tin về độ lệch của robot. Nếu robot không còn đi thẳng theo lệnh, góc lệch có giá trị khác 0. Thông tin về góc lệnh sẽ được node publish lên topic /imu. Node Epos_Trung subcrise lấy thông tin để điều chỉnh lại tốc độ, góc quay của các bánh xe.

Node GPS_Quy: Thông tin về vị trí của robot sẽ được node publish lên topic /location. Node Remote_T.Anh và node SystemInfo_Mai sẽ subcrise để lấy các dữ liệu này nhằm mục đích hiển thị.

Node SystemInfo_Mai: thực hiện subscrise thông tin về vị trí của robot và thông số vận tốc, vận tốc góc qua lần lượt qua topic /system_info và /location. Dự liệu nhận được sẽ được truyền về touchpad Nexus qua bluetooth sau đó hiển thị lên màn hình.

2.3. Các kết quảKết quả đạt được của nhóm đề tài: Xây dựng hoàn chỉnh robot với khung, bánh xe, các thiết bị đặt bên trên. Xây dựng được mô hình điều khiển robot trên hệ điều hành ROS, với các

node trao đổi dữ liệu với nhau qua các topic. Điều khiển robot chạy được. Robot nhận diện và né được vật cản trên đường đi.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 22

Page 23: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Xác định được tọa độ GPS. Đã truyền video thời gian thực được đến máy chủ ở xa. Đã hiển thị được các thông số hoạt động lên trên thiết bị máy tính bảng.Kết quả đạt được của cá nhân: Đã xác định được tọa độ GPS.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 23

Page 24: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

PHẦN III: QUÁ TRÌNH THỰC HIỆN VÀ KẾT QUẢ ĐẠT ĐƯỢC CỦA CÁ NHÂN3.1 Phân tích yêu cầu

Mục tiêu: Xây dựng được một module có thể lấy được tọa độ GPS và publish một node trên hệ điều hành ROS.

Phương pháp thực hiện:o Tìm hiểu cách sử dụng bộ thu GPS Hemisphere.o Nghiên cứu thư viện rtklib.

3.2 Thư viện RTKLIB

3.2.1 Tổng quan về GPSHệ thống định vị toàn cầu GPS (NAVSTAR GPS - Navigation Satellite Timing and Ranging Global Positioning System) là một hệ thống các vệ tinh có khả năng xác định vị trí trên toàn cầu với độ chính xác khá cao được phát triển bởi bộ quốc phòng Hoa Kỳ trong khoảng đầu 1970. Đầu tiên, GPS được xây dựng để phục vụ cho các mục đích quân sự, tuy nhiên sau này cho phép sử dụng cả trong lĩnh vực dân sự. Hiện nay, hệ thống này được truy nhập bởi cả hai lĩnh vực quân sự và dân sự.

GPS bao gồm 24 vệ tinh. Các vệ tinh GPS bay vòng quanh Trái Đất hai lần trong một ngày theo một quỹ đạo rất chính xác và phát tín hiệu có thông tin xuống Trái Đất. Các máy thu GPS nhận thông tin này và bằng phép tính lượng giác tính được chính xác vị trí của người dùng. Về bản chất máy thu GPS so sánh thời gian tín hiệu được phát đi từ vệ tinh với thời gian nhận được chúng. Sai lệch về thời gian cho biết máy thu GPS ở cách vệ tinh bao xa. Để đảm bảo vùng phủ sóng liên tục trên toàn thế giới, các vệ tinh GPS được sắp xếp sao cho luôn có 4 vệ tinh sẽ nằm cùng nhau trên 1 trong 6 mặt phẳng quỹ đạo. Với cách sắp xếp này sẽ có 4 đến 10 vệ tinh được nhìn thấy tại bất kỳ điểm nào trên trái đất với góc ngẩng là 100. Trên thực tế máy thu phải nhận được tín hiệu của ít nhất ba vệ tinh để tính ra vị trí hai chiều (kinh độ và vĩ độ) và để theo dõi được chuyển động. Khi nhận được tín hiệu của ít nhất 4 vệ tinh thì máy thu có thể tính được vị trí ba chiều (kinh độ, vĩ độ và độ cao). Một khi vị trí người dùng đã tính được thì máy thu GPS có thể tính các thông tin khác, như tốc độ, hướng chuyển động, khoảng hành trình và nhiều thứ khác nữa.

3.2.2 RTKLIB là gì?RTKLIB là một thư viện mã nguồn mở tiêu chuẩn cho việc xác định vị trí chính xác với GNSS. Các tính năng chính của RTKLIB:

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2

3

24

Page 25: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Hỗ trợ các thuật toán định vị tiêu chuẩn và chính xác với: GPS, GLONASS, Galileo, QZSS, BeiDou và SBAS

Hỗ trợ các chế độ định vị khác nhau với GNSS cho cả thời gian thực và hậu xử lý.

Hỗ trợ nhiều format GNSS: RTCM2, RTCM3, NovAtel OEM6, NovAtel OEM3, U-blox, SuperStar II, Hemisphere, SkyTraq, GW10...

Hỗ trợ giao tiếp với bên ngoài thông qua: Serial, TCP/IP, NTRIP, local log file (ghi lại tọa độ và phát lại) and FTP/HTTP.

Toàn bộ thư viện bao gồm các hàm, các API đều được viết bằng C nên nó có thể chạy trên nhiều môi trường hệ điều hành. Phần mềm có giao diện chỉ được cài đặt và chạy trên Windows.

3.3 Xác định tọa độ bằng RTKLIB

3.3.1 Sơ đồ khốiSơ đồ khối của thư viện RTKLIB

Thư viện RTKLIB được xây dựng có thể nhận ba đầu vào:

Input Rover: cho phép nhận dữ liệu từ bộ thu của người sử dụng

Input Base Station: cho phép nhận dữ liệu định vị từ trạm, dữ liệu này là cần thiết cho các phương pháp định vị có độ chính xác cao sử dụng phương pháp vi sai.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 25

Page 26: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Input Correction: cho phép nhận dữ liệu sửa lỗi.

Thư viện hỗ trợ năm đầu ra bao gồm: Log Rover, Log Base Station, Log Correction cho ra các dữ liệu trực tiếp từ đầu vào tương ứng, hai đầu ra còn lại có thể cấu hình để cho ra những kết quả sau khi xử lý với các cấu hình khác nhau.

Các loại đầu vào mà RTKLIB hỗ trợ:

Serial/USB: nhận dữ liệu từ cổng serial hay cổng USB Bluetooth: nhận dữ liệu qua bluetooh TCP: nhận dữ liệu thông qua giao thức TCP (qua Internet hay kết nối mạng) Ntrip Client: ứng dụng đóng vai trò như một client nhận dữ liệu từ hệ thống

NTRIP. File: nhận dữ liệu từ file FTP: nhận dữ liệu sau khi download file bằng FTP (Chỉ dành cho Input

Correction) HTTP: nhận dữ liệu sau khi download file bằng HTTP (Chỉ dành cho Input

Correction)

3.3.2 Các tham số cấu hìnhĐể lấy được tọa độ bằng thư viện RTKLIB ta cần tạo ra file cấu hình với một số thông số chính như sau:

pos1-frequency: lựa chọn tần số tín hiểu, ở trong chương trình sử dụng cả tần số L1 và L2.

pos1-elmask: góc ngẩng, góc nhỏ thì dễ nhận biết vệ tinh nên dễ nhận biết tọa độ nhưng độ chính xác thấp, góc lớn độ chính xác cao hơn nhưng khi đi vào vùng bị che khuất bởi các tòa nhà, bóng cây dày sẽ không trả về được tọa độ. Robot di chuyển liên tục nên có thể di chuyển vào vùng có thể có góc khuất nên em chọn góc ngẩng là 0.

out-solformat: lựa chọn định dạng tọa độ. Trong chương trình sử dụng llh: vĩ độ, kinh độ, độ cao.

inpstr1-type: input rover một trong số đầu vào, chương trình sử dụng serial. inpstr1-format: định dạng dữ liệu đầu vào, chương trình sử dụng hemis. file-cmdfile1: file chứa các mã lệnh khởi động cho thiết bị.

3.3.3 Một số hàm và cấu trúc sử dụng để lấy tọa độ trong RTKLIBCác cấu trúc sử dụng :

rtksvr_to int state; Trạng thái server (0:stop,1:running) o int cycle; chu kỳ xử lý tính theo ms thường là 100ms

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 26

Page 27: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

opt_to char *name; Tên của optiono int format; option format (0:int,1:double,2:string,3:enum)o void *var; con trỏ đến giá trị optiono char *comment; option comment

Các hàm sử dụng :

rtksvrinito Khởi tạo rtk server.o Tham số đầu vào :

rtksvr_t *svr : đầu vào, đầu ra rtk server.o Giá trị trả về kiểu int với 0 là khởi tạo lỗi hoặc 1 là khởi tạo thành

công. resetsysopts

o Reset các thông số cài đặt về mặc định.o Không có tham số đầu vào.o Kiểu trả về void.

Loadoptso Đọc các thông số cài đặt từ file.o Tham số đầu vào :

Char *file : đường dẫn file chứa thông số cài đặt. sysopts : mảng lưu các thông số cài đặt hệ thống, qua hàm này

mảng thông số cài đặt truyền vào sẽ chưa các thông số cài đặt mà người dùng đặt.

getsysoptso Lấy các cấu hình cài đặt mặc định.

startsvro Khởi động server thu GPS.

Stopsvro Dừng server thu GPS.

readanto Đọc dữ liệu từ bộ thu.

3.4 Xây dựng chương trìnhCác bước để lấy tọa độ GPS bằng thư viện RTKLIB:

Bước 1: Khởi tạo rtk server bằng cách gọi phương thức: rtksvrinit. Bước 2: Đọc các thông số cài đặt:

o Reset các thông số cài đặt bằng cách gọi các hàm resetsysopts

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 27

Page 28: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

o Đọc file cấu hình để lấy các thông số cài đặt bằng hàm loadopts Bước 3: Khởi động server. Bước 4: Đọc dữ liệu từ bộ thu bằng hàm readant và publish tọa độ cho đến

khi tắt chương trình. Bước 5: Tắt server bằng hàm stopsvr.

3.5 Kết quả đạt đượcĐể chứng minh tính hiệu quả của chương trình trong việc xác định được vị trí em đã thực hiện đo đạc ở một số vị trí khác nhau và được kết quả như sau:

Điểm đo 1: tại tòa Nhà HH1 Yên hòa Contrexim, Dương Đình Nghệ, Phường Yên Hòa, Quận Cầu Giấy, Hà Nội.

o Tọa độ: Vĩ độ: 21.021980549 Kinh độ: 105.787153684

o Hình ảnh khi đưa tọa độ lên google map

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 28

Page 29: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Điểm đo 2: Tòa nhà B1 Trường Đại học Bách Khoa Hà Nội.o Tọa độ:

Vĩ độ: 21.00447665 Kinh độ: 105.84668374

o Hình ảnh khi đưa tọa độ lên google map

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 29

Page 30: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 30

Page 31: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

PHẦN IV: KẾT LUẬN VÀ ĐỊNH HƯỚNG4.1 Những việc đã làm được

Tìm hiểu và sử dụng hệ điều hành ROS.

Tìm hiểu về thư viện RTKLIB

Xây dựng module định vị vệ tính độ chính xác cao trên hệ điều hành ROS.

4.2 Những khó khăn gặp phải

Cộng đồng sử dụng thư viện RTKLIB chưa có nhiều người nên khi gặp một

lỗi mất rất nhiều thời gian để tìm kiếm và sửa lỗi.

Thời gian đầu của đồ án bộ thu GPS Hemisphere hoạt động chưa ổn định.

4.3 Tổng kết

Trong thời gian thực hiện đồ án chúng tôi đã xây dựng được một hệ thống robot hoàn chỉnh về phần cứng có thể hoạt động ổn định. Kết quả thực nghiệm cho thấy nhóm đã hoàn thành 80% mục tiêu ban đầu với việc robot di chuyển được và tự tránh được vật cản cố định trong khoảng cách 1.2m, có thể truyền được dữ liệu camera, tọa độ GPS, tốc độ bánh… về server.

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2

4

31

Page 32: Xây dựng module định vị vệ tinh độ chính xác cao

Xây dựng module định vị vệ tinh độ chính xác cao trên hệ điều hành ROS

TÀI LIỆU THAM KHẢO1. http://wiki.ros.org/2. RTKLIB ver.2.2.0 Manual3. http://www.wikipedia.org/

Sinh viên thực hiện: Nguyễn Bá Quý – SHSV: 20106104–K55-Lớp KTMT&TT2 32