读这篇文档之前请确定你熟悉了ROS,了解了其工作原理以及安装好了ROS……
首先介绍下rosjava_core,它是用纯JAVA实现ROS。它提供了一个客户端库是JAVA程序可以快速的调用ROS的Topics,Services, and Parameters。
他其中一个最重要的特点就是对Android的友好性,可以在Android上进行rosjava的开发。所以我重点讲讲android_core,一个集合rosjava组件和范例的ROS开发应用。
Android_core提供了android库程序来帮助ROS应用开发。这些库程序就是android_gingerbread和android_honeycomb_mr2。
android_gingerbread库程序,它支持的最低版本为APIlevel9。它提供了最基本的RosActivity和NodeMainExecutorService(主要用来获取master和节点的管理),从而执行和管理NodeMain的生命周期,这样就可以像PC中ROS那样工作。载入eclipse以MasterChooser命名,顾名思义就是对Master进行操作,是最重要的库程序。这个库中还包含了其他支持,包括camerapublisher,image view,orientation publisher。里面有范例程序,你可以运行看看这些支持是怎么工作的。
android_honeycomb_mr2所支持的最低版本为APIlevel 13,这个库程序主要用于2D构图和导航,2D激光扫描可视化还有虚拟操作杆,在现阶段暂时用不到。
1.安装
一开始按照官网的文档安装
$ sudo apt-get install python-pip
$ sudo pip install --upgrade rosinstall
$ mkdir ~/ros_workspace
$ cd ~/ros_workspace
$ rosws init
$ rosws merge /opt/ros/fuerte/.rosinstall
$ rosws merge http://rosjava.googlecode.com/hg/.rosinstall
$ rosws update
$ source setup.bash
不过我没成功……所以这里推荐另一个方法:
1) 首先设置个工作空间,比如:
mkdir work
cd work
androidupdateproject -p ./myproject --library../../android_core/android_honeycomb_mr2
2) 得到软件源
rosinstall. /opt/ros/groovyhttps://bitbucket.org/osrf/rosandroid/raw/default/rosjava-android.rosinstall
从网上获得rosjava_core,然后等待一会,你就会看到,比如我的:
rosinstalloperating on /home/season/work from specifications in rosinstall files /opt/ros/groovy,https://bitbucket.org/osrf/rosandroid/raw/default/rosjava-android.rosinstall
(Over-)Writing/home/season/work/.rosinstall
[rosjava_core]Fetching git://github.com/rosjava/rosjava_core.git (version groovy-devel) to/home/season/work/rosjava_core
[rosjava_core]Done.
[android_core]Fetching git://github.com/rosjava/android_core.git (version groovy-devel) to/home/season/work/android_core
[android_core]Done.
[osrf_rosandroid]Fetching https://bitbucket.org/osrf/rosandroid (version default) to/home/season/work/osrf_rosandroid
正在请求全部修改
正在增加修改集
正在增加清单
正在增加文件改变
已增加56 个修改集,包含 389 个改变,修改了 259 个文件
updatingto branch default
165files updated, 0 files merged, 0 files removed, 0 files unresolved
0files updated, 0 files merged, 0 files removed, 0 files unresolved
[osrf_rosandroid]Done.
(Over-)Writingsetup.sh, setup.bash, and setup.zsh in /home/season/work
rosinstallupdate complete.
Now,type 'source /home/season/work/setup.bash' to set up your environment.
Addthat to the bottom of your ~/.bashrc to set it up every time.
If youare not using bash please see http://www.ros.org/wiki/rosinstall/NonBashShells
从中你可以看到接下来需要干什么设置……
3)在rosinstall建立的设置文件中设置源
.setup.bash
这里要把work目录写入环境,方法类似于ROS环境配置,不然roscdrosjava_core roscd android_core都会出现错误……
4)编译rosjava
roscdrosjava_core
./gradlewinstall
5)从android_core中编译一些函数库
roscdandroid_core
#注:你也许需要根据android api版本使用`--target`选项来调整。如果已经开始运行了,则需要关闭gradle。
androidupdate project --path ./android_gingerbread_mr1/ --target android-17
androidupdate project --path ./android_honeycomb_mr2/ --target android-17
cdandroid_gingerbread_mr1
../gradlewdebug
cd../android_honeycomb_mr2
../gradlewdebug
2.测试
2.1准备
1)链接android设备到你的电脑,确保链接通顺。
2)确保你的android设备链接到相同网络作为linux设备(比如相同的wifi网络)
3)在你的linux设备,启动roscore:
roscore
2.2建立和加载一个指导应用程序
来个android_tutorial_camera应用范例试一试。其他程序的编译方法和这个一样。
1)安装应用程序:
roscdandroid_core
androidupdate project --path ./android_tutorial_camera/ --target android-17
2)编译:
cdandroid_tutorial_camera
../gradlewdebug
3)加载到你的设备上:
adb -dinstall -r ./bin/MainActivity-debug.apk
2.3 运行范例程序
1) 首先在你的android手机上运行照相机指导程序
2) 这个程序界面很简单,上面有:http://localhost:11311/比如http://192.168.2.4:11311,点OK,启动摄像头。
3) 在你的linux电脑上运行
rosrunimage_viewimage_view image:=camera/image_image_transport:=compressed
这个时候会跳出一个小窗口,你就会从你的电脑上看到手机摄像头拍摄的画面。
很麻烦?的确是!现在android都在eclipse上开发,上述方法的确太烦了,所以下面我就介绍下eclipse上的android_core开发
3eclipse配置
1) 按照前面的安装说明运行,包括通过gradle构建。
2) 在eclipse中构建工作空间,比如:
/home/myusername/rosjava_workspace
3) 如果需要,点击“Goto Workbench”图标。
4) 安装ADT插件: http://developer.android.com/sdk/installing/installing-adt.html
5) 如果你不能,安装ADT插件的平台和包:
http://developer.android.com/sdk/installing/adding-packages.html
6) 载入需要的android_gingerbread_mr1包(:
File->Import->Android->ExistingAndroid Code Into Workspace->[Root directory of android_core]->Finish
7) 点击MasterChooser文件夹(这个无所谓,不改反而方便识别):
File->Rename->"AndroidGingerbread MR1"->OK
8) 载入你的应用
File->New->Android->AndroidProject from Existing Source->[Root directory of mynewapp]->Finish
9) 如果你想要,重命名你的应用。设置library为Android Gingerbread MR1(MasterChooser)
10) 点击”Run”按钮,在android手机或者仿真器上来构建和配置。
至此,如果你需要开发android上ROS,和正常的android开发一样,只需要设置library为MasterChooser就可了。
by:season