2. ROS (Robot Operating System) là gì?

2. ROS (Robot Operating System) là gì?

Robotics là một trong những mảng phát triển nhanh nhất trong giới công nghệ. Có thể bạn đã nghe hoặc nhìn thấy những ứng dụng như xe tự lái, robot hình người của Tesla hay Boston Dynamics và bắt đầu muốn tìm hiểu hay phát triển sự nghiệp về Robotics. Trong serie này mình sẽ giúp bạn làm quen với Robot Operating System (ROS) một trong những nền tảng phát triển robot phổ biến nhất hiện nay.

Boston Dynamic Atlas jumps gif

ROS là gì?

Robot Operating System - ROS là một nền tảng mã nguồn mở (open-sourced) cung cấp những thư viện và công cụ để xây dựng các ứng dụng liên quan tới robot. Sau hơn 10 năm phát hành, ROS đã và đang được sử dụng rộng rãi trên toàn thế giới cả trong nghiên cứu lẫn trong công nghiệp. Dưới đây là một video ngắn tổng hợp những ứng dụng tiêu biểu của ROS vào dịp kỷ niệm 10 năm thành lập.

Ai đang dùng ROS (và để làm gì)?

Để giúp bạn dễ hình dung, đây là một danh sách các công ty đang dùng ROS trong nghiên cứu và phát triển sản phẩm của họ: Link tới danh sách. Như các bạn có thể thấy, nền tảng này được sử dụng trong những công ty lớn như NVIDIA, Microsoft, Apple, Bosch, v.v. tới những công ty startup như ANYbotics. Ngoài ra mình tin chắc là còn rất nhiều công ty khác không được list ra ở đây. Ở những trường đại học và viện nghiên cứu về robot, ROS là một nền tảng không thể thiếu.

Vậy cụ thể thì người ta đang dùng ROS vào những việc gì? Có thể nói rằng bất cứ ứng dụng nào cần phải giao tiếp với hoặc điều khiển các sensor (cảm biến) hay actuator (thiết bị truyền động), người ta đều có thể dùng ROS. Video ở trên có nêu ra một số ứng dụng của ROS-Industrial (một version dành riêng cho công nghiệp) và bạn cũng có thể thấy sự đa dạng của những dự án này. Ngoài ra, ROS còn được dùng rất nhiều trong nghiên cứu ví dụ các lĩnh vực như xe tự hành (autonomous driving), robot nhiều chân (legged robot), robot hình người (humanoid robot), thiết bị bay không người lái (drone), v.v.

ROS không phải là gì?

Trong cuốn sách A Gentle Introduction to ROS, tác giả đã đề cập đến 3 điều không đúng về ROS mà mình cũng đồng ý: ROS không phải là một ngôn ngữ lập trình, ROS không phải (chỉ) là một thư viện và ROS không phải là môi trường phát triển tích hợp (Integrated Development Environment - IDE). Bạn sẽ dần hiểu rõ hơn những điểm này khi bắt đầu làm quen với ROS còn hiện tại chỉ cần nhớ rằng ROS về cơ bản là một nền tảng cung cấp cho bạn các công cụ để tạo ra ứng dụng robot.

Tại sao chọn ROS?

Trên trang chủ của ROS có dòng chữ "Don’t reinvent the wheel. Create something new and do it faster and better by building on ROS!" nôm na nghĩa là không cần phải mất công làm lại những cái có sẵn, ROS giúp bạn dựng lên những thứ mới nhanh và hiệu quả hơn.

Ưu điểm của ROS

  1. ROS cung cấp những công cụ chuẩn để giúp việc giao tiếp dễ dàng giữa các tác vụ. Ví dụ, hệ thống của bạn có một camera và một cánh tay robot. Bạn muốn lấy hình ảnh từ camera, xử lý hình ảnh đó và yêu cầu robot gắp vật thể nếu nó xuất hiện ở trong ảnh. Có nhiều cách để thực hiện các bước này, nhưng nếu bạn dùng ROS thì việc truyền nhận thông tin giữa các bước trở nên dễ dàng hơn rất nhiều.

  2. ROS có một cộng đồng user và developer vô cùng lớn mạnh. Như mình đã nói ở phần trước, các công ty và viện nghiên cứu lớn trên thế giới đều đã và đang dùng ROS và nó dần trở thành một nền tảng chuẩn cho việc phát triển robot. Điều này có nghĩa là nếu bạn gặp khó khăn khi làm một dự án với ROS thì nhiều khả năng là bạn chỉ cần google là ra câu trả lời, hoặc bạn có thể hỏi trên những diễn đàn và có nhiều người sẵn sàng giúp bạn.

  3. Có vô vàn nhiều những thư viện sẵn có cho các tác vụ khác nhau. Từ những công nghệ mới trong AI, thị giác máy tính (computer vision), xử lý ngôn ngữ tự nhiên (natural language processing) hay điều khiển (control) v.v., tất cả đều có những phần mềm mới nhất (state-of-the-art) mà bạn có thể trực tiếp tải xuống và sử dụng ngay. Những phần mềm tiên tiến này đa số tới từ những tổ chức, công ty, trường đại học hoặc thậm chí cá nhân mà đang họ dùng ROS trong công việc hay nghiên cứu của họ và cho công khai (open source) code những dự án của mình.

  4. ROS hoàn toàn free và được phép dùng trong sản phẩm thương mại. Đây là lý do vì sao các công ty, tổ chức (kể cả những tập đoàn lớn) rất ưa dùng ROS vì nó dễ dàng thử nghiệm, phát triển và thậm chí thương mại hoá sản phẩm của họ một cách tiết kiệm.

