目錄
- 一、配置環(huán)境
- 二、工作空間
- 三、啟動(dòng)
- 四悼沿、Node
- 五刹泄、Topic
- 六翁逞、Service
- 七录肯、Parameter
- 八吧兔、Action
- 九、Bag
- 十袍嬉、Message
- 十一境蔼、Interface
ROS2命令行工具(Command Line Interface CLI)
一、配置環(huán)境
1.1 命令概覽
1.2 命令解釋
1.2.1 設(shè)置環(huán)境變量
終端臨時(shí)添加ROS2環(huán)境變量
source /opt/ros/humble/setup.bash
終端永久添加ROS2環(huán)境變量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
1.2.2 查看ROS2版本
檢查ROS2的版本及所使用的python版本
printenv | grep -i ROS
1.2.3 設(shè)置DOMAIN ID變量
終端臨時(shí)設(shè)置ROS2的DDS Domain變量
export ROS_DOMAIN_ID=<your_domain_id>
終端永久設(shè)置ROS2的DDS Domain變量
echo "export ROS_DOMAIN_ID=<your_domain_id>" >> ~/.bashrc
1.2.4 設(shè)置LOCALHOST變量
終端臨時(shí)設(shè)置ROS2的ROS_LOCALHOST_ONLY變量
export ROS_LOCALHOST_ONLY=1
終端永久設(shè)置ROS2的ROS_LOCALHOST_ONLY變量
echo "export ROS_LOCALHOST_ONLY=1" >> ~/.bashrc
默認(rèn)情況下伺通,ROS 2 通信不限于 localhost箍土。 ROS_LOCALHOST_ONLY環(huán)境變量允將 ROS 2 通信限制為僅本地主機(jī)。這意味著 ROS 2 系統(tǒng)及其主題罐监、服務(wù)和操作對(duì)本地網(wǎng)絡(luò)上的其他計(jì)算機(jī)不可見(jiàn)吴藻。
二、工作空間
2.1 命令概覽
2.2 命令解釋
2.2.1 創(chuàng)建工作空間
mkdir -p ~/ros2_ws/src
2.2.2 創(chuàng)建功能包
ros2 pkg create <package-name> --build-type {cmake,ament_cmake,ament_python} --dependencies <dependencies -name>
--build-type 用來(lái)指定該包的編譯類型笑诅,一共有三個(gè)可選項(xiàng)ament_python调缨、ament_cmake疮鲫、cmake吆你,--dependencies 指的是這個(gè)功能包的依賴
舉例:
ros2 pkg create example_cpp --build-type ament_cmake --dependencies rclpy
2.2.3 查詢包的可執(zhí)行文件
ros2 pkg executables <package-name>
舉例:
ros2 pkg executables turtlesim
列出turtlesim功能包的所有可執(zhí)行文件
2.2.4 查看當(dāng)前目錄下所有的包
ros2 pkg list
2.2.5 查看包所在路徑的前綴
ros2 pkg prefix <package-name>
2.2.6 查看包的清單描述文件
ros2 pkg xml turtlesim
三、啟動(dòng)
3.1 命令概覽
3.2 命令解釋
3.2.1 啟動(dòng)launch文件
ros2 launch <package-name> <launch_file>
舉例:
ros2 launch turtlesim_mimic_launch.py
四俊犯、Node
4.1 命令概覽
4.2 命令解釋
4.2.1 運(yùn)行單個(gè)節(jié)點(diǎn)
ros2 run <package_name> <executable_name>
4.2.2 重映射節(jié)點(diǎn)名稱
ros2 run <package_name> <executable_name> --ros-args --remap __node:=my_turtle
舉例:
ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
重新映射允許您將默認(rèn)節(jié)點(diǎn)屬性(如節(jié)點(diǎn)名稱妇多、主題名稱、服務(wù)名稱等)重新分配給自定義值燕侠。
4.2.3 查看運(yùn)行的節(jié)點(diǎn)列表
ros2 node list
4.2.4 查看節(jié)點(diǎn)信息
ros2 node info <node_name>
五者祖、Topic
5.1 命令概覽
5.2 命令解釋
5.2.1 查看話題列表
ros2 topic list
5.2.2 打印話題內(nèi)容
ros2 topic echo <topic_name>
5.2.3 查看話題信息
ros2 topic info <topic_name>
5.2.4 手動(dòng)發(fā)布話題內(nèi)容
ros2 topic pub <topic_name> <msg_type> <args>
舉例:
ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
以1Hz頻率發(fā)布
ros2 topic pub --once /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"
只發(fā)布一次,--once是一個(gè)可選參數(shù)绢彤,意思是“發(fā)布一條消息然后退出”七问。
Tips:在手動(dòng)發(fā)布話題內(nèi)容時(shí),填寫(xiě)話題名稱后茫舶,<msg_type>和<args>都可以通過(guò)Tab
按鍵補(bǔ)全出來(lái)械巡。
5.2.5 查看話題發(fā)布頻率
ros2 topic hz <topic_name>
六、Service
6.1 命令概覽
6.2 命令解釋
6.2.1 查看服務(wù)列表
ros2 service list
6.2.2 查看service接口類型
ros2 service type <service_name>
舉例:
ros2 service type /add_two_ints
6.2.3 查找使某個(gè)接口的service
ros2 service find <service_type>
舉例:
ros2 service find example_interfaces/srv/AddTwoInts
6.2.4 手動(dòng)調(diào)用服務(wù)
ros2 service call <service_name> <service_type> <args>
舉例:
ros2 service call /add_two_ints example_interfaces/srv/AddTwoInts "{a: 5,b: 10}"
七、Parameter
7.1 命令概覽
7.2 命令解釋
7.2.1 查看參數(shù)名稱
ros2 param list
7.2.2 詳細(xì)查看一個(gè)參數(shù)的信息
ros2 param describe <node_name> <param_name>
7.2.3 獲取參數(shù)的值
ros2 param get <param_name>
舉例:
ros2 param get /turtlesim background_b
7.2.4 設(shè)置參數(shù)的值
ros2 param set <node_name> <parameter_name> <value>
7.2.5 把當(dāng)前的參數(shù)值拍一張快照讥耗,然后保存下來(lái)有勾,文件被保存成了yaml格式
ros2 param dump <node_name>
7.2.6 把參數(shù)值恢復(fù)成之前的存儲(chǔ)
ros2 param load <node_name> <paramfile.yaml>
八、Action
8.1 命令概覽
8.2 命令解釋
8.2.1 查看action列表
ros2 action list
8.2.2 查看action信息
ros2 action info /turtle1/rotate_absolute
8.2.3 手動(dòng)發(fā)布action
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.6}"
九古程、Bag
9.1 命令概覽
9.2 命令解釋
9.2.1 錄制所有的Topic
ros2 bag record -a
9.2.2 錄制指定Topic
ros2 bag record <topic-name>
9.2.3 設(shè)置bag的名稱
ros2 bag record -o <file-name> <topic-name>
9.2.4 查看bag的信息
ros2 bag info <bag-file>
9.2.5 播放bag
ros2 bag play <xxx.db3>
在ROS2中bag的后綴名不再是.bag
而是.db3
蔼卡。
舉例:
-r
參數(shù),倍速播放
ros2 bag play rosbag2_2021_10_03-15_31_41_0.db3 -r 10
-l
參數(shù)挣磨,循環(huán)播放
ros2 bag play rosbag2_2021_10_03-15_31_41_0.db3 -l
--topics
參數(shù)雇逞,播放單個(gè)話題
ros2 bag play rosbag2_2021_10_03-15_31_41_0.db3 --topics <topic-name>
十、Message
10.1 命令概覽
10.2 命令解釋
10.2.1 查看消息
ros2 msg list
10.2.2 查看消息的詳細(xì)信息
ros2 msg show <msg-name>
10.2.3 查看消息的詳細(xì)信息
ros2 msg info <msg-name>
info
命令是show
的別名
10.2.4 查看某個(gè)包下所有的消息
ros2 msg package <package-name>
10.2.5 查詢包含msg文件的包
ros2 msg packages
十一趋急、Interface
Interface是ROS2中話題喝峦、服務(wù)、動(dòng)作中定義的msg呜达,srv谣蠢,action接口的總稱。
11.1 命令概覽
11.2 命令解釋
11.2.1 查看當(dāng)前運(yùn)行interface的列表
ros2 interface list
11.2.2 查看interface信息
ros2 interface show <interface-name>
舉例:
ros2 interface show std_msgs/msg/String
ros2 interface show example_interfaces/srv/AddTwoInts
11.2.3 查看某一個(gè)接口包下所有的接口
ros2 interface package <package_name>
舉例:
ros2 interface package sensor_msgs