├── Makefile ├── README.md ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── follower ├── src │ └── main │ │ ├── res │ │ ├── drawable │ │ │ ├── stop.png │ │ │ └── follow.png │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-ldpi │ │ │ └── icon.png │ │ ├── drawable-mdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── values │ │ │ └── strings.xml │ │ ├── layout-land │ │ │ └── main.xml │ │ └── layout │ │ │ └── main.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ └── com │ │ └── github │ │ └── turtlebot │ │ └── turtlebot_android │ │ └── follower │ │ └── FollowerActivity.java └── build.gradle ├── panorama ├── src │ └── main │ │ ├── res │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-ldpi │ │ │ └── icon.png │ │ ├── drawable-mdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable │ │ │ └── default_image.jpg │ │ ├── values │ │ │ └── strings.xml │ │ ├── layout-port │ │ │ └── main.xml │ │ └── layout-land │ │ │ └── main.xml │ │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── turtlebot │ │ │ └── turtlebot_android │ │ │ └── panorama │ │ │ ├── ScaledBitmapFromCompressedImage.java │ │ │ └── PanoramaActivity.java │ │ └── AndroidManifest.xml └── build.gradle ├── CMakeLists.txt ├── .gitignore ├── turtlebot_android.rosinstall ├── package.xml ├── gradlew.bat └── gradlew /Makefile: -------------------------------------------------------------------------------- 1 | include $(shell rospack find mk)/cmake_stack.mk -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | turtlebot_android 2 | ================= 3 | 4 | Android app development for the turtlebot. -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | *include 'panorama' 3 | *include 'follower' 4 | */ 5 | 6 | include 'panorama' 7 | include 'follower' -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /follower/src/main/res/drawable/stop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/follower/src/main/res/drawable/stop.png -------------------------------------------------------------------------------- /follower/src/main/res/drawable/follow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/follower/src/main/res/drawable/follow.png -------------------------------------------------------------------------------- /follower/src/main/res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/follower/src/main/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /follower/src/main/res/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/follower/src/main/res/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /follower/src/main/res/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/follower/src/main/res/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /follower/src/main/res/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/follower/src/main/res/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /panorama/src/main/res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/panorama/src/main/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /panorama/src/main/res/drawable-ldpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/panorama/src/main/res/drawable-ldpi/icon.png -------------------------------------------------------------------------------- /panorama/src/main/res/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/panorama/src/main/res/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /panorama/src/main/res/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/panorama/src/main/res/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /panorama/src/main/res/drawable/default_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/turtlebot/turtlebot_android/HEAD/panorama/src/main/res/drawable/default_image.jpg -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8.3) 2 | project(turtlebot_android) 3 | 4 | find_package(catkin REQUIRED rosjava_build_tools) 5 | ####find_package(catkin REQUIRED uploadArchives) 6 | 7 | catkin_android_setup(assemble uploadArchives) 8 | 9 | catkin_package() 10 | 11 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jul 02 16:34:33 KST 2014 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip 7 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bin 2 | gen 3 | libs 4 | build.xml 5 | local.properties 6 | proguard-project.txt 7 | .gradle 8 | build 9 | .project 10 | .classpath 11 | 12 | # These are Android Studio files, might be worth including these later. 13 | .idea 14 | *.iml 15 | build.log 16 | build-log.xml 17 | docs.iml 18 | 19 | -------------------------------------------------------------------------------- /follower/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Turtlebot Follower 4 | Kill 5 | 6 | turtlebot_core_apps/follower 7 | 8 | -------------------------------------------------------------------------------- /panorama/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Turtlebot Panorama 4 | Kill 5 | 6 | turtlebot_core_apps/panorama 7 | 8 | -------------------------------------------------------------------------------- /turtlebot_android.rosinstall: -------------------------------------------------------------------------------- 1 | ############################################################################## 2 | # 3 | # Source installation instructions at: 4 | # 5 | # http://www.ros.org/wiki/turtlebot_android/Tutorials/hydro/Installation 6 | # 7 | ############################################################################## 8 | 9 | - git: 10 | uri: https://github.com/turtlebot/turtlebot_android.git 11 | local-name: turtlebot_android 12 | version: hydro-devel 13 | -------------------------------------------------------------------------------- /panorama/src/main/java/com/github/turtlebot/turtlebot_android/panorama/ScaledBitmapFromCompressedImage.java: -------------------------------------------------------------------------------- 1 | package com.github.turtlebot.turtlebot_android.panorama; 2 | 3 | import org.jboss.netty.buffer.ChannelBuffer; 4 | import org.ros.android.BitmapFromCompressedImage; 5 | 6 | import android.graphics.Bitmap; 7 | import android.graphics.BitmapFactory; 8 | 9 | public class ScaledBitmapFromCompressedImage extends BitmapFromCompressedImage 10 | { 11 | private int scaleFactor = 1; 12 | 13 | public ScaledBitmapFromCompressedImage(int scale) 14 | { 15 | scaleFactor = scale; 16 | } 17 | 18 | @Override 19 | public Bitmap call(sensor_msgs.CompressedImage message) 20 | { 21 | BitmapFactory.Options opt = new BitmapFactory.Options(); 22 | opt.inSampleSize = scaleFactor; 23 | 24 | ChannelBuffer buffer = message.getData(); 25 | byte[] data = buffer.array(); 26 | 27 | return BitmapFactory.decodeByteArray(data, buffer.arrayOffset(), buffer.readableBytes(), opt); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | turtlebot_android 4 | 0.1.0 5 | 6 | Android applications and libraries for turtlebot. 7 | 8 | http://ros.org/wiki/turtlebot_android 9 | https://github.com/turtlebot/turtlebot_android 10 | https://github.com/turtlebot/turtlebot_android/issues 11 | Daniel Stonier 12 | Apache 2.0 13 | 14 | catkin 15 | rosjava_build_tools 16 | rosjava_bootstrap 17 | android_core 18 | android_apps 19 | android_extras 20 | rosjava_messages 21 | 26 | 27 | -------------------------------------------------------------------------------- /follower/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Yujin Robot. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 | * use this file except in compliance with the License. You may obtain a copy of 6 | * the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | * License for the specific language governing permissions and limitations under 14 | * the License. 15 | */ 16 | 17 | dependencies { 18 | compile 'com.github.rosjava.android_remocons:common_tools:[0.2,0.3)' 19 | compile 'org.ros.android_core:android_10:[0.2,0.3)]' 20 | compile 'org.ros.rosjava_core:rosjava:0.1.+' 21 | compile 'org.ros.rosjava_messages:turtlebot_msgs:2.2.+' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | 26 | android { 27 | compileSdkVersion 15 28 | 29 | defaultConfig { 30 | minSdkVersion 15 31 | targetSdkVersion 15 32 | versionCode 1 33 | versionName "1.1.1" 34 | } 35 | productFlavors { 36 | indigo { 37 | applicationId "com.github.turtlebot.turtlebot_android.follower.indigo" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /panorama/build.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Yujin Robot. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); you may not 5 | * use this file except in compliance with the License. You may obtain a copy of 6 | * the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | * License for the specific language governing permissions and limitations under 14 | * the License. 15 | */ 16 | 17 | dependencies { 18 | compile 'com.github.rosjava.android_remocons:common_tools:[0.2,0.3)' 19 | compile 'org.ros.android_core:android_10:[0.2,0.3)]' 20 | compile 'org.ros.rosjava_core:rosjava:0.1.+' 21 | compile 'org.ros.rosjava_messages:turtlebot_msgs:2.2.+' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | 26 | android { 27 | compileSdkVersion 15 28 | 29 | defaultConfig { 30 | minSdkVersion 15 31 | targetSdkVersion 15 32 | versionCode 1 33 | versionName "1.1.0" 34 | } 35 | productFlavors { 36 | indigo { 37 | applicationId "com.github.turtlebot.turtlebot_android.panorama.indigo" 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /panorama/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /follower/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 16 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 12 | set DEFAULT_JVM_OPTS= 13 | 14 | set DIRNAME=%~dp0 15 | if "%DIRNAME%" == "" set DIRNAME=. 16 | set APP_BASE_NAME=%~n0 17 | set APP_HOME=%DIRNAME% 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windowz variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | if "%@eval[2+2]" == "4" goto 4NT_args 53 | 54 | :win9xME_args 55 | @rem Slurp the command line arguments. 56 | set CMD_LINE_ARGS= 57 | set _SKIP=2 58 | 59 | :win9xME_args_slurp 60 | if "x%~1" == "x" goto execute 61 | 62 | set CMD_LINE_ARGS=%* 63 | goto execute 64 | 65 | :4NT_args 66 | @rem Get arguments from the 4NT Shell from JP Software 67 | set CMD_LINE_ARGS=%$ 68 | 69 | :execute 70 | @rem Setup the command line 71 | 72 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 73 | 74 | @rem Execute Gradle 75 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 76 | 77 | :end 78 | @rem End local scope for the variables with windows NT shell 79 | if "%ERRORLEVEL%"=="0" goto mainEnd 80 | 81 | :fail 82 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 83 | rem the _cmd.exe /c_ return code! 84 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 85 | exit /b 1 86 | 87 | :mainEnd 88 | if "%OS%"=="Windows_NT" endlocal 89 | 90 | :omega 91 | -------------------------------------------------------------------------------- /follower/src/main/res/layout-land/main.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 15 |