1. 命名空间的问题
ros::NodeHandle n("~");
// 与
ros::NodeHandle n;
加了 '~'的,默认在其发布的话题名前面加上: /节点名
2. rostopic
2.1 查看topic的发布方和订阅方
rostopic info 消息名
也可以用rqt_graph查看
2.1 查看消息被订阅了几次
rostopic list -v
参考:
3. ros订阅subscribe的深入理解
subscribe的原型如下:
template<class M> Subscriber subscribe(const std::string& topic, uint32_t queue_size, void(*fp)(const boost::shared_ptr<M const>&), const TransportHints& transport_hints = TransportHints()) { SubscribeOptions ops; ops.template init<M>(topic, queue_size, fp); ops.transport_hints = transport_hints; return subscribe(ops); }
最后一个参数:
const TransportHints& transport_hints = TransportHints()
const &代表常量引用,这里代表选择通信方式,ROS提供了五种通信方式:tcp,reliable,unreliable,udp,tcpNoDelay,具体的调用方式书写以及哪一种通信延迟最小,参考文献[2]
[2]这篇很重要。
参考: