Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

1. 常用命令

1.1. node 相关命令

1
2
3
4
5
6
7
8
9
10
# 查看 所有已运行的 node 列表
ros2 node list
# 查看 node 的信息
ros2 node info <node_name>
# 运行 node 节点
ros2 run <package_name> <executable_name>
# [例如]:运行 turtlesim 节点
ros2 run turtlesim turtlesim_node
# 运行 node 节点时,加载 转储的参数文件
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

1.2. topic 相关命令

1
2
3
4
5
6
# 查看 所有已启动的 topic 列表
ros2 topic list
# 查找 topic 的类型定义
ros2 topic type <topic_name>
# 查看 topic 的信息
ros2 topic info <topic_name>

1.3. service 相关命令

1
2
3
4
5
6
# 查看 所有已启动的 service 列表
ros2 service list
# 查找 service 的类型定义
ros2 service type <service_name>
# 查看 service 的信息
ros2 service info <service_name>

1.4. action 相关命令

1
2
3
4
5
6
7
8
9
10
11
12
# 查看 所有已启动的 action 列表
ros2 action list
# 查看 所有已启动的 action 列表 和 对应的类型
ros2 action list -t
# 查找 action 的类型定义
ros2 action type <action_name>
# 查看 action 的信息
ros2 action info <action_name>
# 通过命令行 发送 action 请求
ros2 action send_goal <action_name> <action_type> <values>
# [例如]
ros2 action send_goal /turtle1/rotate_absolute turtlesim/action/RotateAbsolute "{theta: 1.57}"

1.5. param 相关命令

1
2
3
4
5
6
7
8
9
10
11
12
# 查看参数列表
ros2 param list
# 获取参数的值
ros2 param get <node_name> <parameter_name>
# 设置参数的值
ros2 param set <node_name> <parameter_name> <value>
# 转储 <node_name> 节点的所有参数
ros2 param dump <node_name>
# 将转储的参数文件加载到当前正在运行的节点
ros2 param load <node_name> <parameter_file>
# 在节点启动时 加载 转储的参数文件
ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

1.6. interface 相关命令

1
2
3
4
# 查看接口的消息类型定义
ros2 interface show <interface_name>
# [例如] 查看 turtlesim/action/RotateAbsolute 的消息定义
ros2 interface show turtlesim/action/RotateAbsolute

2. ROS节点的创建、编译和运行流程

2.1. 创建 workspace ros2_ws

1
2
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src

2.2. 创建 package

1
2
3
ros2 pkg create --build-type ament_cmake --license Apache-2.0 <package_name>
# 如创建cpp_pubsub包
ros2 pkg create --build-type ament_cmake --license Apache-2.0 cpp_pubsub

2.3. 检查 dependencies

检查依赖项并安装依赖项

1
rosdep install -i --from-path src --rosdistro jazzy -y

如果出现以下报错:

1
ERROR: your rosdep installation has not been initialized yet.

执行以下命令初始化rosdep:

1
2
sudo rosdep init
rosdep update

2.4. 构建 package

1
2
3
4
5
6
# 进入 workspace 根目录
cd ~/ros2_ws
# 构建 workspace 下的所有 package
colcon build
# 构建 workspace 下的指定 package
colcon build --packages-select <package_name>

2.5. 运行 node

1
2
3
4
5
6
7
8
9
# source 环境变量
source install/local_setup.zsh
# 运行 node 节点
ros2 run <package_name> <executable_name>

# 如:运行cpp_pubsub下的talker
ros2 run cpp_pubsub talker
# 如:运行cpp_pubsub下的listener
ros2 run cpp_pubsub listener

3. ros2doctor 工具

3.1. 工具介绍

ros2doctor是ROS2的诊断工具,它会检查ROS2的各个方面,包括平台、版本、网络、环境、正在运行的系统等,并就可能出现的错误及问题原因向你发出警告。

ros2doctor它是ros2cli包的一部分,在安装ROS2时就默认已经安装。当你的ROS2设置未按预期运行时,你可以使用ros2doctor工具检查其设置。

3.2. 工具使用

1
2
3
4
5
6
7
# 执行检查
ros2 doctor
# 1. 没有任何node运行时,会全面检查ROS2的整体设置
# 2. 有node运行时,会检查node的设置,如node名称、namespace、topic、service、action等,以及node的运行状态。

# 执行检查,并返回详细的诊断报告
ros2 doctor --report

3.3. 参考文档

https://docs.ros.org/en/jazzy/Tutorials/Beginner-Client-Libraries/Getting-Started-With-Ros2doctor.html#

推荐阅读
Ubuntu安装ROS2 Ubuntu安装ROS2 ROS2中ROS_DOMAIN_ID的作用与配置 ROS2中ROS_DOMAIN_ID的作用与配置 博客建站12 - 部署discuss评论系统 博客建站12 - 部署discuss评论系统

评论