Mr_matcher的细节2
1.参数服务器
ROS参数服务器能保存数据类型包括:strings, integers, floats, booleans, lists, dictionaries, iso8601 dates, and base64-encoded data。Dictionaries则必需有字符串key值。
roscpp参数API能支持全部类型,多数情况容易使用的类型有:strings, integers, floats and booleans,使用其他类型参考XmlRpc::XmlRpcValue class
roscpp有两个版本的API接口:bare版和handle版。
bare版:在 ros::param 命令空间下。
handle版:通过ros::NodeHandle接口使用。
2.获取参数
从参数服务器获取值,每个版本都支持strings, integers, doubles, booleans 和XmlRpc::XmlRpcValue
返回 false代表参数不存在或不是正确的类型。
1)NodeHandle版本
ros::NodeHandle::getParam()
NodeHandle版本:参数相对于NodeHandle的命名空间进行解析。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ros::NodeHandle nh; std::string global_name, relative_name, default_param; if (nh.getParam( "/global_name" , global_name)) { ... } if (nh.getParam( "relative_name" , relative_name)) { ... } // Default value version nh.param<std::string>( "default_param" , default_param, "default_value" ); |
3.设置参数
1 2 3 4 5 6 | NodeHandle版本<br>ros::NodeHandle::setParam() NodeHandle版本:参数相对于NodeHandle的命名空间进行解析 ros::NodeHandle nh; nh.setParam( "/global_param" , 5); nh.setParam( "relative_param" , "my_string" ); nh.setParam( "bool_param" , false ); |
4.检查参数是否存在
handle版:ros::NodeHandle::hasParam() ros::NodeHandle nh; if (nh.hasParam("my_param")) { ... }
5.删除参数
1 2 3 | handle版:ros::NodeHandle::deleteParam() ros::NodeHandle nh; nh.deleteParam( "my_param" );<br> |
6.访问私有参数
1 2 3 4 | handle版:创建的ros::NodeHandle实例,并提供私有的命名空间作为其命名空间 ros::NodeHandle nh( "~" ); std::string param; nh.getParam( "private_name" , param); |
参考http://www.ncnynl.com/archives/201702/1295.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】