树莓派 ROS 段错误

问题现象:control node(订阅串口node的消息)开启后,再开串口读写的node,control node就会报错“段错误”然后死掉。

网上大概搜了一下,大多说是指针指向或者内存方面的原因。


用rostopic pub工具手动给control node发送topic,进行调试

中途在control node程序中加入调试信息打印输出语句后,重新编译,又提示一堆 时钟不一致的warning ,但最后编译也显示到100%。

然而重新编译完之后,运行control node,并没有该有的打印信息,而且编译过程也没出现绿色的打印信息(一般编译一个改动过的源文件会出现这个),感觉是没编译产生新的可执行文件,还是运行的旧的可执行文件。 也就是时钟不一致warning,导致重新编译没起作用。

然后进入catkin_ws,执行 find ./ -type f |xargs touch

之后再重新编译,编译控制台出现了绿色调试信息打印,再运行程序,就都好了。


时钟不一致,估计是树莓派直接断电而不是执行关机操作导致的。

查了一下,linux系统一般有real-time clock (RTC)硬件时钟,和系统时钟两个。然而树莓派设计的时候好像没有放硬件时钟。  

Real-time clock( Wikipedia)  

一个独立的硬件(芯片),一般用纽扣电池或超级电容供电

时钟不一致为什么会导致编译不生效,又导致节点运行 段错误?

偶然因为“树莓派直接断电导致数据记录文件未保存”的问题,看到下面这个,是否存在一定关系呢

Linux 读写文件时,异常断电或程序异常中止导致文件出错、损坏

程序运行过程中,有读写配置文件保存当前位置信息的操作。在程序运行过程中突然断电,或者异常终止程序,就会出现配置文件内容出错(内容清空)或者文件直接损坏而无法打开的情况。文件损坏时,可能报出segmentation fault的错误,以致程序没法正常运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值