ros 编程习惯
1.设置ros的info,warning,debug,error等编写的时候要思考,何时该使用,以及在开头要使用设置rosconsole的级别来对应输出,以方便调试。
2.在使用ros_info等的时候要把该节点的名称或者该类的名称也加上去,以方便排查错误源等,ROS_INFO("[节点名 %s]", e.what());
3.使用ros::NodeHandle nh("~"); 的形式,以及服务server名字均在全局命名空间下。

1、句柄可以让你通过构造函数指定命名空间 ros::NodeHandle nh("my_namespace"); 这使得使用该句柄的任何相对名字都是相对<node_namespace>/my_namespace,而不是只相对<node_namespace> 你也可以指定一个父句柄和追加的命名空间 ros::NodeHandle nh1("ns1"); ros::NodeHandle nh2(nh1,"ns2"); 这将把nh2放入到<node_namespace>/ns1/ns2命名空间 2、也可以指定全局名字 ros::NodeHandle nh("/my_global_namespace"); 这种做法并不推荐,因为这样会使得节点无法被放入别的命名空间。只是有时在代码中使用全局名字有用。 3、私有名字 使用私有名字比直接调用有私有名的句柄方法更有技巧,你可以在一个私有命名空间中直接创建一个新的句柄。 ros::NodeHandle nh("~my_private_namespace"); ros::Subscriber sub = nh.subscribe("my_private_topic",....); 以上例子会订阅<node_name>/my_private_namespace/my_private_topic 注意:理解的重点上文中红色标注的部分,node_namespace和node_name是两回事! node_name = node_namespace + nodename 补充demo // launch 文件中 ns=="node_namespace" ros::init(argc, argv, "node_name"); // node name ros::NodeHandle n; //n 命名空间为/node_namespace ros::NodeHandle n1("sub"); // n1命名空间为/node_namespace/sub ros::NodeHandle n2(n1,"sub2");// n2命名空间为/node_namespace/sub/sub2 ros::NodeHandle pn1("~"); //pn1 命名空间为/node_namespace/node_name ros::NodeHandle pn2("~sub"); //pn2 命名空间为/node_namespace/node_name/sub ros::NodeHandle pn3("~/sub"); //pn3 命名空间为/node_namespace/node_name/sub ros::NodeHandle gn("/global"); // gn 命名空间为/global
4.backward-cpp调试代码。
5.在使用参数服务器 param等的时候以及和对应的launch文件一起结合使用。
6.launch文件里面的output输出指定到对应的log文件,以及launch文件里面的节点node可以指定使用的内核的名字。
7.消息和服务写在一个包里面,便于管理。
【推荐】国内首个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】
2017-11-29 魔术师表演节目,她将红桃和黑桃全部叠在一起,牌面朝下放在手中,对观众说:
2017-11-29 编写一个函数getbits,从一个16位的单元中取出某几位(即该几位保留原值,其余位为0).函数调用形式为:getbits(value,n1,n2),value为该16位数的值,n1为欲取出的起始位,n2为欲取出的结束位。
2017-11-29 用指向指针的指针的方法对10个字符串排序并输出
2017-11-29 设ha与hb分别是两个非递减有序单链表的表头结点指针,设计一个算法,将这个两个有序链表合成一个非递增有序的单链表,要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复数据。
2016-11-29 阶段4-独挡一面\项目-基于视频压缩的实时监控系统\Sprint3-采集端传输子系统设计
2016-11-29 实习杂项