读这篇文档之前请确定你熟悉了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


       来个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就可了。