2026.8.05-初入ros+slam+opencv第十天-学习param接口
一.通过独立 demo 吃透所有核心 API再迁移到项目中1.目录结构2.param_test.cpp#includeros/ros.hintmain(intargc,char**argv){ros::init(argc,argv,param_test_node);ros::NodeHandle nh;// 1. 向参数服务器写入参数 setParamnh.setParam(robot_name,patrol_bot_01);nh.setParam(max_speed,0.5);nh.setParam(patrol_mode,true);ROS_INFO(参数写入完成);// 2. 读取参数 getParam读取失败返回false不改变变量值std::string name;doublespeed;boolmode;if(nh.getParam(robot_name,name))ROS_INFO(读取机器人名称%s,name.c_str());elseROS_WARN(未找到参数 robot_name);if(nh.getParam(max_speed,speed))ROS_INFO(读取最大速度%.2f m/s,speed);// 3. param() 读取参数读取失败直接用默认值赋值最常用intpoint_numnh.param(patrol_point_num,3);ROS_INFO(巡逻点数量%d,point_num);// 4. 检查参数是否存在 hasParamif(nh.hasParam(battery_level))ROS_INFO(电池电量参数存在);elseROS_WARN(电池电量参数不存在使用默认值);// 5. 删除参数 deleteParamnh.deleteParam(patrol_mode);ROS_INFO(已删除参数 patrol_mode);ros::spinOnce();return0;}3.注意点1.ros::init(argc,argv,“param_test_node”)初始化节点 向roscore注册param_test_node节点2.setParam()写入参数// 1. 向参数服务器写入参数 setParamnh.setParam(robot_name,patrol_bot_01);nh.setParam(max_speed,0.5);nh.setParam(patrol_mode,true);ROS_INFO(参数写入完成);nh.setParam(“参数名”,值 )作用往参数服务器存一对【键值对】参数可以是字符串、小数、整数、布尔如果这个参数本来不存在直接新建如果已经存在直接覆盖旧值。终端执行 rosparam list 就能看到这三个参数。3.getParam () 读取参数有返回值判断读取失败不会修改变量bool getParam(“参数名”, 接收变量)// 2. 读取参数 getParam读取失败返回false不改变变量值std::string name;doublespeed;boolmode;if(nh.getParam(robot_name,name))ROS_INFO(读取机器人名称%s,name.c_str());elseROS_WARN(未找到参数 robot_name);返回值读到参数返回 true找不到参数返回 false重点读取失败的时候name变量里面的值不会被修改保留原来垃圾值。适合场景必须要读到这个参数读不到节点要告警。4.param () 带默认值读取 有这个参数就直接读取 没有直接赋值默认值nh.param(“参数名”, 默认值)// 3. param() 读取参数读取失败直接用默认值赋值最常用intpoint_numnh.param(patrol_point_num,3);ROS_INFO(巡逻点数量%d,point_num);逻辑如果参数服务器存在patrol_point_num → 读出真实值给point_num如果参数不存在 → 直接把 3 赋值给 point_num不会报错本代码里我们没有 set 这个参数所以这里输出一定是 3。实际项目大量用这个参数 hasParam () 判断参数是否存在可以 launch 文件配置不配置就安全走默认程序不会崩。5. hasParam () 判断参数是否存在// 4. 检查参数是否存在 hasParamif(nh.hasParam(battery_level))ROS_INFO(电池电量参数存在);elseROS_WARN(电池电量参数不存在使用默认值);bool hasParam(“参数名”)返回 true参数服务器里面有这个参数返回 false没有这个参数这里代码没有设置battery_level所以会打印警告。一般搭配getParam使用先判断有没有再读取。6.deleteParam () 删除参数// 5. 删除参数 deleteParamnh.deleteParam(patrol_mode);ROS_INFO(已删除参数 patrol_mode);直接把参数服务器上patrol_mode删掉。执行完之后 rosparam get /patrol_mode 就找不到该参数。7.5 个 API 记忆口诀setParam写参数没有就新建有就覆盖getParam读参数返回真假失败变量不变param读参数读不到就给默认值项目首选hasParam单纯判断参数有没有deleteParam删掉参数服务器的参数重要坑点参数服务器在 roscoreroscore 一关全部参数灰飞烟灭不会保存到磁盘节点退出自己 setParam 写进去的参数还在只要 roscore 不关闭变量类型必须匹配存 double不能读到 int会出错。

相关新闻

基于C++与OpenCV的扑克牌识别系统:从图像处理到模式识别实战

基于C++与OpenCV的扑克牌识别系统:从图像处理到模式识别实战

1. 项目概述:从“空心接龙”到通用识别几年前,我接手了一个项目,客户的需求听起来很简单:“做一个能自动识别电脑上‘空心接龙’游戏里扑克牌的程序。” 当时市面上的一些截图工具和简单的颜色匹配方案,在遇到游戏背景…

2026/8/7 7:34:52 阅读更多 →
“本周 GitHub 热门项目,哪些值得学?”

