Bỏ qua tới nội dung
LSLab

ROS 2 kết nối lời nói, thị giác và điều khiển bay ra sao?

  • Trung cấp
  • Bài viết
  • Từ 16 tuổi
  • 6 phút đọc
Minh họa biên tập về ROS 2 trong hệ thống drone.

ROS 2 giúp các phần mềm nhận lệnh bằng lời nói, phân tích ảnh và giao tiếp với bộ điều khiển bay trao đổi dữ liệu. Trong một thiết kế drone, phần lời nói tạo yêu cầu, phần thị giác tìm mục tiêu, còn phần điều phối ghép hai kết quả trước khi gửi mục tiêu chuyển động cho bộ điều khiển bay. ROS 2 cung cấp cách kết nối; người phát triển vẫn phải xây dựng phần hiểu lệnh và ra quyết định.

Mục lục
ROS 2 giúp các thành phần trao đổi dữ liệu; đường tích hợp tới bộ điều khiển bay vẫn cần được thiết kế và kiểm tra.
  • Thành phần tạo dữ liệu cảm biến
  • Trao đổi thông điệp
  • Thành phần tích hợp điều khiển

Từ câu nói đến một nhiệm vụ bay

Giả sử trong một mô phỏng, người dùng nói: “Bay tới gần vật màu đỏ.” Hệ thống cần trả lời được ba điều: người dùng muốn làm gì, vật nào trong ảnh là mục tiêu, và vị trí nào phù hợp để drone di chuyển tới.

Luồng dưới đây là một thiết kế minh họa, không phải chức năng có sẵn chỉ cần bật trong ROS 2. Các tên kênh là ví dụ do ứng dụng tự đặt.

Phần xử lýNhận gì?Chuyển gì cho phần tiếp theo?
Nhận dạng lời nóiÂm thanh từ microVăn bản “bay tới gần vật màu đỏ”
Hiểu lệnhVăn bản vừa nhậnÝ định “tiếp cận” và mô tả mục tiêu “vật màu đỏ”
Thị giácẢnh cameraNhững vật tìm thấy, mã mục tiêu và vị trí trong ảnh
Điều phối nhiệm vụÝ định, kết quả thị giác và trạng thái droneYêu cầu làm rõ, từ chối, hoặc một mục tiêu chuyển động đã qua kiểm tra
Giao tiếp với bộ điều khiển bayMục tiêu chuyển độngSetpoint phù hợp với giao diện điều khiển; trạng thái trả về cho phần điều phối

Điểm nối quan trọng nằm ở phần điều phối: nó cần ghép “vật màu đỏ” trong câu nói với một vật cụ thể mà camera nhìn thấy. Nếu có hai vật cùng màu, thiết kế này yêu cầu người dùng chọn lại trước khi tạo nhiệm vụ.

Node và topic giúp các phần trao đổi ra sao?

Có thể tổ chức mỗi phần xử lý thành một node, tức một thành phần phần mềm tham gia hệ thống ROS 2. Tài liệu về node khuyến nghị mỗi node đảm nhiệm một việc logic. Vì vậy, việc nhắc đến node chỉ hữu ích khi chỉ rõ nó làm gì trong chuỗi lời nói, thị giác và điều khiển.

Một topic là kênh có tên để bên phát gửi bản tin và bên nhận đăng ký đọc. Theo tài liệu về topic, cách trao đổi này phù hợp với luồng dữ liệu liên tục như cảm biến hoặc trạng thái robot.

Trong ví dụ trên, node camera có thể phát ảnh qua /camera/image; node thị giác đọc ảnh và phát kết quả qua /vision/targets. Phần hiểu lệnh có thể gửi yêu cầu đã phân tích qua /voice/intent. Node điều phối nhận cả yêu cầu lẫn các mục tiêu, rồi chọn bước tiếp theo. Đây là tên do thiết kế minh họa đặt, không phải bộ topic chuẩn cho mọi drone.

Các phần phải thống nhất cả cấu trúc lẫn ý nghĩa bản tin. Chẳng hạn, “vị trí mục tiêu” cần nói rõ là tọa độ trong ảnh hay vị trí trong không gian, kèm đơn vị và thời điểm quan sát. Đặt cùng tên topic chưa đủ để các phần hiểu đúng dữ liệu của nhau.

Ghép lời nói với hình ảnh vẫn cần xử lý riêng

Trong thiết kế minh họa, phần lời nói cung cấp ý định và mô tả đối tượng; phần thị giác cung cấp những đối tượng đang được quan sát. Phần điều phối đối chiếu hai đầu vào đó để chọn mục tiêu.

Nhưng một vùng màu đỏ trên ảnh chưa cho biết drone cần bay tới tọa độ nào. Thiết kế còn cần cách ước lượng vị trí mục tiêu, chẳng hạn bằng cảm biến chiều sâu hoặc kết hợp thông tin camera với trạng thái drone. Phần lập kế hoạch sau đó mới chọn vị trí tiếp cận theo các giới hạn của ứng dụng.

