Yêu cầu

Chúng ta sẽ tìm hiểu một gói trong ros-tutorials, cài đặt như sau:

$ sudo apt-get install ros-<distro>-ros-tutorials

Thay thế '<distro>' với tên phiên bản ROS đang dùng (ví dụ: hydro, groovy, electric, fuerte etc.)

Khái niệm về tập tin trong hệ thống

  • Packages (gói): Gói là đơn vị tổ chức mã phần mềm trong ROS. Mỗi gói có thể chứa thư viện, tập tin thực thi (executables), tập tip kịch bản (scripts), hoặc những tập tin khác.

  • Manifests (package.xml): Manifest là một gói mô tả chứa đựng thông tin. Nó sẽ cung cấp thông tin về sự phụ thuộc giữa các gói và lưu trữ thông tin (meta information) về gói đó như phiên bản, bảo trì, like version, maintainer, giấy phép, vân vân...

Show    Note about stacks

Chú ý: rosbuild users might be wondering where stacks went. The concept of stacks was removed with catkin to simplify the growing code base and to support better distribution of packages. In catkin you can define metapackages to collect similar packages and multiple packages can reside in a single VCS repository. Those two features replace the functionality of stacks.

Công cụ tập tin hệ thống

Mã được phân bố trong nhiều gói ROS. Định hướng tập tin với công cụ dòng lệnh như "ls" hoặc "cd" có thể rất khó khăn đó là lý do ROS cung cấp công cụ giúp bạn.

Dùng rospack

rospack cho phép bạn lấy thông tin về gói . Trong hướng dẫn này, chúng ta chỉ sử dụng lựa chọn 'find' sẽ trả về đường dẫn.

Dùng:

$ rospack find [package_name]

Ví dụ:

$ rospack find roscpp

Kết qủa:

  • YOUR_INSTALL_PATH/share/roscpp

Nếu bạn cài ROS từ apt trên Ubuntu Linux bạn sẽ thấy:

  • /opt/ros/kinetic/share/roscpp

Dùng roscd

roscd là một phần của rosbash . Nó cho phép bạn thay đường dẫn (cd) đến một gói hoặc stack.

Dùng:

$ roscd [locationname[/subdir]]

Để kiểm tra chúng ta đã thay đổi đến đường dẫn roscpp package , thực thi:

$ roscd roscpp

Bắt đầu xuất ra đường dẫn dùng Unixpwd:

$ pwd

Bạn sẽ thấy:

  • YOUR_INSTALL_PATH/share/roscpp

Bạn sẽ thấy YOUR_INSTALL_PATH/share/roscpp cùng đường dẫn mà rospack tìm thấy trong ví dụ trước.

Chú ý roscd, cũng giống như công cụ ROS khác, sẽ chỉ tìm thấy gói ROS nằm trong đường dẫn thiết đặt ROS_PACKAGE_PATH. Để xem cài đặt ROS_PACKAGE_PATH, nhập:

$ echo $ROS_PACKAGE_PATH

ROS_PACKAGE_PATH sẽ chứa một danh sách các đường dẫn phân cách bởi dấu hai chấm ':' . Bạn sẽ thấy giống như sau ROS_PACKAGE_PATH :

  • /opt/ros/kinetic/base/install/share:/opt/ros/kinetic/base/install/stacks

Giống như những biến đường dẫn môi trường khác (environment paths), bạn có thể thêm vào đường dẫn khác phân cách bởi ':' ROS_PACKAGE_PATH.

Đường dẫn con (Subdirectories)

roscd cũng có thể đi đến một đường dẫn con của một gói hoặc stack.

Thử:

$ roscd roscpp/cmake
$ pwd

Bạn sẽ thấy:

  • YOUR_INSTALL_PATH/share/roscpp/cmake

roscd log

roscd log will take you to the folder where ROS stores log files. Chý ý nếu bạn không chạy một chương trình ROS nào, sẽ xuất hiện thông báo lỗi rằng nó không tồn tại.

Nếu bạn chạy một chương trình ROS , thử:

$ roscd log

Dùng rosls

rosls là một phần của bộ rosbash. Nó cho phép bạn ls định hướng một gói bởi tên gói thay vì dùng đường dẫn tuyệt đối.

Dùng:

$ rosls [locationname[/subdir]]

Ví dụ:

$ rosls roscpp_tutorials

Kết qủa trả về:

  • cmake launch package.xml  srv

Tab Completion (sự bổ khuyết)

Rất tẻ nhạt khi cứ gõ ra toàn bộ tên gói. Trong ví dụ trước, roscpp_tutorials là một tên khá dài. May mắn thay, một số công cụ hỗ trợ ROS TAB completion.

Bắt đầu nhập:

$ roscd roscpp_tut<<< now push the TAB key >>>

Sau khi nhấn TAB key, công cụ dòng lệnh sẽ thêm vào phần còn lại:

$ roscd roscpp_tutorials/

Điều này là đúng bởi vì hiện tại chỉ có một gói ROS tên roscpp_tut.

Bây giờ thử đánh:

$ roscd tur<<< now push the TAB key >>>

Sau khi nhấn phím TAB , command line sẽ điền phần còn thiếu nhiều nhất có thể:

$ roscd turtle

Hơn thế, trong trường hợp nhiều gói có tên bắt đầu là turtle. Thử đánh TAB lần nữa. Nó sẽ hiển thị tất cả các gói ROS có tên bắt đầu là turtle:

  • turtle_actionlib/  turtlesim/         turtle_tf/

Trê command line bạn vẫn sẽ thấy:

$ roscd turtle

Bây giờ gõ s sau turtle và nhấn TAB:

$ roscd turtles<<< now push the TAB key >>>

Do chỉ duy nhất một gói có tên là turtles, bạn sẽ thấy:

$ roscd turtlesim/

Xem lại

Bạn chý ý rằng cách thức đặt tên cho công cụ ROS như sau:

  • rospack = ros + pack(age)
  • roscd = ros + cd
  • rosls = ros + ls

Cách thức đặt tên (naming pattern) này được áp dụng cho nhiều công cụ ROS khác.

Wiki: vn/ROS/Tutorials/catkin/NavigatingTheFilesystem (last edited 2017-04-03 06:38:12 by HoangGiang88)