欢迎光临
我们一直在努力

ros基础

1.核心概念

 

节点 Node:一个独立进程,完成一个功能,如摄像头驱动、控制、建图。

话题 Topic:发布/订阅通信,异步、多对多,适合传感器数据流。

服务 Service:请求/响应通信,同步、一对一,适合短任务。

动作 Action:目标/反馈/结果,适合长时间任务,可取消,如导航到目标点。

参数 Parameter:节点配置项,ROS2 中是节点本地的,可动态修改。

消息 Message:话题的数据结构,如 std_msgs/msg/String。

接口 Interface:.msg、.srv、.action 文件定义通信数据。

包 Package:ROS 软件基本单元,含代码、配置、launch、接口。

工作空间 Workspace:存放源码、编译产物、安装文件。

计算图:节点、话题、服务、动作组成的网络。

DDS:ROS2 底层通信中间件,负责发现和传输。

QoS:服务质量,控制可靠性、持久性、历史、深度等。

执行器 Executor:调度节点回调,如单线程/多线程。

生命周期节点:有状态管理,如未配置、未激活、激活、结束。

TF2:坐标变换库,维护坐标系树。

Launch:批量启动节点和配置。

Rosbag:记录/回放话题数据。

RViz / rqt / Gazebo:可视化、调试、仿真工具。

 

2. 通信方式对比

 

方式 模式 同步性 关系 典型场景

话题 Topic 发布/订阅 异步 多对多 传感器、状态广播

服务 Service 请求/响应 同步 一对一 查询、短命令

动作 Action 目标/反馈/结果 异步 一对一 导航、抓取

参数 Parameter 配置读写 同步 节点本地 调参、配置

 

3. ROS2 工作空间与构建

 

```bash

mkdir -p ~/ros2_ws/src

cd ~/ros2_ws

colcon build

source install/setup.bash

```

 

目录:

 

src/:源码

build/:编译中间文件

install/:安装结果

log/:日志

 

包内常见文件:

 

package.xml:包信息、依赖

CMakeLists.txt:C++ 包构建

setup.py:Python 包构建

launch/:启动文件

msg/ srv/ action/:接口定义

 

4. ROS2 常用命令

 

```bash

ros2 run <pkg> <node>

ros2 node list

ros2 node info /node_name

 

ros2 topic list

ros2 topic echo /topic

ros2 topic pub /topic <type> "<data>"

ros2 topic hz /topic

ros2 topic info /topic

 

ros2 service list

ros2 service call /service <type> "<request>"

 

ros2 action list

ros2 action send_goal /action <type> "<goal>"

 

ros2 param list

ros2 param get /node param

ros2 param set /node param value

 

ros2 interface show <type>

ros2 launch <pkg> <launch.py>

ros2 bag record /topic

ros2 bag play <bag>

ros2 pkg create <pkg_name> –build-type ament_cmake

```

 

5. ROS1 与 ROS2 主要区别

 

项目 ROS1 ROS2

通信底层 自研 TCPROS/UDPROS DDS

中心节点 需要 roscore / Master 无中心,自动发现

参数 全局参数服务器 每个节点本地参数

构建 catkin ament + colcon

启动 roslaunch XML ros2 launch Python/XML/YAML

坐标变换 tf tf2

客户端库 roscpp / rospy rclcpp / rclpy

实时性 较弱 更好,支持 QoS、实时

 

ROS1 常用命令:

 

```bash

roscore

rosrun <pkg> <node>

roslaunch <pkg> <file.launch>

rostopic list/echo/pub

rosservice list/call

rosnode list/info

rosparam list/get/set

rosbag record -a

catkin_make

source devel/setup.bash

```

 

6. 注意点

 

忘记 source install/setup.bash 或 devel/setup.bash

ROS2 QoS 不匹配导致收不到数据

话题名、命名空间写错

TF 树断裂或时间戳不同步

服务/动作类型不匹配

生命周期节点未激活

多机通信时 ROS_DOMAIN_ID 不一致

赞(0)
未经允许不得转载:171主机测评 » ros基础
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址