├── .gitignore ├── DefaultApk.iml ├── README.md ├── app ├── .gitignore ├── build.gradle ├── build │ └── outputs │ │ └── logs │ │ └── manifest-merger-debug-report.txt ├── proguard-rules.pro └── src │ └── main │ ├── AndroidManifest.xml │ ├── java │ └── jp │ │ └── jaxa │ │ └── iss │ │ └── kibo │ │ └── rpc │ │ └── thailand │ │ ├── MainActivity.java │ │ └── YourService.java │ └── res │ ├── layout │ └── activity_main.xml │ ├── mipmap-hdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-mdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── mipmap-xxxhdpi │ ├── ic_launcher.png │ └── ic_launcher_round.png │ ├── values │ ├── colors.xml │ ├── strings.xml │ └── styles.xml │ └── xml │ └── commands.xml ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── guest_science_library ├── build.gradle └── guest_science_library.aar ├── kibo_rpc_api ├── build.gradle └── kibo_rpc_api-debug.aar ├── local.properties └── settings.gradle /.gitignore: -------------------------------------------------------------------------------- 1 | # OS X randomness 2 | .DS_Store 3 | 4 | # build products 5 | build/ 6 | out/ 7 | 8 | # IntelliJ 9 | .idea/ 10 | *.iml 11 | 12 | # Vim swap files 13 | .*.sw* 14 | 15 | # gradle 16 | .gradle/ 17 | .gradletasknamecache 18 | local.properties 19 | -------------------------------------------------------------------------------- /DefaultApk.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Kibo-RPC-2020 by won-spaceY Team 2 | Save ISS with Astrobee!!! 3 | 4 | Event Information 5 | 6 | 1.1. Purpose of Kibo-RPC 7 | The Kibo Robot Programming Challenge (Kibo-RPC) is an educational program in which 8 | students solve various problems by programming free-flying robots (Astrobee and Int-Ball) in 9 | the International Space Station (ISS). It is hoped that, by providing these students with the 10 | opportunity to work with professional scientists and engineers, they will be inspired to develop their own educational and professional goals to a high level. 11 | Participants will have the chance to learn cutting-edge methodologies and to hone their 12 | skills in science, technology, engineering and mathematics through this program. The KiboRPC will also expand international exchange by encouraging students to interact with other 13 | participants from around the world. 14 | This program is hosted by the Japan Aerospace Exploration Agency (JAXA) in cooperation with the National Aeronautics and Space Administration (NASA). 15 | 16 | 1.2. Educational Objective for 1st Kibo-RPC 17 | Engineering teaches us that a simulation can only approximate the real world. Thus, participants are expected to learn techniques for creating simulation programs that perform well 18 | in the real world despite uncertainties and within margins of error. 19 | Students will learn the necessity of controlling and correcting positions and orientation of a 20 | free-flying robot and how to perform assigned tasks in the onboard environment through simulation trials. 21 | 22 | 23 | Detail path 24 | 25 | 1.Source code : 1st-Kibo-RPC_won-spaceY/app/src/main/java/jp/jaxa/iss/kibo/rpc/thailand/YourService.java 26 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | 4 | android { 5 | compileSdkVersion 26 6 | defaultConfig { 7 | applicationId "jp.jaxa.iss.kibo.rpc.defaultapk" + 8 | "" 9 | minSdkVersion 25 10 | targetSdkVersion 26 11 | versionCode 1 12 | versionName "1.0" 13 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 14 | multiDexEnabled true 15 | } 16 | buildTypes { 17 | release { 18 | minifyEnabled false 19 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 20 | } 21 | } 22 | packagingOptions { 23 | exclude 'META-INF/DEPENDENCIES.txt' 24 | exclude 'META-INF/LICENSE.txt' 25 | exclude 'META-INF/NOTICE.txt' 26 | exclude 'META-INF/NOTICE' 27 | exclude 'META-INF/LICENSE' 28 | exclude 'META-INF/DEPENDENCIES' 29 | exclude 'META-INF/notice.txt' 30 | exclude 'META-INF/license.txt' 31 | exclude 'META-INF/dependencies.txt' 32 | exclude 'META-INF/LGPL2.1' 33 | } 34 | } 35 | 36 | dependencies { 37 | implementation project(':guest_science_library') 38 | implementation project(':kibo_rpc_api') 39 | implementation fileTree(dir: 'libs', include: ['*.jar']) 40 | implementation 'com.android.support:appcompat-v7:26.+' 41 | implementation 'com.android.support.constraint:constraint-layout:1.0.2' 42 | implementation('org.ros.rosjava_core:rosjava:[0.2,0.3)') { 43 | exclude group: 'xml-apis' 44 | exclude group: 'junit' 45 | } 46 | implementation('org.ros.android_core:android_10:[0.2,0.3)') { 47 | exclude group: 'xml-apis' 48 | exclude group: 'junit' 49 | } 50 | testImplementation 'junit:junit:4.12' 51 | implementation 'com.quickbirdstudios:opencv:3.4.4-contrib' 52 | 53 | implementation 'com.google.android.gms:play-services-vision:15.0.0' 54 | implementation 'me.dm7.barcodescanner:zbar:1.9.8' 55 | 56 | 57 | } 58 | -------------------------------------------------------------------------------- /app/build/outputs/logs/manifest-merger-debug-report.txt: -------------------------------------------------------------------------------- 1 | -- Merging decision tree log --- 2 | manifest 3 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 4 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 5 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 6 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 7 | MERGED from [com.quickbirdstudios:opencv:3.4.4-contrib] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/aadffc75e57904e68f682aba2c7ed208/AndroidManifest.xml:2:1-11:12 8 | MERGED from [me.dm7.barcodescanner:zxing:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a3f65e643697fc775b975e3555e1ad42/AndroidManifest.xml:2:1-13:12 9 | MERGED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:2:1-27:12 10 | MERGED from [:kibo_rpc_api] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b007fd7949f69758bd8c549ab33612d6/AndroidManifest.xml:2:1-11:12 11 | MERGED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:17:1-31:12 12 | MERGED from [com.android.support.constraint:constraint-layout:1.0.2] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/836486db03550f277502cbb7916181a6/AndroidManifest.xml:2:1-11:12 13 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:2:1-35:12 14 | MERGED from [com.google.android.gms:play-services-vision:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d4c8fab24c08d3c8da5024151b2bfe13/AndroidManifest.xml:2:1-9:12 15 | MERGED from [me.dm7.barcodescanner:zbar:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/5a6ae5adb471fcfa096ca7c7dfce081e/AndroidManifest.xml:2:1-13:12 16 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:17:1-28:12 17 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:17:1-28:12 18 | MERGED from [com.google.android.gms:play-services-vision-common:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9dbde3ae8a75c1d33e254def73b08b0f/AndroidManifest.xml:2:1-9:12 19 | MERGED from [com.google.android.gms:play-services-clearcut:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a22f19b17dadf19e5a85c3695cad322c/AndroidManifest.xml:17:1-24:12 20 | MERGED from [com.google.android.gms:play-services-flags:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/1e4585dac545cae41fcec15525cb644e/AndroidManifest.xml:17:1-22:12 21 | MERGED from [com.google.android.gms:play-services-phenotype:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/6011d38838c63ac262c230f629770e46/AndroidManifest.xml:17:1-24:12 22 | MERGED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:17:1-29:12 23 | MERGED from [com.google.android.gms:play-services-tasks:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9bba77472c1d441c97e7316170a4de5d/AndroidManifest.xml:2:1-9:12 24 | MERGED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:17:1-28:12 25 | MERGED from [me.dm7.barcodescanner:core:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/fb1588f890ccdad1b4e90af3ee53c4d9/AndroidManifest.xml:2:1-13:12 26 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:17:1-31:12 27 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:17:1-31:12 28 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:17:1-31:12 29 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:17:1-31:12 30 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:17:1-31:12 31 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:17:1-31:12 32 | MERGED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:17:1-30:12 33 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 34 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 35 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 36 | package 37 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:4:5-44 38 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 39 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 40 | android:versionName 41 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 42 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 43 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 44 | xmlns:tools 45 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:3:5-51 46 | android:versionCode 47 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 48 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 49 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 50 | xmlns:android 51 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:11-69 52 | uses-permission#android.permission.INTERNET 53 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:6:5-66 54 | android:name 55 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:6:22-64 56 | uses-permission#android.permission.WAKE_LOCK 57 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:7:5-67 58 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:15:5-68 59 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:15:5-68 60 | android:name 61 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:7:22-65 62 | application 63 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:9:5-29:19 64 | MERGED from [me.dm7.barcodescanner:zxing:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a3f65e643697fc775b975e3555e1ad42/AndroidManifest.xml:11:5-20 65 | MERGED from [me.dm7.barcodescanner:zxing:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a3f65e643697fc775b975e3555e1ad42/AndroidManifest.xml:11:5-20 66 | MERGED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:11:5-25:19 67 | MERGED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:11:5-25:19 68 | MERGED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:25:5-29:19 69 | MERGED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:25:5-29:19 70 | MERGED from [com.android.support.constraint:constraint-layout:1.0.2] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/836486db03550f277502cbb7916181a6/AndroidManifest.xml:9:5-20 71 | MERGED from [com.android.support.constraint:constraint-layout:1.0.2] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/836486db03550f277502cbb7916181a6/AndroidManifest.xml:9:5-20 72 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:18:5-33:19 73 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:18:5-33:19 74 | MERGED from [com.google.android.gms:play-services-vision:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d4c8fab24c08d3c8da5024151b2bfe13/AndroidManifest.xml:7:5-20 75 | MERGED from [com.google.android.gms:play-services-vision:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d4c8fab24c08d3c8da5024151b2bfe13/AndroidManifest.xml:7:5-20 76 | MERGED from [me.dm7.barcodescanner:zbar:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/5a6ae5adb471fcfa096ca7c7dfce081e/AndroidManifest.xml:11:5-20 77 | MERGED from [me.dm7.barcodescanner:zbar:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/5a6ae5adb471fcfa096ca7c7dfce081e/AndroidManifest.xml:11:5-20 78 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:22:5-26:19 79 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:22:5-26:19 80 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:22:5-26:19 81 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:22:5-26:19 82 | MERGED from [com.google.android.gms:play-services-vision-common:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9dbde3ae8a75c1d33e254def73b08b0f/AndroidManifest.xml:7:5-20 83 | MERGED from [com.google.android.gms:play-services-vision-common:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9dbde3ae8a75c1d33e254def73b08b0f/AndroidManifest.xml:7:5-20 84 | MERGED from [com.google.android.gms:play-services-clearcut:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a22f19b17dadf19e5a85c3695cad322c/AndroidManifest.xml:22:5-20 85 | MERGED from [com.google.android.gms:play-services-clearcut:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a22f19b17dadf19e5a85c3695cad322c/AndroidManifest.xml:22:5-20 86 | MERGED from [com.google.android.gms:play-services-phenotype:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/6011d38838c63ac262c230f629770e46/AndroidManifest.xml:22:5-20 87 | MERGED from [com.google.android.gms:play-services-phenotype:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/6011d38838c63ac262c230f629770e46/AndroidManifest.xml:22:5-20 88 | MERGED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:22:5-27:19 89 | MERGED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:22:5-27:19 90 | MERGED from [com.google.android.gms:play-services-tasks:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9bba77472c1d441c97e7316170a4de5d/AndroidManifest.xml:7:5-20 91 | MERGED from [com.google.android.gms:play-services-tasks:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9bba77472c1d441c97e7316170a4de5d/AndroidManifest.xml:7:5-20 92 | MERGED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:22:5-26:19 93 | MERGED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:22:5-26:19 94 | MERGED from [me.dm7.barcodescanner:core:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/fb1588f890ccdad1b4e90af3ee53c4d9/AndroidManifest.xml:11:5-20 95 | MERGED from [me.dm7.barcodescanner:core:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/fb1588f890ccdad1b4e90af3ee53c4d9/AndroidManifest.xml:11:5-20 96 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:25:5-29:19 97 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:25:5-29:19 98 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:25:5-29:19 99 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:25:5-29:19 100 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:25:5-29:19 101 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:25:5-29:19 102 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:25:5-29:19 103 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:25:5-29:19 104 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:25:5-29:19 105 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:25:5-29:19 106 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:25:5-29:19 107 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:25:5-29:19 108 | MERGED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:24:5-28:19 109 | MERGED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:24:5-28:19 110 | android:supportsRtl 111 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:14:9-35 112 | android:label 113 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:12:9-41 114 | android:roundIcon 115 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:13:9-54 116 | android:icon 117 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:11:9-43 118 | REJECTED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:13:9-43 119 | REJECTED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:19:9-36 120 | android:allowBackup 121 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:10:9-35 122 | android:theme 123 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:16:9-40 124 | tools:replace 125 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:15:9-37 126 | activity#jp.jaxa.iss.kibo.rpc.thailand.MainActivity 127 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:18:9-23:20 128 | android:name 129 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:18:19-76 130 | intent-filter#action:name:android.intent.action.MAIN+category:name:android.intent.category.LAUNCHER 131 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:19:13-22:29 132 | action#android.intent.action.MAIN 133 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:20:17-68 134 | android:name 135 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:20:25-66 136 | category#android.intent.category.LAUNCHER 137 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:21:17-76 138 | android:name 139 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:21:27-74 140 | service#jp.jaxa.iss.kibo.rpc.thailand.YourService 141 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:25:9-27:19 142 | android:exported 143 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:25:75-98 144 | android:name 145 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:25:18-74 146 | meta-data#Start Service 147 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:26:13-76 148 | android:value 149 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:26:53-73 150 | android:name 151 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:26:24-52 152 | uses-sdk 153 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml reason: use-sdk injection requested 154 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 155 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 156 | MERGED from [com.quickbirdstudios:opencv:3.4.4-contrib] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/aadffc75e57904e68f682aba2c7ed208/AndroidManifest.xml:7:5-9:41 157 | MERGED from [com.quickbirdstudios:opencv:3.4.4-contrib] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/aadffc75e57904e68f682aba2c7ed208/AndroidManifest.xml:7:5-9:41 158 | MERGED from [me.dm7.barcodescanner:zxing:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a3f65e643697fc775b975e3555e1ad42/AndroidManifest.xml:7:5-9:41 159 | MERGED from [me.dm7.barcodescanner:zxing:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a3f65e643697fc775b975e3555e1ad42/AndroidManifest.xml:7:5-9:41 160 | MERGED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:7:5-9:41 161 | MERGED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:7:5-9:41 162 | MERGED from [:kibo_rpc_api] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b007fd7949f69758bd8c549ab33612d6/AndroidManifest.xml:7:5-9:41 163 | MERGED from [:kibo_rpc_api] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b007fd7949f69758bd8c549ab33612d6/AndroidManifest.xml:7:5-9:41 164 | MERGED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:21:5-23:78 165 | MERGED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:21:5-23:78 166 | MERGED from [com.android.support.constraint:constraint-layout:1.0.2] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/836486db03550f277502cbb7916181a6/AndroidManifest.xml:5:5-7:41 167 | MERGED from [com.android.support.constraint:constraint-layout:1.0.2] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/836486db03550f277502cbb7916181a6/AndroidManifest.xml:5:5-7:41 168 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:8:5-10:41 169 | MERGED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:8:5-10:41 170 | MERGED from [com.google.android.gms:play-services-vision:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d4c8fab24c08d3c8da5024151b2bfe13/AndroidManifest.xml:5:5-44 171 | MERGED from [com.google.android.gms:play-services-vision:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d4c8fab24c08d3c8da5024151b2bfe13/AndroidManifest.xml:5:5-44 172 | MERGED from [me.dm7.barcodescanner:zbar:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/5a6ae5adb471fcfa096ca7c7dfce081e/AndroidManifest.xml:7:5-9:41 173 | MERGED from [me.dm7.barcodescanner:zbar:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/5a6ae5adb471fcfa096ca7c7dfce081e/AndroidManifest.xml:7:5-9:41 174 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:20:5-44 175 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:20:5-44 176 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:20:5-44 177 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:20:5-44 178 | MERGED from [com.google.android.gms:play-services-vision-common:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9dbde3ae8a75c1d33e254def73b08b0f/AndroidManifest.xml:5:5-44 179 | MERGED from [com.google.android.gms:play-services-vision-common:15.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9dbde3ae8a75c1d33e254def73b08b0f/AndroidManifest.xml:5:5-44 180 | MERGED from [com.google.android.gms:play-services-clearcut:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a22f19b17dadf19e5a85c3695cad322c/AndroidManifest.xml:20:5-44 181 | MERGED from [com.google.android.gms:play-services-clearcut:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a22f19b17dadf19e5a85c3695cad322c/AndroidManifest.xml:20:5-44 182 | MERGED from [com.google.android.gms:play-services-flags:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/1e4585dac545cae41fcec15525cb644e/AndroidManifest.xml:20:5-44 183 | MERGED from [com.google.android.gms:play-services-flags:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/1e4585dac545cae41fcec15525cb644e/AndroidManifest.xml:20:5-44 184 | MERGED from [com.google.android.gms:play-services-phenotype:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/6011d38838c63ac262c230f629770e46/AndroidManifest.xml:20:5-44 185 | MERGED from [com.google.android.gms:play-services-phenotype:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/6011d38838c63ac262c230f629770e46/AndroidManifest.xml:20:5-44 186 | MERGED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:20:5-44 187 | MERGED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:20:5-44 188 | MERGED from [com.google.android.gms:play-services-tasks:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9bba77472c1d441c97e7316170a4de5d/AndroidManifest.xml:5:5-44 189 | MERGED from [com.google.android.gms:play-services-tasks:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/9bba77472c1d441c97e7316170a4de5d/AndroidManifest.xml:5:5-44 190 | MERGED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:20:5-44 191 | MERGED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:20:5-44 192 | MERGED from [me.dm7.barcodescanner:core:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/fb1588f890ccdad1b4e90af3ee53c4d9/AndroidManifest.xml:7:5-9:41 193 | MERGED from [me.dm7.barcodescanner:core:1.9.8] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/fb1588f890ccdad1b4e90af3ee53c4d9/AndroidManifest.xml:7:5-9:41 194 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:21:5-23:54 195 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:21:5-23:54 196 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:21:5-23:63 197 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:21:5-23:63 198 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:21:5-23:60 199 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:21:5-23:60 200 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:21:5-23:61 201 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:21:5-23:61 202 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:21:5-23:58 203 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:21:5-23:58 204 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:21:5-23:58 205 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:21:5-23:58 206 | MERGED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:20:5-22:41 207 | MERGED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:20:5-22:41 208 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 209 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 210 | tools:overrideLibrary 211 | ADDED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:23:9-75 212 | android:targetSdkVersion 213 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 214 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 215 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 216 | android:minSdkVersion 217 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 218 | ADDED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 219 | INJECTED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml 220 | receiver#gov.nasa.arc.astrobee.android.gs.InfoInqueryBroadcastReceiver 221 | ADDED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:18:9-24:20 222 | android:exported 223 | ADDED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:20:13-36 224 | android:name 225 | ADDED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:19:13-89 226 | intent-filter#action:name:gov.nasa.arc.astrobee.android.gs.INFO_INQUIRY 227 | ADDED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:21:13-23:29 228 | action#gov.nasa.arc.astrobee.android.gs.INFO_INQUIRY 229 | ADDED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:22:17-88 230 | android:name 231 | ADDED from [:guest_science_library] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/ea7a6ab176c013f4995f483fbaea265f/AndroidManifest.xml:22:25-85 232 | meta-data#android.support.VERSION 233 | ADDED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:26:9-28:38 234 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:23:9-25:38 235 | MERGED from [com.android.support:animated-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/a981c2f25223bddf2a981a09236a362f/AndroidManifest.xml:23:9-25:38 236 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:23:9-25:38 237 | MERGED from [com.android.support:support-vector-drawable:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2022d0ba42b94a3e81f2945fad21eeca/AndroidManifest.xml:23:9-25:38 238 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:26:9-28:38 239 | MERGED from [com.android.support:support-v4:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/2aa60cd28d7d1ec0f53a06935054054c/AndroidManifest.xml:26:9-28:38 240 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:26:9-28:38 241 | MERGED from [com.android.support:support-media-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/8c24b20a71e0be9260c2597fb7368ebc/AndroidManifest.xml:26:9-28:38 242 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:26:9-28:38 243 | MERGED from [com.android.support:support-fragment:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/b0addbc95f5ab46592f6263041917465/AndroidManifest.xml:26:9-28:38 244 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:26:9-28:38 245 | MERGED from [com.android.support:support-core-utils:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/577bd842f9a3ce081582c45fb2fb71ac/AndroidManifest.xml:26:9-28:38 246 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:26:9-28:38 247 | MERGED from [com.android.support:support-core-ui:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/f6c98f8b841d4c37b928ddece8103a4c/AndroidManifest.xml:26:9-28:38 248 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:26:9-28:38 249 | MERGED from [com.android.support:support-compat:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c73b137f77a48fe2b20d024106098f7b/AndroidManifest.xml:26:9-28:38 250 | android:value 251 | ADDED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:28:13-35 252 | android:name 253 | ADDED from [com.android.support:appcompat-v7:26.1.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/340cd46654947c58f642053c2d309b63/AndroidManifest.xml:27:13-51 254 | uses-permission#android.permission.WRITE_EXTERNAL_STORAGE 255 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:12:5-81 256 | android:name 257 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:12:22-78 258 | uses-permission#android.permission.ACCESS_WIFI_STATE 259 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:13:5-76 260 | android:name 261 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:13:22-73 262 | uses-permission#android.permission.CHANGE_WIFI_STATE 263 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:14:5-76 264 | android:name 265 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:14:22-73 266 | uses-permission#android.permission.SYSTEM_ALERT_WINDOW 267 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:16:5-78 268 | android:name 269 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:16:22-75 270 | activity#org.ros.android.MasterChooser 271 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:21:9-24:45 272 | android:label 273 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:23:13-45 274 | android:launchMode 275 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:24:13-42 276 | android:name 277 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:22:13-57 278 | service#org.ros.android.NodeMainExecutorService 279 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:26:9-32:19 280 | tools:ignore 281 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:28:13-43 282 | android:name 283 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:27:13-67 284 | intent-filter#action:name:org.ros.android.NodeMainExecutorService 285 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:29:13-31:29 286 | action#org.ros.android.NodeMainExecutorService 287 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:30:17-82 288 | android:name 289 | ADDED from [org.ros.android_core:android_10:0.2.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/db0a159b4d4bab5c4bdcc2e795d5fc07/AndroidManifest.xml:30:25-79 290 | uses-permission#android.permission.READ_EXTERNAL_STORAGE 291 | IMPLIED from /home/mteerachot/Desktop/thailand/app/src/main/AndroidManifest.xml:2:1-31:12 reason: org.ros.android.android_10 requested WRITE_EXTERNAL_STORAGE 292 | activity#com.google.android.gms.common.api.GoogleApiActivity 293 | ADDED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:23:9-26:75 294 | android:exported 295 | ADDED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:25:13-37 296 | android:theme 297 | ADDED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:26:13-72 298 | android:name 299 | ADDED from [com.google.android.gms:play-services-base:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/d7c5d99e3e1508781087564d90545159/AndroidManifest.xml:24:13-79 300 | meta-data#com.google.android.gms.version 301 | ADDED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:23:9-25:69 302 | android:value 303 | ADDED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:25:13-66 304 | android:name 305 | ADDED from [com.google.android.gms:play-services-basement:15.0.1] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/c9c70a10dbd9835f8d15b007a716af9a/AndroidManifest.xml:24:13-58 306 | meta-data#android.arch.lifecycle.VERSION 307 | ADDED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:25:9-27:47 308 | android:value 309 | ADDED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:27:13-44 310 | android:name 311 | ADDED from [android.arch.lifecycle:runtime:1.0.0] /home/mteerachot/.gradle/caches/transforms-2/files-2.1/067266f8bc2914ef7bcc8f25115d770a/AndroidManifest.xml:26:13-58 312 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /home/rgarciar/Android/Sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | 19 | # Uncomment this to preserve the line number information for 20 | # debugging stack traces. 21 | #-keepattributes SourceFile,LineNumberTable 22 | 23 | # If you keep the line number information, uncomment this to 24 | # hide the original source file name. 25 | #-renamesourcefileattribute SourceFile 26 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/java/jp/jaxa/iss/kibo/rpc/thailand/MainActivity.java: -------------------------------------------------------------------------------- 1 | package jp.jaxa.iss.kibo.rpc.thailand; 2 | 3 | import android.support.v7.app.AppCompatActivity; 4 | import android.os.Bundle; 5 | 6 | public class MainActivity extends AppCompatActivity{ 7 | 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState){ 10 | super.onCreate(savedInstanceState); 11 | setContentView(R.layout.activity_main); 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/java/jp/jaxa/iss/kibo/rpc/thailand/YourService.java: -------------------------------------------------------------------------------- 1 | package jp.jaxa.iss.kibo.rpc.thailand; 2 | 3 | import gov.nasa.arc.astrobee.Kinematics; 4 | import gov.nasa.arc.astrobee.Result; 5 | import gov.nasa.arc.astrobee.types.Point; 6 | import gov.nasa.arc.astrobee.types.Quaternion; 7 | import jp.jaxa.iss.kibo.rpc.api.KiboRpcService; 8 | import jp.jaxa.iss.kibo.rpc.api.types.PointCloud; 9 | // astrobee library 10 | import android.graphics.Bitmap; 11 | import android.os.SystemClock; 12 | import android.util.Log; 13 | // android library 14 | import com.google.zxing.BinaryBitmap; 15 | import com.google.zxing.LuminanceSource; 16 | import com.google.zxing.RGBLuminanceSource; 17 | import com.google.zxing.common.HybridBinarizer; 18 | import com.google.zxing.qrcode.QRCodeReader; 19 | // zxing library 20 | import org.opencv.aruco.Aruco; 21 | import org.opencv.aruco.Dictionary; 22 | import org.opencv.core.CvType; 23 | import org.opencv.core.Mat; 24 | import org.opencv.core.Size; 25 | import org.opencv.imgproc.Imgproc; 26 | import org.opencv.core.Rect; 27 | import static org.opencv.android.Utils.matToBitmap; 28 | // opencv library 29 | import java.util.ArrayList; 30 | import java.util.List; 31 | // java library 32 | 33 | 34 | public class YourService extends KiboRpcService 35 | { 36 | String MODE = "iss"; // mode setting ("sim" or "iss") 37 | int NAV_MAX_COL = 1280; 38 | int NAV_MAX_ROW = 960; 39 | int PointCloud_COL = 224; 40 | int PointCloud_ROW = 171; 41 | // carmera constant value 42 | int max_count = 5, center_range = 6, P1 = 0, P2 = 1; 43 | // limit value 44 | float AR_diagonal = 0.07071067812f; 45 | float ARtoTarget = 0.1414f, y_shift = 0.1328f; 46 | // shift position value 47 | 48 | @Override 49 | protected void runPlan1() 50 | { 51 | api.judgeSendStart(); 52 | 53 | 54 | final double[] P3_pos = QR_event(10.7600f, -5.6122f, 4.5826f, 0.0f, 0.0f, 1.0f, 0.0f, max_count, P1); 55 | moveTo(10.7000f, -6.0300f, 5.0000f, 0.0f, 0.0f, 0.0f, 0.0f); 56 | moveTo(10.4600f, -6.2800f, 5.2400f, 0.0f, 0.0f, 0.0f, 0.0f); 57 | moveTo(10.4600f, -6.7800f, 5.2400f, 0.0f, 0.0f, 0.0f, 0.0f); 58 | final double[] P3_qua = QR_event(11.0174f, -7.9378f, 5.4100f, 0.0f, -0.7071f, 0.0f, 0.7071f, max_count, P2); 59 | // QR part 60 | 61 | moveTo(11.4600f, -8.6000f, 4.8000f, 0.0f, 0.0f, 0.7071f, -0.7071f); 62 | //double[] AR_pos = AR_event((float) P3_pos[0], (float) P3_pos[1], (float) P3_pos[2], (float) P3_qua[0], (float) P3_qua[1], (float) P3_qua[2], (float) P3_qua[3], max_count, true); 63 | //double[] AR_pos = AR_event(10.9500f, -9.5900f, 5.4000f, 0.0f, 0.0f, 0.7071f, -0.7071f, max_count, true); 64 | double[] AR_pos = AR_event(10.9250f, -10.0400f, 5.4000f, 0.0f, 0.0f, 0.7071f, -0.7071f, max_count, true); 65 | // AR part 66 | 67 | AR_pos = AR_event((float) AR_pos[0], -9.5900f, (float) AR_pos[2],0.0f, 0.0f, 0.7071f, -0.7071f, max_count, false); 68 | moveTo(AR_pos[0], -9.5900f, AR_pos[2], AR_pos[0]+ARtoTarget, -9.5900f-getPointCloud(center_range)-y_shift, AR_pos[2]+ARtoTarget); 69 | // Target part 70 | 71 | 72 | judgeSendFinish(true); 73 | } 74 | @Override 75 | protected void runPlan2() 76 | { 77 | 78 | } 79 | @Override 80 | protected void runPlan3() 81 | { 82 | 83 | } 84 | public void moveTo(float px, float py, float pz, float qx, float qy, float qz, float qw) 85 | { 86 | Result result; 87 | int count = 0, max_count = 3; 88 | Point point = new Point(px, py, pz); 89 | Quaternion quaternion = new Quaternion(qx, qy, qz, qw); 90 | 91 | do 92 | { 93 | result = api.moveTo(point, quaternion, true); 94 | count++; 95 | } 96 | while (!result.hasSucceeded() && count < max_count); 97 | } 98 | public void moveTo(double x_org, double y_org, double z_org, double x_des, double y_des, double z_des) 99 | { 100 | double dx = x_des-x_org; 101 | double dy = y_des-y_org; 102 | double dz = z_des-z_org; 103 | double magnitude = Math.sqrt((dx*dx)+(dy*dy)+(dz*dz)); 104 | double x_unit = dx/magnitude; 105 | double y_unit = dy/magnitude; 106 | double z_unit = dz/magnitude; 107 | 108 | double matrix[][] = 109 | { 110 | {1, 0, 0}, 111 | {x_unit, y_unit, z_unit} 112 | }; 113 | 114 | double x = matrix[0][1]*matrix[1][2] - matrix[1][1]*matrix[0][2]; 115 | double y = matrix[0][2]*matrix[1][0] - matrix[1][2]*matrix[0][0]; 116 | double z = matrix[0][0]*matrix[1][1] - matrix[1][0]*matrix[0][1]; 117 | double i = matrix[1][0]-matrix[0][0]; 118 | double j = matrix[1][1]-matrix[0][1]; 119 | double k = matrix[1][2]-matrix[0][2]; 120 | double q = Math.sqrt(x*x + y*y + z*z); 121 | double p = Math.sqrt(i*i + j*j + k*k); 122 | double theta = Math.acos((2 - p*p) / 2); 123 | 124 | double a = Math.sin(theta/2)*x/q; 125 | double b = Math.sin(theta/2)*y/q; 126 | double c = Math.sin(theta/2)*z/q; 127 | double w = Math.cos(theta/2); 128 | 129 | double pitch = -Math.atan((2 * (a*w + b*c)) / (w*w - a*a - b*b + c*c)); 130 | double roll = -Math.asin(2 * (a*c - b*w)); 131 | double yaw = Math.atan((2 * (c*w + a*b)) / (w*w + a*a - b*b - c*c)); 132 | double sx = (0.103 * Math.cos(roll + 0.279) / Math.cos(1.57080 + yaw)); 133 | double sy = (0.103 * Math.sin(roll + 0.279) / Math.cos(pitch)); 134 | 135 | moveTo((float)x_org - (float)sx, (float)y_org, (float)z_org + (float)sy, (float)a, (float)b, (float)c, (float)w); 136 | } 137 | public Mat undistord(Mat src) 138 | { 139 | Mat dst = new Mat(1280, 960, CvType.CV_8UC1); 140 | Mat cameraMatrix = new Mat(3, 3, CvType.CV_32FC1); 141 | Mat distCoeffs = new Mat(1, 5, CvType.CV_32FC1); 142 | 143 | int row = 0, col = 0; 144 | 145 | double cameraMatrix_sim[] = 146 | { 147 | 344.173397, 0.000000, 630.793795, 148 | 0.000000, 344.277922, 487.033834, 149 | 0.000000, 0.000000, 1.000000 150 | }; 151 | double distCoeffs_sim[] = {-0.152963, 0.017530, -0.001107, -0.000210, 0.000000}; 152 | 153 | double cameraMatrix_orbit[] = 154 | { 155 | 692.827528, 0.000000, 571.399891, 156 | 0.000000, 691.919547, 504.956891, 157 | 0.000000, 0.000000, 1.000000 158 | }; 159 | double distCoeffs_orbit[] = {-0.312191, 0.073843, -0.000918, 0.001890, 0.000000}; 160 | 161 | if(MODE == "sim") 162 | { 163 | cameraMatrix.put(row, col, cameraMatrix_sim); 164 | distCoeffs.put(row, col, distCoeffs_sim); 165 | Log.d("Mode[camera]:"," sim"); 166 | } 167 | else if(MODE == "iss") 168 | { 169 | cameraMatrix.put(row, col, cameraMatrix_orbit); 170 | distCoeffs.put(row, col, distCoeffs_orbit); 171 | Log.d("Mode[camera]:"," iss"); 172 | } 173 | 174 | cameraMatrix.put(row, col, cameraMatrix_orbit); 175 | distCoeffs.put(row, col, distCoeffs_orbit); 176 | 177 | Imgproc.undistort(src, dst, cameraMatrix, distCoeffs); 178 | return dst; 179 | } 180 | public Rect cropImage(int percent_crop) 181 | { 182 | double ratio = NAV_MAX_COL / NAV_MAX_ROW; 183 | 184 | double percent_row = percent_crop/2; 185 | double percent_col = percent_row * ratio; 186 | 187 | int offset_row = (int) percent_row * NAV_MAX_ROW / 100; 188 | int offset_col = (int) percent_col * NAV_MAX_COL / 100; 189 | double rows = NAV_MAX_ROW - (offset_row * 2); 190 | double cols = NAV_MAX_COL - (offset_col * 2); 191 | 192 | return new Rect(offset_col, offset_row, (int) cols, (int) rows); 193 | } 194 | public Bitmap resizeImage(Mat src, int width, int height) 195 | { 196 | Size size = new Size(width, height); 197 | Imgproc.resize(src, src, size); 198 | 199 | Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 200 | matToBitmap(src, bitmap, false); 201 | return bitmap; 202 | } 203 | public double[] Intersection(double p[][]) 204 | { 205 | double[] center = new double[3]; 206 | 207 | double a = (p[1][0] - p[0][0]) * (p[3][0] - p[2][0]); 208 | double b = (p[1][0] - p[0][0]) * (p[3][1] - p[2][1]); 209 | double c = (p[3][0] - p[2][0]) * (p[1][1] - p[0][1]); 210 | 211 | center[0] = (a * p[0][1] + b * p[2][0] - a * p[2][1] - c * p[0][0]) / (b - c); 212 | center[1] = ((p[1][1] - p[0][1]) * (center[0] - p[0][0]) / (p[1][0] - p[0][0])) + p[0][1]; 213 | 214 | double x_l1 = Math.pow(p[0][0] - p[1][0], 2); 215 | double y_l1 = Math.pow(p[0][1] - p[1][1], 2); 216 | double x_l2 = Math.pow(p[3][0] - p[2][0], 2); 217 | double y_l2 = Math.pow(p[3][1] - p[2][1], 2); 218 | double avg = (Math.sqrt(x_l1 + y_l1) + Math.sqrt(x_l2 + y_l2)) / 2; 219 | 220 | center[2] = avg / AR_diagonal; 221 | Log.d("AR[info]: ", center[0] + ", " + center[1] + ", " + center[2]); 222 | return center; 223 | } 224 | public double getPointCloud(int center_range) 225 | { 226 | double depth = 0; 227 | int count = 0; 228 | 229 | Log.d("PointCloud[status]:", " start"); 230 | PointCloud hazCam = api.getPointCloudHazCam(); 231 | Point[] point = hazCam.getPointArray(); 232 | int width = hazCam.getWidth(); 233 | int height = hazCam.getHeight(); 234 | int row_max = height/2 + center_range/2; 235 | int row_min = height/2 - center_range/2; 236 | int col_max = width/2 + center_range/2; 237 | int col_min = width/2 - center_range/2; 238 | Log.d("PointCloud[status]:", " stop"); 239 | 240 | 241 | ////////////////////////////////////////////////////////////////////////////////////////////////////// 242 | for (int row = row_min; row < row_max; row++) 243 | { 244 | for (int col = col_min; col < col_max; col++) 245 | { 246 | depth += point[(row * width) + col].getZ(); 247 | count++; 248 | } 249 | } 250 | ////////////////////////////////////////////////////////////////////////////////////////////////////// 251 | 252 | 253 | depth /= count; 254 | Log.d("PointCloud[value]:", "z[" + depth + "]"); 255 | return depth; 256 | } 257 | public void flash_control(boolean status) 258 | { 259 | if(status) 260 | { 261 | api.flashlightControlFront(0.025f); 262 | 263 | try 264 | { 265 | Thread.sleep(1000); // wait a few seconds 266 | } 267 | catch (InterruptedException e) 268 | { 269 | e.printStackTrace(); 270 | } 271 | } 272 | else api.flashlightControlFront(0); 273 | } 274 | public void judgeSendFinish(boolean laser_control) 275 | { 276 | api.laserControl(laser_control); 277 | 278 | if(MODE == "sim") 279 | { 280 | Log.d("Mode[judge]:"," sim"); 281 | api.judgeSendFinishSimulation(); 282 | } 283 | else if(MODE == "iss") 284 | { 285 | Log.d("Mode[judge]:"," iss"); 286 | api.judgeSendFinishISS(); 287 | } 288 | } 289 | public double[] QR_event(float px, float py, float pz, float qx, float qy, float qz, float qw, int count_max, int no) 290 | { 291 | String contents = null; 292 | int count = 0; 293 | double final_x = 0, final_y = 0, final_z = 0, final_w = 0; 294 | 295 | while (contents == null && count < count_max) 296 | { 297 | Log.d("QR[status]:", " start"); 298 | long start_time = SystemClock.elapsedRealtime(); 299 | // // 300 | moveTo(px, py, pz, qx, qy, qz, qw); 301 | Log.d("QR[NO]:"," "+no); 302 | 303 | flash_control(true); 304 | Mat src_mat = new Mat(undistord(api.getMatNavCam()), cropImage(40)); 305 | Bitmap bMap = resizeImage(src_mat, 2000, 1500); 306 | 307 | 308 | 309 | ////////////////////////////////////////////////////////////////////////////////////////////////////// 310 | int[] intArray = new int[bMap.getWidth() * bMap.getHeight()]; 311 | bMap.getPixels(intArray, 0, bMap.getWidth(), 0, 0, bMap.getWidth(), bMap.getHeight()); 312 | 313 | LuminanceSource source = new RGBLuminanceSource(bMap.getWidth(), bMap.getHeight(), intArray); 314 | BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source)); 315 | 316 | try 317 | { 318 | com.google.zxing.Result result = new QRCodeReader().decode(bitmap); 319 | contents = result.getText(); 320 | Log.d("QR[status]:", " Detected"); 321 | 322 | String[] multi_contents = contents.split(", "); 323 | final_x = Double.parseDouble(multi_contents[1]); 324 | final_y = Double.parseDouble(multi_contents[3]); 325 | final_z = Double.parseDouble(multi_contents[5]); 326 | if(no == 1) final_w = Math.sqrt(1 - final_x*final_x - final_y*final_y - final_z*final_z); 327 | } 328 | catch (Exception e) 329 | { 330 | Log.d("QR[status]:", " Not detected"); 331 | } 332 | ////////////////////////////////////////////////////////////////////////////////////////////////////// 333 | Log.d("QR[status]:", " stop"); 334 | long stop_time = SystemClock.elapsedRealtime(); 335 | 336 | 337 | 338 | Log.d("QR[count]:", " " + count); 339 | Log.d("QR[total_time]:"," "+ (stop_time-start_time)/1000); 340 | count++; 341 | } 342 | 343 | 344 | flash_control(false); 345 | api.judgeSendDiscoveredQR(no, contents); 346 | return new double[] {final_x, final_y, final_z, final_w}; 347 | } 348 | public double[] AR_event(float px, float py, float pz, float qx, float qy, float qz, float qw, int count_max, boolean sent_AR) 349 | { 350 | int contents = 0, count = 0; 351 | double result[] = new double[3]; 352 | 353 | while (contents == 0 && count < count_max) 354 | { 355 | Log.d("AR[status]:", " start"); 356 | long start_time = SystemClock.elapsedRealtime(); 357 | // // 358 | moveTo(px, py, pz, qx, qy, qz, qw); 359 | 360 | 361 | 362 | ////////////////////////////////////////////////////////////////////////////////////////////////////// 363 | Mat source = undistord(api.getMatNavCam()); 364 | Kinematics robot = api.getTrustedRobotKinematics(5); 365 | Mat ids = new Mat(); 366 | Dictionary dictionary = Aruco.getPredefinedDictionary(Aruco.DICT_5X5_250); 367 | List corners = new ArrayList<>(); 368 | 369 | try 370 | { 371 | Aruco.detectMarkers(source, dictionary, corners, ids); 372 | contents = (int) ids.get(0, 0)[0]; 373 | 374 | if(sent_AR) api.judgeSendDiscoveredAR(Integer.toString(contents)); 375 | Log.d("AR[status]:", " Detected"); 376 | 377 | 378 | double[][] AR_corners = 379 | { 380 | {(int) corners.get(0).get(0, 0)[0], (int) corners.get(0).get(0, 0)[1]}, 381 | {(int) corners.get(0).get(0, 2)[0], (int) corners.get(0).get(0, 2)[1]}, 382 | {(int) corners.get(0).get(0, 1)[0], (int) corners.get(0).get(0, 1)[1]}, 383 | {(int) corners.get(0).get(0, 3)[0], (int) corners.get(0).get(0, 3)[1]} 384 | }; 385 | double[] AR_info = Intersection(AR_corners); 386 | 387 | 388 | Point point = new Point(px, py, pz); 389 | if(robot != null) 390 | { 391 | point = robot.getPosition(); 392 | Log.d("getKinematics[status]:"," Finished"); 393 | } 394 | result[0] = point.getX() + (AR_info[0]- NAV_MAX_COL/2) / AR_info[2]; 395 | result[1] = point.getY(); 396 | result[2] = point.getZ() + (AR_info[1]- NAV_MAX_ROW/2) / AR_info[2]; 397 | } 398 | catch (Exception e) 399 | { 400 | Log.d("AR[status]:", " Not detected"); 401 | } 402 | ////////////////////////////////////////////////////////////////////////////////////////////////////// 403 | Log.d("AR[status]:", " stop"); 404 | long stop_time = SystemClock.elapsedRealtime(); 405 | 406 | 407 | 408 | Log.d("AR[count]:", " " + count); 409 | Log.d("AR[total_time]:"," "+ (stop_time-start_time)/1000); 410 | count++; 411 | } 412 | return result; 413 | } 414 | } 415 | 416 | 417 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | thailand 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/commands.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | true 4 | 5 | 8 | 11 | 14 | 15 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | repositories { 5 | jcenter() 6 | maven { 7 | url 'https://maven.google.com/' 8 | name 'Google' 9 | } 10 | google() 11 | } 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:3.4.1' 14 | 15 | // NOTE: Do not place your application dependencies here; they belong 16 | // in the individual module build.gradle files 17 | } 18 | } 19 | 20 | allprojects { 21 | repositories { 22 | maven { 23 | url "https://github.com/rosjava/rosjava_mvn_repo/raw/master" 24 | } 25 | jcenter() 26 | maven { 27 | url 'https://maven.google.com/' 28 | name 'Google' 29 | } 30 | } 31 | } 32 | 33 | task clean(type: Delete) { 34 | delete rootProject.buildDir 35 | } 36 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Jun 24 22:00:03 ICT 2020 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-5.1.1-all.zip 7 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | ############################################################################## 4 | ## 5 | ## Gradle start up script for UN*X 6 | ## 7 | ############################################################################## 8 | 9 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 10 | DEFAULT_JVM_OPTS="" 11 | 12 | APP_NAME="Gradle" 13 | APP_BASE_NAME=`basename "$0"` 14 | 15 | # Use the maximum available, or set MAX_FD != -1 to use that value. 16 | MAX_FD="maximum" 17 | 18 | warn ( ) { 19 | echo "$*" 20 | } 21 | 22 | die ( ) { 23 | echo 24 | echo "$*" 25 | echo 26 | exit 1 27 | } 28 | 29 | # OS specific support (must be 'true' or 'false'). 30 | cygwin=false 31 | msys=false 32 | darwin=false 33 | case "`uname`" in 34 | CYGWIN* ) 35 | cygwin=true 36 | ;; 37 | Darwin* ) 38 | darwin=true 39 | ;; 40 | MINGW* ) 41 | msys=true 42 | ;; 43 | esac 44 | 45 | # Attempt to set APP_HOME 46 | # Resolve links: $0 may be a link 47 | PRG="$0" 48 | # Need this for relative symlinks. 49 | while [ -h "$PRG" ] ; do 50 | ls=`ls -ld "$PRG"` 51 | link=`expr "$ls" : '.*-> \(.*\)$'` 52 | if expr "$link" : '/.*' > /dev/null; then 53 | PRG="$link" 54 | else 55 | PRG=`dirname "$PRG"`"/$link" 56 | fi 57 | done 58 | SAVED="`pwd`" 59 | cd "`dirname \"$PRG\"`/" >/dev/null 60 | APP_HOME="`pwd -P`" 61 | cd "$SAVED" >/dev/null 62 | 63 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 64 | 65 | # Determine the Java command to use to start the JVM. 66 | if [ -n "$JAVA_HOME" ] ; then 67 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 68 | # IBM's JDK on AIX uses strange locations for the executables 69 | JAVACMD="$JAVA_HOME/jre/sh/java" 70 | else 71 | JAVACMD="$JAVA_HOME/bin/java" 72 | fi 73 | if [ ! -x "$JAVACMD" ] ; then 74 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 75 | 76 | Please set the JAVA_HOME variable in your environment to match the 77 | location of your Java installation." 78 | fi 79 | else 80 | JAVACMD="java" 81 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 82 | 83 | Please set the JAVA_HOME variable in your environment to match the 84 | location of your Java installation." 85 | fi 86 | 87 | # Increase the maximum file descriptors if we can. 88 | if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then 89 | MAX_FD_LIMIT=`ulimit -H -n` 90 | if [ $? -eq 0 ] ; then 91 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then 92 | MAX_FD="$MAX_FD_LIMIT" 93 | fi 94 | ulimit -n $MAX_FD 95 | if [ $? -ne 0 ] ; then 96 | warn "Could not set maximum file descriptor limit: $MAX_FD" 97 | fi 98 | else 99 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" 100 | fi 101 | fi 102 | 103 | # For Darwin, add options to specify how the application appears in the dock 104 | if $darwin; then 105 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" 106 | fi 107 | 108 | # For Cygwin, switch paths to Windows format before running java 109 | if $cygwin ; then 110 | APP_HOME=`cygpath --path --mixed "$APP_HOME"` 111 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` 112 | JAVACMD=`cygpath --unix "$JAVACMD"` 113 | 114 | # We build the pattern for arguments to be converted via cygpath 115 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` 116 | SEP="" 117 | for dir in $ROOTDIRSRAW ; do 118 | ROOTDIRS="$ROOTDIRS$SEP$dir" 119 | SEP="|" 120 | done 121 | OURCYGPATTERN="(^($ROOTDIRS))" 122 | # Add a user-defined pattern to the cygpath arguments 123 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then 124 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" 125 | fi 126 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 127 | i=0 128 | for arg in "$@" ; do 129 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` 130 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option 131 | 132 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition 133 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` 134 | else 135 | eval `echo args$i`="\"$arg\"" 136 | fi 137 | i=$((i+1)) 138 | done 139 | case $i in 140 | (0) set -- ;; 141 | (1) set -- "$args0" ;; 142 | (2) set -- "$args0" "$args1" ;; 143 | (3) set -- "$args0" "$args1" "$args2" ;; 144 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;; 145 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; 146 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; 147 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; 148 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; 149 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; 150 | esac 151 | fi 152 | 153 | # Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules 154 | function splitJvmOpts() { 155 | JVM_OPTS=("$@") 156 | } 157 | eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS 158 | JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" 159 | 160 | exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" 161 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /guest_science_library/build.gradle: -------------------------------------------------------------------------------- 1 | configurations.maybeCreate("default") 2 | artifacts.add("default", file('guest_science_library.aar')) -------------------------------------------------------------------------------- /guest_science_library/guest_science_library.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/guest_science_library/guest_science_library.aar -------------------------------------------------------------------------------- /kibo_rpc_api/build.gradle: -------------------------------------------------------------------------------- 1 | configurations.maybeCreate("default") 2 | artifacts.add("default", file('kibo_rpc_api-debug.aar')) -------------------------------------------------------------------------------- /kibo_rpc_api/kibo_rpc_api-debug.aar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/M-TRCH/1st-Kibo-RPC_won-spaceY/3bac5585261cea948b2c9b073cdebd9de8eb85bf/kibo_rpc_api/kibo_rpc_api-debug.aar -------------------------------------------------------------------------------- /local.properties: -------------------------------------------------------------------------------- 1 | ## This file must *NOT* be checked into Version Control Systems, 2 | # as it contains information specific to your local configuration. 3 | # 4 | # Location of the SDK. This is only used by Gradle. 5 | # For customization when using a Version Control System, please read the 6 | # header note. 7 | #Wed Jun 24 21:55:22 ICT 2020 8 | sdk.dir=/home/mteerachot/Android/Sdk 9 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':guest_science_library', ':kibo_rpc_api' 2 | --------------------------------------------------------------------------------