
简介发展最初早期ROS1--------》2020年之后ROS2全面使用。关系Humble(ros2)LTS,27年到期维护 ——Ubuntu 22.xx版本Jazzy(ros2)(29年到期维护)——Ubuntu 24.04版本Rolling(ros2) 最新版本ROS2:robot Operating System2,该机器人系统 可以运行在windows/linux/macOS等系统上的软件框架。结构workspace工作空间:项目代码存放地址package(功能包项目源代码地址node(节点)ros运行最小单元一个程序进程就是一个节点。topic(话题)异步单向通道发布后不知道订阅者是否收到无应答无等待类似canopen协议的DOP方式只发布指令不管指令是否被接收无应答。也类似UDP传输协议广播形式只发布service(服务)客户端发起单次请求服务端处理完毕后返回应答一问一答的形式。类似canopen协议的SOP工作模式一问一答的的指令发布。也类似TCP传输控制协议传输信息都是经过问答握手形式进行。interface接口统一所有节点的发布指令的数据规范格式发布指令可以查询接口就能知道该指令如何发布parameter参数机器人全局配置参数的字典库action(动作)完整的执行流程下发目标-》实时返回执行进度-》最终推送的执行结果DDS(数据分发服务):多设备协同运行控制整机神经网络Distributed Comunication分布式通信多设备系统运行控制以上就是ros系统的结构通过结构清晰每一层的关系和逻辑控制。环境这篇文章及涉及Linux系统下的ros2。安装可以直接在Linux系统笔记本上安装Windows系统也可以借助虚拟机安装。只需要注意对应Ubuntu的版本对应的ros2版本即可sudo apt install ros-xx一键安装即可。常用指令命令跟结构紧密相关命令结构形式ros2 模块名 动作 可选参数 目标名称ros2固定前缀模块名一级子命令结构的分类node、topic、service、param、bag、pkg、interface等动作二级子命令list、info、echo、pub、call、get、set等可选参数-a、-o、--version、--rate等等目标对象具体的对应的节点名、话题名接口名等等以ros2自带的小海龟仿真模型举例展示指令的运用:1、启动小海龟ros2 run turtlesim turtlesim_node2、启动键盘控制ros2 run turtlesim turtle_teleop_key启动小海龟通过键盘操控运动方向和移动速度等。常规是通过py脚本一键启动所有相关服务这样就可以全部把小海龟仿真系统全部启动。在你的 Python Launch 文件例如turtlesim_launch.py中使用ExecuteProcess或特定动作来打开新终端。以下是针对 Ubuntu 默认终端gnome-terminal的配置示例from launch import LaunchDescription from launch_ros.actions import Node from launch.actions import ExecuteProcess def generate_launch_description(): return LaunchDescription([ # 1. 启动海龟仿真节点 Node( packageturtlesim, executableturtlesim_node, namesim ), # 2. 在新终端中启动键盘控制节点 # 注意不同Linux发行版的终端命令不同Ubuntu通常为 gnome-terminal ExecuteProcess( cmd[ gnome-terminal, --, # 分隔符后面是具体执行的命令 ros2, run, turtlesim, turtle_teleop_key ], outputscreen ) ])在ubuntu系统新建.py文件将启动脚本保存后在终端启动查到海龟包名ros2 launch turtlesim turtlesim_launch.py这样就全部启动小海龟仿真系统的节点。1、功能包相关指令1、ros2 pkg list 列出所有包2、ros2 pkg list | grep keyword 查找特定过滤后的包通过关键字查找eg:查找小海龟功能包3、查看包内的可执行文件节点如果你知道包名想确认该包里有哪些可以运行的节点Executable使用以下命令ros2 pkg executables package_name # 示例查看 turtlesim 包下有哪些可执行文件 ros2 pkg executables turtlesim查找包-查询可运行节点-运行节点2、节点相关指令1、ros2 launch 包名 xxx.py 启动一组通过python指令来启动的节点2、ros2 node list 查询所有节点3、ros2 node list | grep keyword 查询特定过滤的节点4、ros2 node info /节点名 查询具体节点下的所有信息订阅、发布、服务、接口、动作等等3、话题相关指令1、ros2 topic list -t 查询所有话题及类型2、ros2 topic echo /话题名 实时监听话题的数据信息雷达信息、里程计数据、摄像头数据等eg:海龟的坐标朝向信息3、ros2 topic pub /话题名 发布话题操控机器人运动等eg:控制小海龟转圈4、服务相关指令服务用于同步请求-响应通信如查询状态、触发一次性动作例如清除数据、新增话题、重置等等操作1、ros2 service list -t 查询所有服务以及参数类型2、ros2 service call /clear std_srvs/srv/Empty {} 清除小乌龟行走数据3、ros2 service call /spawn turtlesim/srv/Spawn {x: 2, y: 2, theta: 0.0, name: turtle2} 创建另一只下海龟5. 参数配置 (Param)参数用于在运行时动态调整节点配置。1、ros2 param list 查询所有参数指定查询ros2 param list /sim2、ros2 param get /sim background_g 获取小海龟背景颜色值3、ros2 param set /sim background_g 255 修改背景色为2556. 动作监控 (Action)动作用于长时间运行的任务支持反馈和取消如导航到目标点。1、查询动作接口ros2 action list2、查询节点中对应的action接口就可以发送指令控制动作例如7. 数据录制与回放 (Bag)用于记录机器人运行时的传感器数据和状态便于离线分析。1、数据录制ros2 bag record -a # 录制所有话题ros2 bag record /turtle1/pose /turtle1/cmd_vel # 录制指定话题2、回放数据ros2 bag play bag_file_name