维特WT931——制作支持ROS的IMU惯性导航传感器
本来自己想玩一个ros小车进行slam建图和导航,结果发现由于地形原因,导致建图不稳定。这是因为在某些情况下,机器人可能出现轮子在动,本体却不动的打滑现象,所以使用imu进行融合就有一定的必要,融合包可以见这个博客链接: https://blog.csdn.net/shenghuaijing3314/article/details/78220151。
那么再购买一款支持ros的imu就可以了。但是,支持ros的imu一般性价比不高,所以我等穷学生就不能采用这种方案。所以,本人就采用了新的方案,购买一款高性价比的imu,然后经过自己的改造就能够融合到ros操作系统里面。
由于代码本身比较多,所以,不在这里详细说明我的实践方法,只说我的包怎么使用。首先,你需要一款wt931以及配套的usb小板。然后下载下面链接的源码。
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fd5017dfc2b1060f663e87b0c1b0883a.jpeg)
wt931-ROS源码包
https://github.com/Xueming10wu/ROS-WT931
使用方法
1、更新ch340驱动
解压包 >> wt931 >> ch340更新驱动 >>解压>>转到解压出的文件夹中>> 在此目录下打开命令行执行make命令编译。
详情见
https://blog.csdn.net/JAZZSOLDIER/article/details/70170466
后面把生成的驱动文件放入到内核中
详情见
https://blog.csdn.net/jazzsoldier/article/details/70117912
2、加载设备规则
打开命令行,复制设备规则
~$ cd wt9331
~$ sudo cp wt931.rules /etc/udev/rules.d/
开机自动加载设备规则
打开命令行
~$ sudo usermod -aG dialout 用户名
~$ sudo service udev reload
~$ sudo service udev restart
关机重启,
~$ sudo reboot
开机后,插上wt931到usb接口上。检查一下设备规则是否被加载成功。
~$ ls /dev/wt931
如果正常将会显示
/dev/wt931
否则再检查一遍操作,或换一条usb数据线。
3、把wt931放到你的工作空间中之后
转到目录下
~$ roscd wt931/scripts //或cd wt931/scripts
~$ sudo chmod 777 main.py
4、检查运行情况
运行文件
~$ roslaunch wt931 wt931.launch
再开一个命令行终端
查看话题数据
~$ rostopic echo /imu
5、Rviz下的演示
~$ rviz
这里由于imu数据更新比较快,因此把左边的imu话题中的HistoryLength调成500,能够比较好的同时观察到500帧数据。
6、其他
这一切都是在windows下进行官方的miniIMU.exe配置之后进行的工作。为了速率,我设置 921600 为波特率,并且只选择读取 加速度、角速度、角度、欧拉角进行配置。
建议先在官方提供的miniIMU上面把设备校准到比较好的效果之后,在来实践前面5布操作。
如果,出现串口打开失败,请检查一下设备的波特率或者换一根usb线,调整过之后,一般就能够解决大部分问题。
最后也是最重要的
wt931-ROS源码包
https://github.com/Xueming10wu/ROS-WT931