Cheat sheet for ROS Command Line
Tags: ros, robot, programming, python
Published: 2020-05-06 16:27:56

Khi sử dụng ROS, chúng ta nhập lệnh vào một môi trường Shell để thực hiện các thao tác như xử lý file, chỉnh sửa, xây dựng, sửa lỗi mã nguồn, quản lý packages, v.v... Để làm việc với ROS một cách thành thạo, chúng ta cần làm quen với không chỉ các lệnh Linux cơ bản, mà còn với những lệnh ROS cụ thể. 
Để giúp mọi người nhớ được các lệnh ROS CLI, mình tổng hợp một cheat sheet các lệnh cần thiết dưới đây, bạn sẽ hiểu được mỗi loại lệnh ROS này và sớm sử dụng chúng một cách dễ dàng.
# ROS Shell Commands
- **roscd**: Di chuyển tới thư mục đích của ROS package
- **rosls**: Liệt kê các thư mục và tệp của ROS package
- **rosed**: Chỉnh sửa file của ROS package bằng phần mềm mặc định trong máy
- **roscp**: Copy file của ROS Package

# ROS Execution Commands
- **roscore**: chạy master (server chính) cùng các tham số server và chạy rosout để lưu log file 
- **rosrun [tên package] [tên node]**: Chạy 1 node của package.
- **roslaunch [tên package] [tên file launch]**: Chạy nhiều node cùng một lúc bằng launch file cùng với các tùy chọn cài đặt.
- **rosclean**: Xem hoặc xóa log file

# ROS Information Commands
- **rostopic** Kiểm tra thông tin của các topic
*Các lệnh quan trọng của rostopic:*
**rostopic list** Liệt kê danh sách những topic đang chạy trên server
**rostopic echo [tên topic]** In ra những message đang chạy qua topic này 
**rostopic find [tên kiểu message]** Liệt kê những topic đang chứa những message thuộc kiểu cần tìm
**rostopic type [tên topic]** Hiện kiểu message của của 1 topic cụ thể
**rostopic [tên topic] [kiểu message] [tham số]** Publish thủ công message qua 1 topic cụ thể

- **rosnode** Kiểm tra thông tin/thao tác với các node
*Các lệnh quan trọng của rosnode:*
**rosnode list** Liệt kê danh sách những node đang chạy trên server
**rosnode ping [tên node]** Kiểm tra kết nối với node 
**rosnode info [tên node]** In ra thông tin của node
**rosnode kill [tên node]** Ngừng chạy node
**rosnode cleanup** "Tự động dọn rác" - xóa thông tin của những node bị dừng do lỗi

- **rosservice** Làm việc với các service
*Các lệnh quan trọng của rosservice:*
**rosservice list** Liệt kê danh sách những service đang chạy trên server 
**rosservice info [tên service]** In ra thông tin của service
**rosservice args [tên service]** Hiện tham số của service
**rosservice call [tên service] [tham số]** Gọi request thủ công với request với tham số đã chọn

- **rosparam** Kiểm tra thông tin/ thao tác với tham số
*Các lệnh quan trọng của rosparam:*
**rosparam list** Liệt kê danh sách những service đang chạy trên server 
**rosparam get [tên tham số]** Lấy giá trị của tham số
**rosparam set [tên tham số] [giá trị]** Gán gía trị mới cho tham số
**rosparam dump [tên service] [tham số]** Lưu giá trị tham số vào file
**rosparam load [tên service]** Tải giá trị từ file vào tham số
**rosparam delete [tên service]** Xóa tham số

- **rosmsg** Kiểm tra thông tin của mesage/tin nhắn/dữ liệu
*Các lệnh quan trọng của rosmsg:*
**rosmsg list** Liệt kê danh sách tất cả các loại message có trên máy
**rosmsg show [tên message]** Hiện thông tin của các message đang có
**rosmsg package [tên package]** Liệt kê các message đang dùng trong package

- **rossrv** Lấy thông tin của các service
*Các lệnh quan trọng của rossrv:*
**rossrv list** Liệt kê danh sách tất cả các loại service có trên máy
**rossrv show [tên message]** Hiện thông tin của các service đang có
**rossrv package [tên package]** Liệt kê các service đang dùng trong package

- **rosbag** Truy xuất dữ liệu của log file
*Các lệnh quan trọng của rosbag:*
**rosbag record [tùy chọn] [tên topic]** Lưu lại dữ liệu mesage vào file
**rosbag info [tên file]** Hiện thông tin của log file
**rosbag play [tên file]** Chạy hiển thị lại dữ liệu của message trong file

# ROS Catkin Command
- **catkin_create_pkg** Tự động tạo package
- **catkin_make** Build các package trên hệ thống catkin
- **catkin_init_workspace** Khởi tạo môi trường làm việc với ROS
- **catkin_find [tên package]** Tìm kiếm package trong workspace 

# ROS Package Command

- **rospack** Quản lý và làm việc với các package trong máy
- *Các lệnh quan trọng của rospack:*
- **rospack [tên package]** Xem thông tin của 1 package cụ thể
- **rosinstall [tên package]** Cài đặt thêm package
- **rosdep [tùy chọn] [tên package]** Cài đặt các thư viện cần thiết của package
- **rosmake** Build 1 package