ros初学者 答疑

1.      问题 -> 按照步骤自定义消息,提示未发现消息头文件?

Package.xml和CMakefile.txt文件都已经修改好,然而没有生成消息的头文件,本次出现的原因不明,解决:多次重复catkin_make。

2.      问题 -> 程序循环几个周期之后,msg出现错位?

在生成发布者和订阅者的时候,需要定义缓冲区的大小,然而数值不可随意填写,如果要求的数据同步性较高,只能填写数值1,表示实时更改msg数值。

3.      问题 -> 关于spin()和spinOnce()的作用?

二者是回调函数,主要区别是spinOnce()函数在执行完一次之后程序继续向下执行,而spin()则是程序循环执行直至收到终止信号(如ctrl+C)。在发布者和订阅者中,二者可配合使用。就效果上来讲,spin()相当与while(ros::ok()){spinOnce();}

4.      问题 -> 关于开机启动ros多个节点?

使用roslaunch启动工具,此工具可将roscore、rosnodes同时启动,将xx.launch文件添加至/etc/rc.local文件既可。

 5. 创建多线程订阅消息?

在ROS中,有两种方法可以在一个节点中开辟多个线程  1.ros::MultiThreadedSpinner  MultiThreadedSpinner类似于ros::spin(),在构造过程中可以指定它所用线程数,但如果不指定线程数或者线程数设置为0,它将在每个cpu内核开辟一个线程。  用法如下  ros::MultiThreadedSpinner spinner(4); // Use 4 threads spinner.spin(); 2.ros::AsyncSpinner  AsyncSpinner比MultiThreadedSpinner更优,它有start() 和stop() 函数,并且在销毁的时候会自动停止。 ros::AsyncSpinner spinner(4); // Use 4 threads spinner.start(); ros::waitForShutdown(); 以上代码片参考了ROS wiki  http://wiki.ros.org/roscpp/Overview/Callbacks%20and%20Spinning 


ROS详细介绍,可转链接  http://blog.csdn.net/xiaocainiaoshangxiao/article/category/1710543

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值