ROS Android开发环境搭建

这是一篇关于ROS Android的开发环境搭建的笔记

对于一些在配置ros android环境失败的朋友们可能会有一些帮助,本文会介绍关于ros android环境搭建和开发实例的运行
,以及一些安装过程中可能会碰到的问题和解决办法

我使用的系统和ros版本是ubuntu14.04 + ROS Indigo

目前ROS和Android的通信方式主要分两种:
一、rosbridge 通过Websocket以JSON格式的API为非ROS环境提供ROS通信支持,这种通信方式轻量级,跨平台
二、rosjava ros官方支持的语言只有C++和Python,目前Android想要和ROS通信的话,需要借助rosjava包
,就能在Android上运行ROS节点,功能强大,但是编译比较麻烦,而且ROS对其支持只到indigo版本!

那么我们主要介绍通过rosjava开发的方式
通过rosjava让android端和ros进行通信的话需要依赖两个包rosjava_core和android_core
rosjava_core:它是用纯JAVA实现的ROS 它提供了一个客户端库是JAVA程序可以快速的调用ROS的Topics,Services,Parameters
android_core:集合rosjava组件和范例的ROS开发应用,提供了android库程序来帮助ROS应用开发

那么接下来详细介绍如何安装配置ros android开发环境,分为以下几个步骤
跟随以下步骤操作之前请了解ROS和其工作原理以及安装好了ROS

  1. OpenJDK8 安装
  2. android studio 安装
  3. rosjava 安装
  4. android core source 安装
  5. android studio导入android core项目
  6. 运行实例android_tutorial_pubsub实现收发消息

一、OpenJDK8 安装:

sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk

If you have more than one Java versions installed on your system. Run below command set the default Java
如果在你的系统上装有多个版本的Java的话,运行这条命令选择一个Java版本作为默认的

sudo update-alternatives --config java

And set default Java Compiler by running

sudo update-alternatives --config javac
java -version

输入java -version如果出现类似这样输出的话就ok了:

openjdk version “1.8.0_01-internal”
OpenJDK Runtime Environment (build 1.8.0_01-internal-b04)
OpenJDK 64-Bit Server VM (build 25.40-b08, mixed mode)

After installation, set JAVA_HOME environment variable to the root directory of the JVM you just installed 设置一下JAVA_HOME环境变量

sudo nano /etc/profile
在最下面添加:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

二、安装Android Studio

可以在android studio中文社区下载到软件压缩包 http://www.android-studio.org/
下载的文件名为android-studio-ide-145.3360264-linux.zip 并将其移动到/opt文件夹下并解压

unzip android-studio-ide-145.3360264-linux.zip
mv android-studio /opt/
cd /opt/android-studio/bin

启动android studio

./studio

接下来就是android studio的安装,这个就不讲了…Google或百度一下一大堆
安装的时候SDK的位置选择最好不要选在root文件夹下 访问的时候会有点麻烦

设置SDK的路径: /home/hqy/Android/Sdk是SDK的位置

echo export PATH=${PATH}:/home/hqy/Android/Sdk/tools:/home/hqy/Android/Sdk/platform-tools:/opt/android-studio/bin >> ~/.bashrc
echo export ANDROID_HOME=/home/hqy/Android/Sdk >> ~/.bashrc

常见问题:

1.在创建项目的时候会报错:Error:Failed to resolve: com.android.support:appcompat-v7:27.+

在app/build.gradle中找到以下变量:

compileSdkVersion 27
targetSdkVersion 27
compile ‘com.android.support:appcompat-v7:27.+’

修改为:

compileSdkVersion 26
targetSdkVersion 26
compile ‘com.android.support:appcompat-v7:26.+’

然后点击上面的Try Again,然后再点下面的Install missing platform(s) and sync project把相关的build-tool安装好就ok了
有篇博客详细的讲了这个问题的处理 https://blog.csdn.net/mhl18820672087/article/details/78385361

2.在SDK Manager把SDK和SDK build-tools装好

如果SDK Manager上面没有找到一大排build-tools的话,在右下角有一个Show Package Details 点它就能看到
From the welcome window, select Configure->SDK Manager option and make sure you have installed Android SDK Build Tools 21.1.2,
Android APIs 10 (gingerbread), 13 (honeycomb), 15 (ice cream), 18 (jellybean)
SDK API 10 13 15 18 21一定得安装好,如果没装的话在后面android core catkin_make的时候会报一大堆Error
如果空间容量足够大的话 就把SDK和build-tools全部勾上安装吧 省得后面麻烦

三、rosjava 安装:

