【手把手做ROS2機(jī)器人系統(tǒng)開發(fā)二】熟悉ROS2基本命令
目錄
【手把手做ROS2機(jī)器人系統(tǒng)開發(fā)二】熟悉ROS2基本命令
一、上講回顧
二、ROS2核心命令講解
1、daemon-各種守護(hù)進(jìn)程相關(guān)的子命令
2、node-各種節(jié)點(diǎn)進(jìn)程相關(guān)的子命令
?3、pkg-各種包進(jìn)程相關(guān)的子命令
?4、run運(yùn)行特定軟件包的可行性文件
5、topic各種話題進(jìn)程相關(guān)的子命令
6、security各種安全進(jìn)程相關(guān)的子命令
7、service各種服務(wù)進(jìn)程相關(guān)的子命令
7、ROS2參數(shù)
8、ROS2操作Action
?9、ROS2消息日志
10、ROS2自啟動節(jié)點(diǎn)launch
11、數(shù)據(jù)記錄和播放
一、上講回顧
????????在上一講開發(fā)環(huán)境搭建中,我們講解了如何搭建Ubuntu系統(tǒng)環(huán)境和ROS2開發(fā)運(yùn)行環(huán)境。
1.Ubuntu系統(tǒng)安裝
2.ROS2系統(tǒng)環(huán)境安裝
二、ROS2核心命令講解
1、daemon-各種守護(hù)進(jìn)程相關(guān)的子命令
查看幫助:
ros2 daemon -h
啟動daemon
ros2 daemon start
查看狀態(tài)
ros2 daemon status
停止daemon
ros2 daemon stop
守護(hù)進(jìn)程用途:按照字面意思起到守護(hù)用途。類似ros1 master中心節(jié)點(diǎn)功能,用于減少節(jié)點(diǎn)之間發(fā)現(xiàn)的時(shí)間。
2、node-各種節(jié)點(diǎn)進(jìn)程相關(guān)的子命令
啟動一個(gè)節(jié)點(diǎn)用于測試
ros2 run demo_nodes_cpp talker
輸出節(jié)點(diǎn)列表:
ros2 node list
查看節(jié)點(diǎn)信息
ros2 node info /talker
?3、pkg-各種包進(jìn)程相關(guān)的子命令
創(chuàng)建功能包命令:指定包名、編譯方式、依賴項(xiàng)、節(jié)點(diǎn)名等
命令格式:
ros2 pkg create RobotDotTest --build-type ament_python --node-name RobotDotTest_node --dependencies rclpy std_msgs sensor_msgs --license Apache-2.0
命令 | 說明 |
ros2 pkg create | ROS2功能包創(chuàng)建命令 |
RobotDotTest | 所建功能包名稱 |
--build-type ament_python | 指定編程語言 |
-node-name RobotDotTest_node | 節(jié)點(diǎn)名稱 |
--dependencies rclpy std_msgs sensor_msgs | 指定依賴模塊,rclpy是python編程必選的, std_msgs和sensor_msgs是我們要用的消息模塊,也可以不指定手動配置 |
--license Apache-2.0 | 指定license Apache-2.0 |
查看
---------------------------------------
?查看包列表
ros2 pkg list
?executables輸出特定于軟件包的可執(zhí)行文件列表:
ros2 pkg executables turtlesim
?prefix 輸出包的前綴路徑:
ros2 pkg prefix turtlesim
?4、run運(yùn)行特定軟件包的可行性文件
ros2 run turtlesim turtlesim_node
ros2 run [-h] [--prefix PREFIX] package_name executable_name ...
package_name 軟件包名稱
executable_name 執(zhí)行名稱
argv 執(zhí)行對應(yīng)參數(shù)
5、topic各種話題進(jìn)程相關(guān)的子命令
usage: ros2 topic [-h] [--include-hidden-topics]
bw 顯示使用話題帶寬
delay 通過header中的時(shí)間戳計(jì)算消息延遲
echo 輸出話題信息
find 按消息類型查找相關(guān)話題
hz 顯示話題平均發(fā)布頻率
info 顯示話題消息類型,訂閱者數(shù)量,發(fā)布者數(shù)量
list 列出域內(nèi)可使用的主題列表
pub 發(fā)布一個(gè)話題消息
type 打印話題數(shù)據(jù)類型
list ? 列出域內(nèi)可使用的主題列表
ros2 topic list
info ? 顯示話題消息類型,訂閱者數(shù)量,發(fā)布者數(shù)量
ros2 topic info /turtle1/pose
type ? 打印話題數(shù)據(jù)類型
ros2 topic type /turtle1/pose
find ? 按消息類型查找相關(guān)話題
ros2 topic find turtlesim/msg/Pose
pub ? ?發(fā)布一個(gè)話題消息
ros2 topic pub control_node/action geometry_msgs/msg/TwistStamped "{header: {stamp:{sec: 0, nanosec: 0}, frame_id: control_node}, twist: {linear: {x: 0.3, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}}"
echo ? 輸出話題信息
ros2 topic echo /control_node/action
?hz ? ? 顯示話題平均發(fā)布頻率
ros2 topic hz /control_node/action
打開節(jié)點(diǎn)主題顯示圖形
rqt_graph
打開主題列表
ros2?topic?list?-t
查看主題數(shù)據(jù)
ros2 topic echo <topic_name>
ros2 topic echo /turtle1/cmd_vel
查看主題信息
ros2 topic info /turtle1/cmd_vel
查看主題數(shù)據(jù)結(jié)構(gòu)
ros2 interface show geometry_msgs/msg/Twist
發(fā)布主題數(shù)據(jù)消息
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}}"
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}}"
注:--once 單次發(fā)送 ??--rate 1 循環(huán)發(fā)送頻率1HZ
查看主題信息
ros2 topic echo /turtle1/pose
查看主題發(fā)送速率
ros2 topic hz /turtle1/pose
6、security各種安全進(jìn)程相關(guān)的子命令
create_enclave Create enclave
create_key 創(chuàng)建秘鑰
create_keystore 創(chuàng)建秘鑰庫
create_permission 創(chuàng)建許可
generate_artifacts 從身份和策略文件列表中生成密鑰和許可文件
generate_policy Generate XML policy file from ROS graph data
list_enclaves List enclaves in keystore
list_keys DEPRECATED: List enclaves in keystore. Use list_enclaves instead
7、service各種服務(wù)進(jìn)程相關(guān)的子命令
call調(diào)用服務(wù)
list列出所有的服務(wù)
ros2 service list
服務(wù)基于呼叫->應(yīng)答模型
查看服務(wù)列表
ros2?service?list
ros2 service list -t
查看服務(wù)類型
ros2 service type <service_name>
ros2 service type /clear
查看服務(wù)查找
ros2 service find <type_name>
ros2 service find std_srvs/srv/Empty
服務(wù)展示顯示
ros2 interface show <type_name>.srv
ros2 interface show std_srvs/srv/Empty.srv
ros2 interface show turtlesim/srv/Spawn
服務(wù)調(diào)用call
ros2 service call <service_name> <service_type> <arguments>
ros2 service call /clear std_srvs/srv/Empty
ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: 'turtle2'}"
7、ROS2參數(shù)
查看參數(shù)列表
ros2 param list
ros2參數(shù)get
ros2 param get <node_name> <parameter_name>
ros2 param get /turtlesim background_g
ros2 參數(shù)set
ros2 param set <node_name> <parameter_name> <value>
ros2 param set /turtlesim background_r 150
ros2參數(shù)存儲
ros2 param dump <node_name>
ros2 param dump /turtlesim
ros2 參數(shù)加載
ros2 param load <node_name> <parameter_file>
ros2 param load /turtlesim ./turtlesim.yaml
ros2 節(jié)點(diǎn)啟動時(shí)加載參數(shù)
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>
ros2 run turtlesim turtlesim_node --ros-args --params-file ./turtlesim.yaml
8、ROS2操作Action
(1)節(jié)點(diǎn)信息查看
ros2 node info /turtlesim
ros2 node info /teleop_turtle
(2)查詢操作列表
ros2 action list
ros2 action list -t
(3)操作動作信息
ros2 action info /turtle1/rotate_absolute
(4)操作界面顯示
ros2 interface show turtlesim/action/RotateAbsolute
(5)發(fā)送目標(biāo)動作
ros2 action send_goal <action_name> <action_type> <values>
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: -1.57}" --feedback
?9、ROS2消息日志
消息等級:
Fatal消息指示系統(tǒng)將終止以嘗試保護(hù)自身免受損害。
Error消息指示不一定會損壞系統(tǒng),但會阻止其正常運(yùn)行的重大問題。
Warn消息指示可能代表更深層次問題的意外活動或非理想結(jié)果,但不會完全損害功能。
Info消息指示事件和狀態(tài)更新,用于直觀驗(yàn)證系統(tǒng)是否按預(yù)期運(yùn)行。
Debug消息詳細(xì)說明了系統(tǒng)執(zhí)行的整個(gè)分步過程。
啟動信息終端
ros2 run rqt_console rqt_console
設(shè)置節(jié)點(diǎn)啟動消息等級
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
10、ROS2自啟動節(jié)點(diǎn)launch
執(zhí)行自動文件
ros2 launch <package_name> <launch_file_name>
ros2 launch <path_to_launch_file>
執(zhí)行自動文件后接參數(shù)
ros2 launch <package_name> <launch_file_name> background_r:=255
ros2 launch <path_to_launch_file> background_r:=255
參考啟動文件
<!-- example.launch.xml -->
<launch>
??<!-- args that can be set from the command line or a default will be used -->
??<arg?name="background_r"?default="0"/>
??<arg?name="background_g"?default="255"/>
??<arg?name="background_b"?default="0"/>
??<arg?name="chatter_ns"?default="my/chatter/ns"/>
??<!-- include another launch file -->
??<include?file="$(find-pkg-share demo_nodes_cpp)/launch/topics/talker_listener.launch.py"/>
??<!-- include another launch file in the chatter_ns namespace-->
??<group>
????<!-- push-ros-namespace to set namespace of included nodes -->
????<push-ros-namespace?namespace="$(var chatter_ns)"/>
????<include?file="$(find-pkg-share demo_nodes_cpp)/launch/topics/talker_listener.launch.py"/>
??</group>
??<!-- start a turtlesim_node in the turtlesim1 namespace -->
??<node?pkg="turtlesim"?exec="turtlesim_node"?name="sim"?namespace="turtlesim1"/>
??<!-- start another turtlesim_node in the turtlesim2 namespace ?????and use args to set parameters -->
??<node?pkg="turtlesim"?exec="turtlesim_node"?name="sim"?namespace="turtlesim2">
????<param?name="background_r"?value="$(var background_r)"/>
????<param?name="background_g"?value="$(var background_g)"/>
????<param?name="background_b"?value="$(var background_b)"/>
??</node>
??<!-- perform remap so both turtles listen to the same command topic -->
??<node?pkg="turtlesim"?exec="mimic"?name="mimic">
????<remap?from="/input/pose"?to="/turtlesim1/turtle1/pose"/>
????<remap?from="/output/cmd_vel"?to="/turtlesim2/turtle1/cmd_vel"/>
??</node>
</launch>
11、數(shù)據(jù)記錄和播放
建立測試環(huán)境
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
建立記錄數(shù)據(jù)存儲區(qū)域
mkdir bag_files
cd bag_files
選擇對應(yīng)主題信息
ros2 topic list
ros2 topic echo /turtle1/cmd_vel
數(shù)據(jù)記錄命令
ros2 bag record <topic_name>
ros2 bag record /turtle1/cmd_vel
記錄多個(gè)主題信息
ros2 bag record -o subset /turtle1/cmd_vel /turtle1/pose
查看記錄信息
ros2 bag info <bag_file_name>
ros2 bag info subset
播放記錄信息
ros2 bag play subset
ros2 topic hz /turtle1/pose文章來源:http://www.zghlxwxcb.cn/news/detail-629498.html
本節(jié)文章到此結(jié)束,謝謝大家閱讀。。。?文章來源地址http://www.zghlxwxcb.cn/news/detail-629498.html
到了這里,關(guān)于【手把手做ROS2機(jī)器人系統(tǒng)開發(fā)二】熟悉ROS2基本命令的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!