【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
目录
【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令
一、上讲回顾
二、ROS2核心命令讲解
1、daemon-各种守护进程相关的子命令
2、node-各种节点进程相关的子命令
3、pkg-各种包进程相关的子命令
4、run运行特定软件包的可行性文件
5、topic各种话题进程相关的子命令
6、security各种安全进程相关的子命令
7、service各种服务进程相关的子命令
7、ROS2参数
8、ROS2操作Action
9、ROS2消息日志
10、ROS2自启动节点launch
11、数据记录和播放
一、上讲回顾
在上一讲开发环境搭建中,我们讲解了如何搭建Ubuntu系统环境和ROS2开发运行环境。
1.Ubuntu系统安装
2.ROS2系统环境安装
二、ROS2核心命令讲解
1、daemon-各种守护进程相关的子命令
查看帮助:
ros2 daemon -h
启动daemon
ros2 daemon start
查看状态
ros2 daemon status
停止daemon
ros2 daemon stop
守护进程用途:按照字面意思起到守护用途。类似ros1 master中心节点功能,用于减少节点之间发现的时间。
2、node-各种节点进程相关的子命令
启动一个节点用于测试
ros2 run demo_nodes_cpp talker
输出节点列表:
ros2 node list
查看节点信息
ros2 node info /talker
3、pkg-各种包进程相关的子命令
创建功能包命令:指定包名、编译方式、依赖项、节点名等
命令格式:
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功能包创建命令 |
RobotDotTest | 所建功能包名称 |
--build-type ament_python | 指定编程语言 |
-node-name RobotDotTest_node | 节点名称 |
--dependencies rclpy std_msgs sensor_msgs | 指定依赖模块,rclpy是python编程必选的, std_msgs和sensor_msgs是我们要用的消息模块,也可以不指定手动配置 |
--license Apache-2.0 | 指定license Apache-2.0 |
查看
---------------------------------------
查看包列表
ros2 pkg list
executables输出特定于软件包的可执行文件列表:
ros2 pkg executables turtlesim
prefix 输出包的前缀路径:
ros2 pkg prefix turtlesim
4、run运行特定软件包的可行性文件
ros2 run turtlesim turtlesim_node
ros2 run [-h] [--prefix PREFIX] package_name executable_name ...
package_name 软件包名称
executable_name 执行名称
argv 执行对应参数
5、topic各种话题进程相关的子命令
usage: ros2 topic [-h] [--include-hidden-topics]
bw 显示使用话题带宽
delay 通过header中的时间戳计算消息延迟
echo 输出话题信息
find 按消息类型查找相关话题
hz 显示话题平均发布频率
info 显示话题消息类型,订阅者数量,发布者数量
list 列出域内可使用的主题列表
pub 发布一个话题消息
type 打印话题数据类型
list 列出域内可使用的主题列表
ros2 topic list
info 显示话题消息类型,订阅者数量,发布者数量
ros2 topic info /turtle1/pose
type 打印话题数据类型
ros2 topic type /turtle1/pose
find 按消息类型查找相关话题
ros2 topic find turtlesim/msg/Pose
pub 发布一个话题消息
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 显示话题平均发布频率
ros2 topic hz /control_node/action
打开节点主题显示图形
rqt_graph
打开主题列表
ros2 topic list -t
查看主题数据
ros2 topic echo <topic_name>
ros2 topic echo /turtle1/cmd_vel
查看主题信息
ros2 topic info /turtle1/cmd_vel
查看主题数据结构
ros2 interface show geometry_msgs/msg/Twist
发布主题数据消息
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 单次发送 --rate 1 循环发送频率1HZ
查看主题信息
ros2 topic echo /turtle1/pose
查看主题发送速率
ros2 topic hz /turtle1/pose
6、security各种安全进程相关的子命令
create_enclave Create enclave
create_key 创建秘钥
create_keystore 创建秘钥库
create_permission 创建许可
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各种服务进程相关的子命令
call调用服务
list列出所有的服务
ros2 service list
服务基于呼叫->应答模型
查看服务列表
ros2 service list
ros2 service list -t
查看服务类型
ros2 service type <service_name>
ros2 service type /clear
查看服务查找
ros2 service find <type_name>
ros2 service find std_srvs/srv/Empty
服务展示显示
ros2 interface show <type_name>.srv
ros2 interface show std_srvs/srv/Empty.srv
ros2 interface show turtlesim/srv/Spawn
服务调用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参数
查看参数列表
ros2 param list
ros2参数get
ros2 param get <node_name> <parameter_name>
ros2 param get /turtlesim background_g
ros2 参数set
ros2 param set <node_name> <parameter_name> <value>
ros2 param set /turtlesim background_r 150
ros2参数存储
ros2 param dump <node_name>
ros2 param dump /turtlesim
ros2 参数加载
ros2 param load <node_name> <parameter_file>
ros2 param load /turtlesim ./turtlesim.yaml
ros2 节点启动时加载参数
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)节点信息查看
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)发送目标动作
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消息指示系统将终止以尝试保护自身免受损害。
Error消息指示不一定会损坏系统,但会阻止其正常运行的重大问题。
Warn消息指示可能代表更深层次问题的意外活动或非理想结果,但不会完全损害功能。
Info消息指示事件和状态更新,用于直观验证系统是否按预期运行。
Debug消息详细说明了系统执行的整个分步过程。
启动信息终端
ros2 run rqt_console rqt_console
设置节点启动消息等级
ros2 run turtlesim turtlesim_node --ros-args --log-level WARN
10、ROS2自启动节点launch
执行自动文件
ros2 launch <package_name> <launch_file_name>
ros2 launch <path_to_launch_file>
执行自动文件后接参数
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、数据记录和播放
建立测试环境
ros2 run turtlesim turtlesim_node
ros2 run turtlesim turtle_teleop_key
建立记录数据存储区域
mkdir bag_files
cd bag_files
选择对应主题信息
ros2 topic list
ros2 topic echo /turtle1/cmd_vel
数据记录命令
ros2 bag record <topic_name>
ros2 bag record /turtle1/cmd_vel
记录多个主题信息
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文章来源:https://www.toymoban.com/news/detail-629498.html
本节文章到此结束,谢谢大家阅读。。。 文章来源地址https://www.toymoban.com/news/detail-629498.html
到了这里,关于【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!