ROS实时采集Android的图像和IMU数据
前言
临近毕业,整理一下之前做的东西。这篇博客来自于博主在2016年3月份投的一篇会议论文(论文主要介绍了一个基于手机摄像头和IMU的简单VIO系统,用于AR的Tracking部分,本博文是其中的数据采集部分)。
本文的目的是将pc和手机连于同一局域网下,然后手机实时把相机和imu的数据打包成ros的消息格式,pc订阅这些消息,进行进一步的处理。
稍微好的安卓手机都会配备IMU(注意:很多手机只有单纯的三轴加速度计,并没有三轴的陀螺仪)。博主用的是华为荣耀7,配备了LSM330的6轴IMU。
个人理解错误的地方还请不吝赐教,转载请标明出处,内容如有改动更新,请看原博:http://www.cnblogs.com/hitcm/
如有任何问题,feel free to contact me at robotsming@gmail.com
安装使用
编译好的安装包已经放到博主的git上,欢迎下载使用,商业合作请联系博主。
安装里面的apk:
git clone https://github.com/hitcm/Android_Camera-IMU.git
为了后面的显示,还需要执行sudo apt-get install ros-indigo-imu-tools
1.首先保证pc和安卓手机置于同一局域网下,然后开启ROS系统的roscore,打开安卓上的应用,在IP Port中修改ip地址为pc的ip地址,port不需要修改。
2.修改完毕后点击Connect,则连接成功,进入相机界面。
3.在pc上执行rostopic list,可以看到相机数据和imu数据的名字如下,前三个topic即是。

4.执行命令cd到上面下载git的本地目录下,执行上述git提供的launch文件,roslaunch android_cam-imu.launch
使用的效果如下:

欢迎拍砖
1.本应用不是很稳定,因为博主安卓编程功底差,不过在华为荣耀7和小米2s中测试基本正常。
2.实时测试中,相机可以到接近30fps,imu只有50+Hz,应该是受imu硬件的限制。欢迎对Andorid系统硬件熟悉的朋友赐教,如何解决传感器同步的问题?
ROS实时采集Android的图像和IMU数据的更多相关文章
- vs联合halcon——采集图像(实时采集与单次采集)
摘要 在对vs进行环境配置好以后,就可以开始与halcon联合进行实战.本篇就对图像的采集进行总结.通过构建采集相机GrabImage类的三个方法实现图像的采集: open() 打开相机 grabim ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程
基于Python结合InfluxDB及Grafana图表实时监控Android系统和应用进程 By: 授客 QQ:1033553122 1. 测试环境 2. 实现功能 3. 使用前提 4. ...
- DirectSound播放PCM(可播放实时采集的音频数据)
前言 该篇整理的原始来源为http://blog.csdn.net/leixiaohua1020/article/details/40540147.非常感谢该博主的无私奉献,写了不少关于不同多媒体库的 ...
- 用ADB(Android Debug Bridge)实时监测Android程序的运行
监控Android设备上程序的运行,需要ADB的配合,具体ADB工具的介绍以及命令选项可见博客: http://blog.csdn.net/mliubing2532/article/details ...
- 采用Flume实时采集和处理数据
它已成功安装Flume在...的基础上.本文将总结使用Flume实时采集和处理数据,详细过程,如下面: 第一步,在$FLUME_HOME/conf文件夹下,编写Flume的配置文件,命名为flume_ ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据
基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据 by:授客 QQ:1033553122 实现功能 测试环境 环境搭建 使用前提 使用方法 运行程序 效果展 ...
- 性能测试 基于Python结合InfluxDB及Grafana图表实时采集Linux多主机或Docker容器性能数据
基于Python结合InfluxDB及Grafana图表实时采集Linux多主机性能数据 by:授客 QQ:1033553122 实现功能 1 测试环境 1 环境搭建 3 使用前提 3 使用方法 ...
- 从ROS bag文件中提取图像
从ROS bag文件中提取图像 创建launch文件,如下: export.launch <launch> <node pkg="rosbag" type=&qu ...
- Openresty+Lua+Kafka实现日志实时采集
简介 在很多数据采集场景下,Flume作为一个高性能采集日志的工具,相信大家都知道它.许多人想起Flume这个组件能联想到的大多数都是Flume跟Kafka相结合进行日志的采集,这种方案有很多他的优点 ...
随机推荐
- ajax通讯之格式详解
前言: ajax的出现,一定程度上改变了js的命运,同时也被广泛使用,而jq的兴起也大大降低了ajax的使用难度.虽然,jq的ajax方法使用起来十分便利,但是大部分开发人员也仅仅只是对其中的几个属性 ...
- java文件名更改一直是false,看看是否是文件打开没有关
// 更改文件名称 public static void chenckFileName(String oldFile, String newFileName) { File file = new Fi ...
- JS不支持正则中的负向零宽断言
今天在项目中用到了正则表达式,并且需要用负向零宽断言 (?<=exp) 进行筛选,结果运行时报 Invalid group 错,一开始以为是自己很久没用表达式写错了,查阅了一下正则语法后发现并没 ...
- Python学习一(面向对象和函数式编程)
学习了一周的Python,虽然一本书还没看完但是也收获颇多,作为一个老码农竟然想起了曾经荒废好久的园子,写点东西当做是学习笔记吧 对Python的语法看的七七八八了,比较让我关注的还是他编程的思想,那 ...
- VS2013配置WTL91_5321_Final
网上关于WTL的文章,尤其是中文的文章不多,根据收集的资料整理出了VS2013安装WTL的方法. .下载.文件很小的,地址:http://sourceforge.net/projects/wtl/fi ...
- js中的三元运算符
<script type="text/javascript"> var b=5; (b == 5) ? a="true" : a="fal ...
- git乱码问题解决
etc\gitconfig文件中增加以下内容: [gui] encoding = utf-8 [i18n] commitencoding = gbk [svn] pathnam ...
- 小知识:Python函数传递变长
先来实践一把: def f1(*args): print(args) f1(1,2,3,4) 得出:(1, 2, 3, 4) ----- 是一个元祖 Part 1: *args可以传递任意多的数,ar ...
- phoenix将hdfs数据导入hbase
http://phoenix.apache.org/bulk_dataload.html
- DUBBO参数验证
public class ValidationParameter implements Serializable { private static final long seria ...