“本周 GitHub 热门项目,哪些值得学?”

本期热点趋势总结 本期 GitHub 热榜聚焦 AI Agent 工程化与开发者效率升级:代码审查图谱、 CLI / IDE 编排、 多模型路由与 token 压缩成为核心热点,配套的 Skills、 Claude Skills 和教程仓库说明“可复现、可落地”的 Agent 工作流正快速标准化。与此同…

2026/8/6 5:17:10 阅读更多 →
大模型接入(3)-计算岗位匹配度与调用外部工具

大模型接入(3)-计算岗位匹配度与调用外部工具

计算岗位匹配度job_router.get("/resume_submission_detail/{id}", summary"简历投递详情") async def resume_submission_detail(id:int):resawait JobService.resume_submission_detail(id)return {"code": 1,"message": "查询…

2026/8/6 5:17:10 阅读更多 →

最新新闻

Unity游戏本地化实战:XUnity.AutoTranslator插件全流程指南

Unity游戏本地化实战:XUnity.AutoTranslator插件全流程指南

1. 项目概述:为什么游戏本地化是独立开发者的必修课?如果你是一名独立游戏开发者,或者是一个小型工作室的成员,当你的游戏在Steam、itch.io或移动端商店获得第一个海外玩家的好评时,那种兴奋感是无与伦比的。但紧接着&…

2026/8/7 8:02:36 阅读更多 →
STM32G431多通道ADC电压采集:DMA方式实现与优化

STM32G431多通道ADC电压采集:DMA方式实现与优化

1. 项目缘起:为什么是STM32G431与DMA方式的ADC?在嵌入式开发里,采集模拟信号是再基础不过的操作。但就是这个基础操作,选型和方法的不同,带来的开发体验和最终性能天差地别。我最近在一个需要同时监控多路传感器电压的…

2026/8/7 8:02:36 阅读更多 →
Unity中文路径导致插件导入失败:高精地图绘制避坑指南

Unity中文路径导致插件导入失败:高精地图绘制避坑指南

1. 项目概述:当Unity遇上中文路径,一个看似简单的“坑”如何让高精地图绘制前功尽弃如果你正在为自动驾驶项目折腾Autoware的高精地图,并且选择了Unity配合MapToolBox插件这条技术路线,那么恭喜你,你已经踏入了自动驾驶…

2026/8/7 8:02:36 阅读更多 →
基于@Tool与MCP协议构建企业级AI Agent工具体系

基于@Tool与MCP协议构建企业级AI Agent工具体系

1. 项目概述:为什么我们需要一个企业级的Agent工具体系?最近和几个技术团队负责人聊天,大家不约而同地提到了同一个痛点:AI Agent(智能体)的概念很火,团队也尝试用LangChain、AutoGPT之类的框架…

2026/8/7 8:02:36 阅读更多 →
实习日记一:打包程序,自己安装MySQL+彻底卸载MySQL

实习日记一:打包程序,自己安装MySQL+彻底卸载MySQL

一、概述mysql 数据库 常用版本 5.6、5.7、8.0检查电脑的 mysql 环境 ------------ 看服务列表里的 mysql 服务能不能正常启动安装方式:2 种 1.傻瓜式安装:点下一步的形式 2.打包程序,全程自己完成字符编码:utf8、GBK、ISO‑8859‑…

2026/8/7 8:02:36 阅读更多 →
【RK3568 linux-6.6内核ttyS9只能收不能发送问题】

【RK3568 linux-6.6内核ttyS9只能收不能发送问题】

矿鸿1.3版本,rk3568使用linux-6.6内核驱动 1.问题描述 板卡启动成功,ttyS7正常收发,ttyS9只能收不能发送。 2.问题分析 2.1对比设备树uart7和uart9配置一致 //rs232-7 &uart7 {status "okay";pinctrl-names "default&qu…

2026/8/7 8:01:36 阅读更多 →

日新闻

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南

为什么scrcpy成为Android投屏的终极解决方案:完整实战指南 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 想要将Android手机屏幕完美投射到电脑上,享受大屏操作的自…

2026/8/7 0:00:19 阅读更多 →
如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南

如何在5分钟内掌握Tom Select:打造现代化表单选择器的终极指南 【免费下载链接】tom-select Tom Select is a lightweight (~16kb gzipped) hybrid of a textbox and select box. Forked from selectize.js to provide a framework agnostic autocomplete widget wi…

2026/8/7 0:00:19 阅读更多 →
5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件

5分钟快速上手:NSZ压缩工具终极指南,轻松管理Switch游戏文件 【免费下载链接】nsz NSZ - Homebrew compatible NSP/XCI compressor/decompressor 项目地址: https://gitcode.com/gh_mirrors/ns/nsz 你是否在为Nintendo Switch游戏文件占用大量存储…

2026/8/7 0:00:19 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/6 22:02:27 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/6 22:02:27 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/6 22:02:27 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/6 22:02:28 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →