树莓派+ROS+WT931
树莓派——ROS+WT931获取IMU和磁场数据
由于论文实验需要,需要以无人机为载体,使用ROS,再通过传感器获取环境中的磁场信息,并订阅之。最早是以 链接: 维特WT931——制作支持ROS的IMU惯性导航传感器.河大吴同学写的博客为参考。虽然陆续遇到了一些问题,但是对于刚接触ROS不久的我来说受益匪浅。
一、尝试在我的笔记本里试验
我装的双系统Ubuntu18.04,过程基本如以上链接中提到的。不过在安装新驱动前,记得先查看自己操作系统版本。
// 终端输入
uname -r;
再到指定的目录下增删相关.ko文件。
谈谈我遇到的问题,我在全部安装完成后,在启动launch文件和rostopic后,imu和磁场的各项数据始终不变化。
按理来说,这些数值会在不断发布的过程中跳动变化。捣鼓了几天,排除了代码和硬件问题后,初步确认可能是驱动安装出错了。
于是决定重新再装一次。
// 卸载驱动
sudo rmmod xxx
再走一遍以上流程,关键记得要用dmesg 查看系统日志信息。如下链接提到的一样:
链接: CH340 Linux驱动使用教程.
再之后发现数据有了变化。不过传感器设置的回传速率要设置得比wt931的cpp文件中写的循环频率rate高,这样数据响应会很灵敏。
二、开始在树莓派上实验
树莓派用的是Ubuntu mate 16.04。解压驱动包后,输入指令make,报错树莓派 /lib/modules/*/ 没有build文件夹,查看过后发现,他只有kernel文件夹,确实没有build文件夹。于是按照
链接: 解决树莓派 /lib/modules/*/ 没有build文件夹 安装linux_headers.中提到的方式,安装了linux_headers,随后make就能成功了。
ps.虽然一开始遇到了各种如:
insmod: ERROR: could not insert module ch34x.ko: Invalid module format
或者make过后出现
Makefile:xxx: recipe for target ‘default’ failed的错误。
也全都是我一开始没有解决好build文件夹的缘故。
当然这也只是我遇到的问题。
我个人感觉学会看日志文件是很重要的,不能一出错就复制问题到网上“对号入座”,可能大家的问题表面相似,实则细节和操作各有不同。而且我觉得使用英文版系统也是相当有意义的,将来遇到问题更容易找出错误,而且在国外论坛交流的时候也来得简单。
后续
准备利用无人机遍历目标环境,采集磁场数据进行建模。有问题还会来分享的。