一、实验目的理解ROS参数服务器Parameter Server的作用及工作机制。掌握rosparam命令的基本操作方法。学会使用YAML文件管理系统配置参数。掌握Launch文件的编写与使用方法。能够通过Launch文件实现ROS系统的一键启动。二、实验环境操作系统Ubuntu 20.04ROS版本ROS Noetic编程语言Python 3工具终端Terminal功能包turtlesim三、实验原理参数服务器用于存储系统运行参数节点可以动态读取和修改这些参数实现配置与运行的分离。YAML文件用于集中管理系统配置参数便于复用和版本控制。Launch文件允许同时启动多个ROS节点、加载参数文件和设置运行环境实现系统一键化启动提高实验和开发效率。四、实验内容实验一参数服务器基本操作第七天——任务1参数服务器基本操作ROS参数操作命令表格命令功能描述使用示例rosparam set设置参数值rosparam set /param_name valuerosparam get获取参数值rosparam get /param_namerosparam load从YAML文件加载参数到ROS参数服务器rosparam load params.yamlrosparam dump将当前参数服务器的参数导出到YAML文件rosparam dump params.yamlrosparam delete删除指定参数rosparam delete /param_namerosparam list列出所有参数名rosparam list先打开roscorerosparam set name huluwa rosparam get name rosparam delete name #将参数写出到外部文件 rosparam dump yyy.yaml rosparam load(先准备 yaml 文件) #从外部文件加载参数 rosparam load xxx.yaml实验二使用YAML文件管理ROS参数第七天——任务2使用YAML文件管理ROS参数一、实验目的理解YAML文件的作用和应用场景。掌握YAML文件的基本语法规则。学会使用YAML文件批量配置ROS参数。掌握通过rosparam load命令加载参数的方法。能够通过参数服务器读取并验证配置结果。理解配置文件与程序代码分离的开发思想。二、实验背景在实际机器人项目开发中系统通常包含大量配置参数例如机器人名称最大运行速度激光雷达安装位置摄像头分辨率PID控制器参数地图文件路径如果这些参数直接写在程序代码中robot_name Robot01max_speed 1.5camera_width 640camera_height 480当参数发生变化时需要修改代码并重新运行程序。为了提高系统的可维护性ROS提供了参数服务器(Parameter Server)而YAML文件则用于统一管理这些参数。开发人员只需要修改配置文件无需修改程序代码。因此YAML 参数配置文件Parameter Server 参数存储中心三、认识YAML文件1. YAML是什么YAMLYAML Aint Markup Language是一种专门用于数据配置的文本格式。特点可读性强结构清晰编写简单支持层级关系广泛应用于ROS系统文件扩展名.yaml或者.yml2. YAML基本语法1键值对格式name: ZhangSanage: 20score: 95含义参数名参数值nameZhangSanage20score952层级结构格式student:name: ZhangSanage: 20score: 95注意子级内容必须缩进。推荐使用2个空格或4个空格不要使用Tab键。对应关系student├─ name├─ age└─ score3列表数据格式courses:- ROS- Linux- Python等价于courses[0] ROScourses[1] Linuxcourses[2] Python4布尔值enable_camera: trueenable_lidar: false5浮点数max_speed: 1.5wheel_radius: 0.08四、创建YAML配置文件步骤1创建配置目录#进入工作空间 cd ~/catkin_ws/src/my_pkg #创建配置目录 mkdir config #查看目录 my_pkg ├── launch ├── scripts ├── src └── config步骤2创建student.yaml文件#进入配置目录 cd config #创建文件 gedit student.yaml #输入以下内容 student: name: ZhangSan age: 20 score: 95 #保存退出。步骤3检查YAML格式#正确格式 student: name: ZhangSan age: 20 score: 95 #错误格式 student: name: ZhangSan age: 20 score: 95 #原因没有缩进。 #错误格式 student: name: ZhangSan #原因使用了Tab键。YAML要求使用空格缩进。五、加载YAML参数到参数服务器步骤1启动ROS Master打开终端 roscore 启动成功后保持窗口运行。步骤2加载配置文件新开终端 rosparam load student.yaml 执行成功后不会显示明显提示。步骤3查看全部参数rosparam list 输出示例 /student/age /student/name /student/score 说明参数已经进入参数服务器。六、读取参数读取姓名 rosparam get /student/name 结果 ZhangSan 读取年龄 rosparam get /student/age 结果 20 读取成绩 rosparam get /student/score 结果 95 查看整个节点参数 rosparam get /student 结果 age: 20 name: ZhangSan score: 95七、修改配置文件并重新加载修改文件student:name: LiSiage: 22score: 88重新加载rosparam load student.yaml查询rosparam get /student/name结果LiSi说明参数已更新。八、机器人配置实例实际机器人项目中的配置文件通常如下robot:name: smart_robotmax_speed: 1.5wheel_radius: 0.08camera:width: 640height: 480fps: 30lidar:range: 10frequency: 15加载后rosparam list可看到/robot/name/robot/max_speed/robot/wheel_radius/camera/width/camera/height/camera/fps/lidar/range/lidar/frequency这就是大型ROS项目中常见的配置管理方式。实验三使用Launch文件启动ROS系统第七天——任务3使用 Launch 文件启动 ROS 系统一、实验目的理解 Launch 文件的作用和优势。掌握 Launch 文件的基本语法和结构。学会通过 Launch 文件启动单个节点和多个节点。掌握在 Launch 文件中加载参数文件YAML。理解节点命名、重映射话题、传递参数的方法。能够使用 Launch 文件实现系统一键启动提高开发效率。二、实验背景在 ROS 系统开发中如果每次都用rosrun单独启动节点会有以下问题多个节点需要多个终端窗口。参数加载和节点启动需要多条命令。系统启动容易出错调试困难。Launch 文件的优势可以一次性启动多个节点。可以加载 YAML 参数文件。可以设置节点命名和话题重映射。总结Launch 文件 ROS 系统启动脚本 参数加载器三、认识Launch文件1.文件格式扩展名.launch文件类型XML2.基本结构launch node pkgpackage_name typenode_executable namenode_name/ /launch说明标签属性说明launch无根标签包含所有启动内容nodepkg节点所在包名type节点可执行文件名name启动节点时使用的名称output日志输出方式可选四、实验内容实验4.1启动单个节点1.创建 launch 文件launch/start_turtle.launchlaunch node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ /launch 说明 pkgturtlesim 指定功能包。 typeturtlesim_node 指定节点执行文件。 nameturtle1 为节点自定义名称。 outputscreen 输出日志到终端。2.运行roslaunch my_pkg start_turtle.launch 注意这里用的命令是roslaunch3.观察弹出 turtlesim 窗口终端显示节点启动日志实验4.2启动多个节点1.创建 launch 文件launch/multi_turtle.launchlaunch node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ node pkgturtlesim typeturtlesim_node nameturtle2 outputscreen/ /launch2.运行roslaunch my_pkg multi_turtle.launch3.观察出现两个 turtlesim 窗口两个节点可以独立运行实验4.3加载YAML参数文件1.假设已经创建配置文件config/student.yamlstudent: name: ZhangSan age: 20 score: 952.创建 launch 文件launch/start_with_param.launchlaunch !-- 加载参数文件 -- rosparam file$(find my_pkg)/config/student.yaml commandload/ !-- 启动节点 -- node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ /launch 说明 $(find my_pkg)自动查找工作空间中包路径 rosparam 标签加载 YAML 参数到参数服务器 节点可以通过参数服务器获取配置参数3.运行roslaunch my_pkg start_with_param.launch4.验证参数rosparam get /student/name rosparam get /student/age rosparam get /student/score实验4.4节点话题重映射有时需要同一个节点发布到不同话题或订阅不同话题。1.创建 launch 文件launch/remap.launchlaunch node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen remap fromturtle1/cmd_vel toturtle1/cmd_vel_custom/ /node /launch2.运行roslaunch my_pkg remap.launch 说明 原话题 turtle1/cmd_vel 被重映射为 turtle1/cmd_vel_custom 可以同时运行多个节点而不冲突实验4.5组合启动综合实验1.创建 Launch 文件launch/full_system.launchlaunch !-- 加载学生信息参数 -- rosparam file$(find my_pkg)/config/student.yaml commandload/ !-- 启动两个turtlesim节点 -- node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ node pkgturtlesim typeturtlesim_node nameturtle2 outputscreen remap fromturtle1/cmd_vel toturtle2/cmd_vel/ /node /launch2.运行roslaunch my_pkg full_system.launch3.任务观察两个 turtlesim 节点运行使用rosparam get验证 YAML 参数已加载截图保存实验结果五、实验步骤总结创建launch目录并进入mkdir launchcd launch创建并编辑 Launch 文件。加载 YAML 参数文件如果需要。启动节点并观察运行情况。验证参数服务器参数。记录实验结果与截图。实验四参数服务器读取Python脚本参数第七天——任务4参数服务器读取Python脚本参数1.编写脚本background.py#!/usr/bin/env python3 import rospy if __name__ __main__: rospy.init_node(hehe) # 设置全局命名空间下的 turtlesim 背景色RGB 均为 255即白色 rospy.set_param(/turtlesim/background_r, 255) rospy.set_param(/turtlesim/background_g, 255) rospy.set_param(/turtlesim/background_b, 255) # 设置当前节点命名空间下的背景色需配合 __ns 参数运行 rospy.set_param(background_r, 255) rospy.set_param(background_g, 255) rospy.set_param(background_b, 255)2.编译运行roscorerosrun my_pkg name.pyrosparame get /background_rrosparame get /turtlesim/background_r
第七天 ROS《 参数服务器与Launch文件》
一、实验目的理解ROS参数服务器Parameter Server的作用及工作机制。掌握rosparam命令的基本操作方法。学会使用YAML文件管理系统配置参数。掌握Launch文件的编写与使用方法。能够通过Launch文件实现ROS系统的一键启动。二、实验环境操作系统Ubuntu 20.04ROS版本ROS Noetic编程语言Python 3工具终端Terminal功能包turtlesim三、实验原理参数服务器用于存储系统运行参数节点可以动态读取和修改这些参数实现配置与运行的分离。YAML文件用于集中管理系统配置参数便于复用和版本控制。Launch文件允许同时启动多个ROS节点、加载参数文件和设置运行环境实现系统一键化启动提高实验和开发效率。四、实验内容实验一参数服务器基本操作第七天——任务1参数服务器基本操作ROS参数操作命令表格命令功能描述使用示例rosparam set设置参数值rosparam set /param_name valuerosparam get获取参数值rosparam get /param_namerosparam load从YAML文件加载参数到ROS参数服务器rosparam load params.yamlrosparam dump将当前参数服务器的参数导出到YAML文件rosparam dump params.yamlrosparam delete删除指定参数rosparam delete /param_namerosparam list列出所有参数名rosparam list先打开roscorerosparam set name huluwa rosparam get name rosparam delete name #将参数写出到外部文件 rosparam dump yyy.yaml rosparam load(先准备 yaml 文件) #从外部文件加载参数 rosparam load xxx.yaml实验二使用YAML文件管理ROS参数第七天——任务2使用YAML文件管理ROS参数一、实验目的理解YAML文件的作用和应用场景。掌握YAML文件的基本语法规则。学会使用YAML文件批量配置ROS参数。掌握通过rosparam load命令加载参数的方法。能够通过参数服务器读取并验证配置结果。理解配置文件与程序代码分离的开发思想。二、实验背景在实际机器人项目开发中系统通常包含大量配置参数例如机器人名称最大运行速度激光雷达安装位置摄像头分辨率PID控制器参数地图文件路径如果这些参数直接写在程序代码中robot_name Robot01max_speed 1.5camera_width 640camera_height 480当参数发生变化时需要修改代码并重新运行程序。为了提高系统的可维护性ROS提供了参数服务器(Parameter Server)而YAML文件则用于统一管理这些参数。开发人员只需要修改配置文件无需修改程序代码。因此YAML 参数配置文件Parameter Server 参数存储中心三、认识YAML文件1. YAML是什么YAMLYAML Aint Markup Language是一种专门用于数据配置的文本格式。特点可读性强结构清晰编写简单支持层级关系广泛应用于ROS系统文件扩展名.yaml或者.yml2. YAML基本语法1键值对格式name: ZhangSanage: 20score: 95含义参数名参数值nameZhangSanage20score952层级结构格式student:name: ZhangSanage: 20score: 95注意子级内容必须缩进。推荐使用2个空格或4个空格不要使用Tab键。对应关系student├─ name├─ age└─ score3列表数据格式courses:- ROS- Linux- Python等价于courses[0] ROScourses[1] Linuxcourses[2] Python4布尔值enable_camera: trueenable_lidar: false5浮点数max_speed: 1.5wheel_radius: 0.08四、创建YAML配置文件步骤1创建配置目录#进入工作空间 cd ~/catkin_ws/src/my_pkg #创建配置目录 mkdir config #查看目录 my_pkg ├── launch ├── scripts ├── src └── config步骤2创建student.yaml文件#进入配置目录 cd config #创建文件 gedit student.yaml #输入以下内容 student: name: ZhangSan age: 20 score: 95 #保存退出。步骤3检查YAML格式#正确格式 student: name: ZhangSan age: 20 score: 95 #错误格式 student: name: ZhangSan age: 20 score: 95 #原因没有缩进。 #错误格式 student: name: ZhangSan #原因使用了Tab键。YAML要求使用空格缩进。五、加载YAML参数到参数服务器步骤1启动ROS Master打开终端 roscore 启动成功后保持窗口运行。步骤2加载配置文件新开终端 rosparam load student.yaml 执行成功后不会显示明显提示。步骤3查看全部参数rosparam list 输出示例 /student/age /student/name /student/score 说明参数已经进入参数服务器。六、读取参数读取姓名 rosparam get /student/name 结果 ZhangSan 读取年龄 rosparam get /student/age 结果 20 读取成绩 rosparam get /student/score 结果 95 查看整个节点参数 rosparam get /student 结果 age: 20 name: ZhangSan score: 95七、修改配置文件并重新加载修改文件student:name: LiSiage: 22score: 88重新加载rosparam load student.yaml查询rosparam get /student/name结果LiSi说明参数已更新。八、机器人配置实例实际机器人项目中的配置文件通常如下robot:name: smart_robotmax_speed: 1.5wheel_radius: 0.08camera:width: 640height: 480fps: 30lidar:range: 10frequency: 15加载后rosparam list可看到/robot/name/robot/max_speed/robot/wheel_radius/camera/width/camera/height/camera/fps/lidar/range/lidar/frequency这就是大型ROS项目中常见的配置管理方式。实验三使用Launch文件启动ROS系统第七天——任务3使用 Launch 文件启动 ROS 系统一、实验目的理解 Launch 文件的作用和优势。掌握 Launch 文件的基本语法和结构。学会通过 Launch 文件启动单个节点和多个节点。掌握在 Launch 文件中加载参数文件YAML。理解节点命名、重映射话题、传递参数的方法。能够使用 Launch 文件实现系统一键启动提高开发效率。二、实验背景在 ROS 系统开发中如果每次都用rosrun单独启动节点会有以下问题多个节点需要多个终端窗口。参数加载和节点启动需要多条命令。系统启动容易出错调试困难。Launch 文件的优势可以一次性启动多个节点。可以加载 YAML 参数文件。可以设置节点命名和话题重映射。总结Launch 文件 ROS 系统启动脚本 参数加载器三、认识Launch文件1.文件格式扩展名.launch文件类型XML2.基本结构launch node pkgpackage_name typenode_executable namenode_name/ /launch说明标签属性说明launch无根标签包含所有启动内容nodepkg节点所在包名type节点可执行文件名name启动节点时使用的名称output日志输出方式可选四、实验内容实验4.1启动单个节点1.创建 launch 文件launch/start_turtle.launchlaunch node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ /launch 说明 pkgturtlesim 指定功能包。 typeturtlesim_node 指定节点执行文件。 nameturtle1 为节点自定义名称。 outputscreen 输出日志到终端。2.运行roslaunch my_pkg start_turtle.launch 注意这里用的命令是roslaunch3.观察弹出 turtlesim 窗口终端显示节点启动日志实验4.2启动多个节点1.创建 launch 文件launch/multi_turtle.launchlaunch node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ node pkgturtlesim typeturtlesim_node nameturtle2 outputscreen/ /launch2.运行roslaunch my_pkg multi_turtle.launch3.观察出现两个 turtlesim 窗口两个节点可以独立运行实验4.3加载YAML参数文件1.假设已经创建配置文件config/student.yamlstudent: name: ZhangSan age: 20 score: 952.创建 launch 文件launch/start_with_param.launchlaunch !-- 加载参数文件 -- rosparam file$(find my_pkg)/config/student.yaml commandload/ !-- 启动节点 -- node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ /launch 说明 $(find my_pkg)自动查找工作空间中包路径 rosparam 标签加载 YAML 参数到参数服务器 节点可以通过参数服务器获取配置参数3.运行roslaunch my_pkg start_with_param.launch4.验证参数rosparam get /student/name rosparam get /student/age rosparam get /student/score实验4.4节点话题重映射有时需要同一个节点发布到不同话题或订阅不同话题。1.创建 launch 文件launch/remap.launchlaunch node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen remap fromturtle1/cmd_vel toturtle1/cmd_vel_custom/ /node /launch2.运行roslaunch my_pkg remap.launch 说明 原话题 turtle1/cmd_vel 被重映射为 turtle1/cmd_vel_custom 可以同时运行多个节点而不冲突实验4.5组合启动综合实验1.创建 Launch 文件launch/full_system.launchlaunch !-- 加载学生信息参数 -- rosparam file$(find my_pkg)/config/student.yaml commandload/ !-- 启动两个turtlesim节点 -- node pkgturtlesim typeturtlesim_node nameturtle1 outputscreen/ node pkgturtlesim typeturtlesim_node nameturtle2 outputscreen remap fromturtle1/cmd_vel toturtle2/cmd_vel/ /node /launch2.运行roslaunch my_pkg full_system.launch3.任务观察两个 turtlesim 节点运行使用rosparam get验证 YAML 参数已加载截图保存实验结果五、实验步骤总结创建launch目录并进入mkdir launchcd launch创建并编辑 Launch 文件。加载 YAML 参数文件如果需要。启动节点并观察运行情况。验证参数服务器参数。记录实验结果与截图。实验四参数服务器读取Python脚本参数第七天——任务4参数服务器读取Python脚本参数1.编写脚本background.py#!/usr/bin/env python3 import rospy if __name__ __main__: rospy.init_node(hehe) # 设置全局命名空间下的 turtlesim 背景色RGB 均为 255即白色 rospy.set_param(/turtlesim/background_r, 255) rospy.set_param(/turtlesim/background_g, 255) rospy.set_param(/turtlesim/background_b, 255) # 设置当前节点命名空间下的背景色需配合 __ns 参数运行 rospy.set_param(background_r, 255) rospy.set_param(background_g, 255) rospy.set_param(background_b, 255)2.编译运行roscorerosrun my_pkg name.pyrosparame get /background_rrosparame get /turtlesim/background_r