mkdir -p ~/rosjava/src
wstool init -j4 ~/rosjava/src https://raw.githubusercontent.com/rosjava/rosjava/indigo/rosjava.rosinstall
source /opt/ros/indigo/setup.bash
cd ~/rosjava

如果提示 ‘rm /etc/ros/rosdep/sources.list.d/20-default.list’ 就输入下面这条命令试试:

rm /etc/ros/rosdep/sources.list.d/20-default.list

然后继续

sudo rosdep init
rosdep update
rosdep install --from-paths src -i -y
catkin_make

安装完成

常见问题:

如果没有必要,命令前面最好都不加sudo
wstool init -j4 ~/rosjava/src http://xxx 电脑的话可以把-j4换成-j8多线程加快速度,树莓派得换成-j2不然cpu吃不消
1.rosdep update前面一定不能加sudo,或者在root下执行,权限问题
2.rosdep update Error:

rosdep update之前一定要输入sudo rosdep init
如果不行可以尝试更换软件源再试一试

3.rosdep install --from-paths src -i -y报错的话是因为rosdep update的问题

四、android core安装:

mkdir -p ~/android_core
wstool init -j4 ~/android_core/src https://raw.github.com/rosjava/rosjava/indigo/android_core.rosinstall
cd ~/android_core
catkin_make

安装完成

常见问题:

几乎都是catkin_make时候报错的Error的问题
1. A problem occurred configuring project ‘:android_10’ > SDK location not found.

要么SDK路径配置有误,要么SDK装少了版本…

2. 编译报错:Execution failed for task ‘:android_10:processReleaseResources’
java.io.IOException: Cannot run program "/home/hqy/Android/Sdk/build-tools/21.1.2/aapt": error=2, No such file or directory

是因为我装的是Ubuntu 64位的系统 系统缺少32位的相关依赖库 安装32位兼容库 解决如下:

sudo apt-get install -y libc6-i386 lib32stdc++6 lib32gcc1 lib32ncurses5 lib32z1

3. buildscript.gradle报错导致无法编译的问题

把rootProject.buildscript{}中代码换成以下内容:

rootProject.buildscript {
	/*apply from: "https://github.com/rosjava/rosjava_bootstrap/raw/indigo/buildscript.gradle"*/
	apply from: "https://raw.githubusercontent.com/rosjava/rosjava_bootstrap/indigo/buildscript.gradle"
	dependencies {
	classpath "com.android.tools.build:gradle:1.0.+"
	compile 'com.github.rosjava.android_remocons:common_tools:0.2.1' //bumped version
	compile 'org.ros.android_core:android_10:[0.2,0.3)]'
	compile 'org.ros.rosjava_core:rosjava:0.1.+'
	compile 'org.ros.rosjava_messages:turtlebot_msgs:2.2.+'
	}
}

然后再编译应该就ok了

五、Android Studio导入android core项目

导入项目: File - New - Import Project 选择 android_core/src下android_tutorial_pubsub

问题:

1.因导入项目和AndroidStudio的Gradle版本不同导致的问题

下载gradle-2.2.1版本 然后解压 Gradle下载网址 https://services.gradle.org/distributions/
在Settings搜索Gradle 勾选Use local gradle distribution 然后选择gradle-2.2.1所在目录

2.修改gradle后运行项目依然报以下错
UnsupportedMethodException
Unsupported method: AndroidProject.getPluginGeneration().
The version of Gradle you connect to does not support that method.
To resolve the problem you can change/upgrade the target version of Gradle you connect to.
Alternatively, you can ignore this exception and read other information from the model.

出现这个问题的原因是新版本的Android Studio2.2会检查“ Instant Run” 这个特性,所以解决办法就是关掉这个检查
在Build,Execution,Deployment下的Instant Run中取消第一行的勾选 'Enable Instant Run to hot swap code’这行

接下来应该可以成功运行项目到手机了

六、运行android_tutorial_pubsub

首先在~/.bashrc里设置好本机的IP地址 export ROS_IP=192.168.1.101

echo export ROS_IP=192.168.1.101 >> ~/.bashrc
roscore

在手机上设置好Master URI:http://192.168.1.101:11311/ 点击Connect
打开一个新终端输入:

rostopic echo /chatter

常见问题:

1.运行android_tutorial_camera 接收手机摄像头画面

正常情况下以下包可能已经安装:

sudo apt-get install ros-indigo-image-view ros-indigo-rqt-image-view ros-indigo-image-transport-plugins

在手机上打开android_tutorial_camera
打开一个新终端输入:

rosrun image_view image_view image:=/camera/image _image_transport:=compressed

到这里ROS和Android的开发环境基本配置成功

你可能感兴趣的:(ROS)