Nhược điểm của ROS

Dĩ nhiên ROS không phải là một nền tảng hoàn hảo cho mọi ứng dụng mà vẫn còn một vài hạn chế như sau:

  1. ROS không phù hợp cho những ứng dụng yêu cầu hard real-time (thơi gian thực cứng/tức thì). Hard real-time có nghĩa là hệ thống của bạn phải hoàn thành tác vụ chính xác theo những thời hạn (deadlines) qui định. Chỉ cần lỡ một trong những deadline này thì hệ thống sẽ bị lỗi và có thể gây hậu quả nghiêm trọng. Thông tin thêm về so sánh các loại thời gian thực.

  2. ROS phải được chạy trên một cấu hình đủ mạnh để đạt hiệu suất tốt nhất. Để có thể sử dụng ROS thì bạn cần một chiếc máy tính, và tùy vào độ phức tạp của ứng dụng mà có những yêu cầu về cấu hình khác nhau. Đối với những ứng dụng phức tạp, bạn có thể cần phải có một PC với một hoặc nhiều card đồ hoạ, còn nếu ứng dụng đơn giản thì có thể chỉ một chiếc Raspberry Pi (4 - 8 GB RAM) là đủ.

  3. Việc quản lý và bảo trì những gói (package) phần mềm trong ROS vẫn còn nhiều bất cập, đặc biệt là cho những sản phẩm thương mại.

Để giải quyết những vấn đề này, ROS 2 đã ra đời và đang trong quá trình phát triển (mình sẽ làm một series về ROS 2 sau).

Bắt đầu với ROS như thế nào?

Thực ra đã có rất nhiều hướng dẫn về ROS mà bạn có thể dễ dàng tìm thấy trên Google, GitHub, v.v. Loạt bài này có thể bao gồm các chủ đề tương tự nhưng mình cố gắng hết sức để giải thích và giúp bạn thực hành với các ví dụ đơng giản và thực tế. Như mình đã nói trong chương đầu tiên, sê-ri này bao gồm 5 bước chính từ việc trả lời cho câu hỏi ROS là gì, cài đặt nó như thế nào cho tới hiểu và áp dụng tất cả các khái niệm cơ bản vào thực tế. Thông qua việc vừa học vừa làm, mình hy vọng việc tìm hiểu về ROS nói riêng và robot nói chung sẽ vừa thú vị, vừa đầy thách thức đối với bạn.

Sau khi trả lời xong ba câu hỏi what, why và how, mình tin bạn đã có cái nhìn tổng quan về ROS và vẫn muốn tiếp tục sê-ri này. Trong phần tiếp theo, hãy cùng bắt đầu bước quan trọng đầu tiên: Cài đặt.

Tóm tắt

  1. ROS là một nền tảng để phát triển robot, được sử dụng phổ biến trên toàn thế giới.

  2. ROS có thể được dùng bất cứ ứng dụng nào (từ đơn giản tới phức tạp) cần phải giao tiếp với hoặc điều khiển các sensor (cảm biến) hay actuator (thiết bị truyền động).

  3. Lý do khiến ROS trở nên phổ biến là vì nó cung cấp cho người dùng những công cụ hữu ích để phát triển phần mềm và có cộng đồng user rất lớn mạnh.

  4. ROS vẫn còn nhiều bất cập như chưa dành cho hệ thống thời gian thực (real-time), yêu cầu hardware đủ mạnh và việc quản lý cũng như bảo trì vẫn chưa được tối ưu. Để giải quyết những hạn chế này, ROS 2 đang được phát triển.

Trích dẫn

  1. Cover photo: wiki.ros.org/noetic

  2. Icons: flaticon.com

Did you find this article valuable?

Support Trinh Nguyen by becoming a sponsor. Any amount is appreciated!