Tự động nhận diện cổng cảm biến robot

Tự động nhận diện cổng cảm biến robot

Robot operating system (ROS) là một hệ thống phần mềm có tính linh hoạt và chuyên dụng cao dùng để lập trình và điều khiển robot. ROS bao gồm các thư viện, công cụ hỗ trợ lập trình, công cụ đồ họa, các công cụ hỗ trợ giao tiếp điều khiển trực tiếp với phần cứng cũng như các thư viện hỗ trợ việc lấy dữ liệu từ các cảm biến và các thuật toán phổ biến trong lập trình điều khiển robot.

ROS giúp đơn giản và tiết kiệm thời gian việc lập trình các hành vi phức tạp của robot. ROS như là một mạng lưới điểm (node) được kết nối bởi nhiều node mà mỗi node có nhiệm vụ riêng tương ứng với các thành phần cấu tạo nên robot. Khi làm việc trên ROS, chúng ta thường sử dụng các PC mini như Raspberry, Jetson NIVIDIA với hệ điều hành Ubuntu. Các PC mini này hỗ trợ nhiều loại cổng kết nối với các cảm biến khác nhau do vậy chúng ta có thể linh động trong việc kết nối, điều khiển, và thu nhận các dữ liệu.

Tuy nhiên, khi số lượng các cảm biến nhiều và hỗ trợ cùng một kiểu cổng kết nối, ví dụ cổng USB, việc phân biệt và định nghĩa các cổng kết nối cho từng loại cảm biến sẽ trở nên phức tạp. Để giải quyết vấn đề này, bài viết này sẽ hướng dẫn bạn đăng ký cổng kết nối cho từng loại cảm biến. Theo đó, PC mini sẽ tự động nhận diện các loại cảm biến và bạn không cần phải quan tâm đến vấn đề vị trí của cảm biến khi bạn phải rút kết nối của cảm biến.

Bước 1: Định hướng đến thư mục /dev bằng câu lệnh sau

Sau đó nhập câu lệnh sau để hiển thị các file trong thư mục dev

Bạn có thể thấy một danh sách như hình sau

Các file hệ thống trong thư mục dev

Bước 2: Cắm cổng kết nối của cảm biến cần đăng ký vào PC mini

Sau khi cắm cổng kết nối của cảm biến, tiến hành nhập lệnh ls, danh sách hiển thị như sau

Trong trường hợp của mình, cảm biến RPLIDAR kiểu kết nối USB. Nếu so sánh danh sách trước và sau khi cắm cảm biến vào PC mini, các bạn có thể nhận diện ra tên kết nối của cảm biến hiện tại. Ví dụ trong trường hợp của mình là ttyUSB0

Bước 3: Ghi chú thông tin cổng kết nối

Các bạn nhập câu lệnh sau

Ví dụ với cổng kết nối ttyUSB0, mình sẽ nhập câu lệnh sau

Sau khi nhập lệnh trên, thông tin hiển thị như sau

Các bạn ghi chú lại thông tin idProductidVendor. Trong ví dụ này, idProduct = “ea60”idVendor=”10c4″

Bước 4: Đăng ký cổng kết nối

Để đăng ký cổng kết nối, các bạn tạo một file thông tin cho cảm biến theo câu lệnh sau.

Trong ví dụ này, mình đang đăng ký cho cảm biến Lidar nên mình đặt tên là “lidar”

Nhập đoạn mã như sau, chú ý thay đổi các thông tin idProductidVendor ở bước số 3

Trong ví dụ này, đoạn mã nhập cho cảm biến Lidar với thông tin {idProduct}=”ea60″{idVendor}=”10c4″ như sau

Sau khi nhập xong đoạn mã trên, các bạn nhấn Ctrl+X, nhập Y và nhấn ENTER để kết thúc

Bước 5: Hoàn tất tiến trình đăng ký

Để hoàn tất quá trình đăng ký, bạn cần cập nhật cho udev rules theo câu lệnh sau

Chúc mừng bạn đã hoàn tất quá trình đăng ký cổng kết nối của cảm biến. Đối với các cảm biến khác, các bạn làm tương tự và thay đổi các tham số idProduct, idVendor và tên file của cảm biến.

Việc đăng ký các cổng kết nối cho từng loại cảm biến sẽ giúp người sử dụng không cần kiểm tra và định nghĩa tên của các cổng kết nối sau khi tháo cảm biến khỏi PC mini. Các file định nghĩa đã đăng ký với các mã Product và Vendor, do đó máy tính sẽ tự động nhận diện cổng kết nối đối với tên file đã khởi tạo trong thư mục udev.

Vậy để sử dụng các file đã định nghĩa trong ROS, các bạn cần phải làm thế nào?

Trong ví dụ này, mình sẽ tiến hành cài gói rplidar ros, sau đó mình sẽ sửa thông tin kết nối trong file launch, ví dụ file launch như sau

Trong hàng <param name=”serial_port” type=”string” value=”/dev/ttyUSB0″ />, các bạn thay “dev/ttyUSB0” bởi “dev/lidar”. Trong đó, “lidar” là tên file mình đã sử dụng để đăng ký trong bước 4.

Chúc các bạn thành công!

Cảm ơn các bạn đã dành thời gian đọc bài viết này.

Mọi thông tin góp ý xin vui lòng liên hệ inbox.itec@gmail.com

Chat Zalo