Vì thế, trong ví dụ này, kết quả “tìm thấy vật màu đỏ” chỉ đủ để xác định đối tượng. Khi chưa có vị trí đáng tin cậy, phần điều phối báo thiếu dữ liệu và giữ yêu cầu ở trạng thái chưa được chấp nhận. ROS 2 vận chuyển các kết quả này; cách suy ra vị trí và điều kiện chấp nhận do ứng dụng định nghĩa.

Yêu cầu đã kiểm tra đi tới PX4 bằng cách nào?

Ở cuối chuỗi, phần giao tiếp chuyển mục tiêu chuyển động thành setpoint, tức giá trị đích gửi cho bộ điều khiển, chẳng hạn vị trí mong muốn. Giao diện điều khiển ROS 2 của PX4 cung cấp các lớp gửi setpoint ở nhiều cấp điều khiển. Trong ví dụ này, ta xét mục tiêu chuyển động ở cấp vị trí.

Nói “bay tới gần vật màu đỏ” chưa phải một setpoint. Để đến bước này, ứng dụng đã phải hiểu câu nói, chọn đúng vật, ước lượng vị trí và lập mục tiêu chuyển động. Phần điều khiển bay tiếp nhận mục tiêu qua giao diện phù hợp với cấu hình của nó.

PX4 là ví dụ cụ thể trong bài. Tài liệu giao diện này lưu ý rằng một số phần còn thử nghiệm và có thể thay đổi. Khả năng tương thích cần đối chiếu theo đúng bản ROS 2, PX4 và thư viện đang dùng.

Phản hồi khép lại chuỗi điều khiển

Sau khi gửi nhiệm vụ, phần điều phối còn cần biết yêu cầu được chấp nhận hay bị từ chối, đang thực hiện hay đã kết thúc. Giao diện người dùng chỉ nên báo “đã tới mục tiêu” khi nhận được kết quả tương ứng từ phần thực hiện.

ROS 2 có action cho tác vụ kéo dài, với phản hồi tiến độ và khả năng yêu cầu hủy hoặc thay thế mục tiêu, theo tài liệu về action. Ứng dụng có thể dùng cơ chế này giữa phần điều phối và phần thực hiện nhiệm vụ. Phần giao tiếp với PX4 vẫn phải được triển khai riêng; tạo một action chưa tự tạo ra chức năng bay.

Trong mô phỏng minh họa, nếu camera mất mục tiêu hoặc dữ liệu đã cũ, phần điều phối ngừng tạo mục tiêu tiếp cận mới và báo lại tình trạng. Hành vi của phương tiện khi nhiệm vụ bị ngắt phải được thiết kế và kiểm tra riêng theo chế độ điều khiển. Bản tin yêu cầu hủy không tự chứng minh drone đã dừng.

Câu hỏi thường gặp

ROS 2 có tự hiểu lời nói và nhận ra vật trong ảnh không?

Ứng dụng cần tích hợp bộ nhận dạng lời nói, phần hiểu lệnh và mô hình thị giác. ROS 2 giúp các phần đó trao đổi yêu cầu và kết quả.

Vì sao không gửi câu nói thẳng cho bộ điều khiển bay?

Trong thiết kế này, bộ điều khiển nhận mục tiêu chuyển động qua giao diện của nó. Câu nói còn thiếu thông tin như đối tượng cụ thể, vị trí đích và điều kiện thực hiện; phần điều phối cần xử lý trước.

Tên topic có giống nhau trên mọi drone không?

Các tên trong bài chỉ là ví dụ. Một hệ thống tích hợp cần thống nhất tên, kiểu bản tin, đơn vị, hệ tọa độ và cách xử lý dữ liệu cũ giữa các phần.

Tóm tắt

Lời nói tạo yêu cầu; thị giác giúp xác định đối tượng; phần điều phối ghép dữ liệu và kiểm tra điều kiện; phần giao tiếp gửi setpoint tới bộ điều khiển bay. Phản hồi từ phần thực hiện quay lại để cập nhật tiến độ hoặc báo lỗi. Node, topic và action là các cơ chế giúp tổ chức và kết nối chuỗi này trong ROS 2.

Thuật ngữ trong bài

Tên tiếng Việt, tên tiếng Anh và nghĩa dùng trong bài. Di chuột, chạm hoặc dùng phím Tab tới từ có gạch chân chấm để xem giải thích ngay khi đọc.

ROS 2
Bộ phần mềm trung gian cho robot, trong đó các node trao đổi dữ liệu.
node
Một thành viên của đồ thị ROS 2, dùng thư viện client để giao tiếp với node khác.
topic
Kênh có tên để bên phát gửi bản tin và bên nhận đăng ký đọc.
action
Giao diện cho tác vụ kéo dài, có phản hồi tiến độ và yêu cầu hủy hoặc thay thế mục tiêu.
setpoint
Giá trị đích gửi cho bộ điều khiển, chẳng hạn vị trí mong muốn.

Bài này chưa được đánh dấu là đã xem

Thấy nội dung sai hoặc chưa an toàn?

Báo cho quản trị viên qua email. Thư có sẵn tên bài và đường dẫn.

Báo lỗi bài này
Xem tất cả bài của chủ đề

Nguồn

Các nguồn này viết cho người đọc lớn hơn. Nếu thấy khó, hãy đọc cùng người lớn.