CodeBlocks及LCM应用
以下是在开发过程中遇到的一些细节点:
1)called after throwing an instance of std::bad_alloc
此问题是由于publish(data),当中data赋值的问题导致的。
2)在用GDB调试CodeBlocks的时候,遇到权限不允许的情况。
warning: GDB: Failed to set controlling terminal: Operation not permitted
此问题需要通过设置来解决:
参考资料: http://blog.csdn.net/ct2917282881/article/details/7447527
3)调试过程中codeblocks如何查看变量的值
参考资料: http://wiki.codeblocks.org/index.php?title=Debugging_with_Code::Blocks
我们需要打开debug windows 下面的 watch 对话框才可以。
4)如何设计局域网内LCM通信
对于LCM来说,其实就是一个基于UDP组播的一个实例而已,并不是什么新的东西。当我们有两台主机的时候,我们需要约定一个
多播的地址,只有地址约定好了以后就可以进行通信了。
5)当有多个subcribe的时候,如何保证数据是线程安全的。
首先在ROS里面,各个订阅的MSG都是线程安全的。
但是在LCM里面,文档当中没有提及到,所以,我们暂且认为是线程非安全的,此时需要加入互斥变量来保证线程安全。
当然,这里也可以引用其他技术来实现。