24 Commits

Author SHA1 Message Date
4bd1ba84c3 Merge branch 'develop' 2014-07-16 09:37:54 -04:30
019b42c738 Updated the version number. 2014-07-16 09:37:33 -04:30
30648b6df1 Merge branch 'develop' 2014-07-01 10:18:04 -04:30
d3c26c12b4 Updated version number. 2014-07-01 10:17:48 -04:30
915187816f Merge branch 'develop' 2014-06-26 18:33:30 -04:30
70e9111474 Added help icon. 2014-06-26 12:51:34 -04:30
7982e786e6 Updated the README file. Updated the application name. 2014-06-26 11:54:37 -04:30
96014b329d Updated the version number. 2014-06-26 10:57:04 -04:30
79fb40b8c9 Moved the heart sprite. 2014-06-26 09:45:25 -04:30
cc23a58866 Finally fixed the marker rotation problem. 2014-06-25 16:58:20 -04:30
8542ea8de5 Added bomb game summary graphics. 2014-06-25 16:10:42 -04:30
74b260a33e Fixed marker rotation bug. Added device orientation slider. 2014-06-20 11:31:09 -04:30
0d7df37f74 Added OUYA icon. Changed OpenCV library. Added labels. Changed robot arm model. 2014-06-19 18:30:08 -04:30
0eea7cc4d8 Added new assets. Updated version number. 2014-06-18 18:28:10 -04:30
2ab103016e Added new shaders. Enabled accelerometer and compass support. 2014-06-17 17:58:52 -04:30
f8743b9d97 Added control mode graphics. 2014-06-16 15:47:43 -04:30
97cdfa9838 Reduced robot arm size. 2014-06-11 17:29:06 -04:30
2f2051273d Added monkey model. Changed robot arm model. 2014-06-10 17:00:09 -04:30
257b470083 Added robot arm model. 2014-06-06 19:10:57 -04:30
e857052715 Fixed the collision model for the inclination bomb. 2014-06-05 18:47:10 -04:30
e2cba423e2 Added the combination bomb models. 2014-06-05 18:16:12 -04:30
296aa65c9a Added the inclination bomb related models. 2014-06-04 16:30:09 -04:30
d67397c1d3 Added collision models. 2014-06-03 18:50:36 -04:30
7d68f939e4 Shader now works on OUYA and Win7. Added some models. 2014-06-03 16:23:04 -04:30
62 changed files with 282 additions and 34 deletions

View File

@@ -16,8 +16,8 @@
--> -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="ve.ucv.ciens.ccg.nxtar" package="ve.ucv.ciens.ccg.nxtar"
android:versionCode="140527" android:versionCode="140716"
android:versionName="14.05.27" > android:versionName="14.07.16" >
<uses-sdk android:minSdkVersion="12" android:targetSdkVersion="19" /> <uses-sdk android:minSdkVersion="12" android:targetSdkVersion="19" />
@@ -32,7 +32,7 @@
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<application <application
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_nxtar_core_launcher"
android:label="@string/app_name" android:allowBackup="true"> android:label="@string/app_name" android:allowBackup="true">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"

View File

@@ -1,4 +1,43 @@
NxtAR-android NxtAR: A generic software architecture for Augmented Reality based mobile robot control.
============= ========================================================================================
Modulo 2 de mi trabajo especial de grado. Android backend module
----------------------
### Abstract ###
NxtAR is a generic software architecture for the development of Augmented Reality games
and applications centered around mobile robot control. This is a reference implementation
with support for [LEGO Mindstorms NXT][1] mobile robots.
### Module description ###
The Android backend module is a concrete [LibGDX][2] application that implements the operating
system dependent parts of the NxtAR reference implementation. It is based around the [OpenCV][3]
Computer Vision and Machine Learning library. Currently this module supports Android (>= 3.1)
devices though it has been tested only on Android (>= 4.0). The module includes direct support for
the [OUYA][4] gaming console and other devices using OUYA gamepads.
### Module installation and usage. ###
Install the NxtAR-core_XXXXXX.apk file on your device. To use you need additionally an Android (>= 3.0)
phone and a LEGO Mindstorms NXT robot with the [LejOS][5] firmware installed. The [NxtAR-cam][6] module must be
installed on the device and the [NxtAR-bot][7] module must be installed on the robot. Then, to start the compiled
scenario follow these steps:
* Start the NxtAR-core application.
* Start the NxtAR-bot program on the robot.
* Calibrate the robot's light sensor following the on-screen instructions.
* When the robot displays *"Waiting for connection"* start the NxtAR-cam application and connect it with the robot.
* Press the *"Start video streaming"* button on the NxtAR-cam application.
* Press the *"Calibrate camera"* button on the NxtAR-core application and point the camera of the device running NxtAR-cam to an OpenCV checkerboard camera calibration pattern.
The camera calibration step can be repeated if needed.
[1]: http://www.lego.com/en-us/mindstorms/?domainredir=mindstorms.lego.com
[2]: http://libgdx.badlogicgames.com/
[3]: http://opencv.org/
[4]: https://www.ouya.tv/
[5]: http://www.lejos.org/nxj.php
[6]: https://github.com/sagge-miky/NxtAR-cam
[7]: https://github.com/sagge-miky/NxtAR-bot

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
assets/data/gfx/gui/arm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,29 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D u_texture;
varying vec2 v_texCoords;
void main(){
vec4 texColor = texture2D(u_texture, v_texCoords);
if(texColor.a > 0.0)
texColor.a = 0.5;
gl_FragColor = texColor;
}

View File

@@ -0,0 +1,26 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
uniform mat4 u_projTrans;
attribute vec4 a_position;
attribute vec2 a_texCoord0;
varying vec2 v_texCoords;
void main(){
v_texCoords = a_texCoord0;
gl_Position = u_projTrans * a_position;
}

View File

@@ -1,3 +1,18 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifdef GL_ES #ifdef GL_ES
precision mediump float; precision mediump float;
#endif #endif

View File

@@ -1,3 +1,18 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
uniform mat4 u_projTrans; uniform mat4 u_projTrans;
attribute vec4 a_position; attribute vec4 a_position;

View File

@@ -80,17 +80,61 @@ void main(){
#ifdef SKINNING #ifdef SKINNING
// Do the skinning. // Do the skinning.
mat4 bones[4]; mat4 bones0;
bones[0] = u_bone0; mat4 bones1;
bones[1] = u_bone1; mat4 bones2;
bones[2] = u_bone2; mat4 bones3;
bones[3] = u_bone3; bones0 = u_bone0;
bones1 = u_bone1;
bones2 = u_bone2;
bones3 = u_bone3;
int index;
mat4 skinning = mat4(0.0); mat4 skinning = mat4(0.0);
skinning += (a_boneWeight0.y) * bones[int(a_boneWeight0.x)];
skinning += (a_boneWeight1.y) * bones[int(a_boneWeight1.x)]; index = int(a_boneWeight0.x);
skinning += (a_boneWeight2.y) * bones[int(a_boneWeight2.x)]; if(index == 0){
skinning += (a_boneWeight3.y) * bones[int(a_boneWeight3.x)]; skinning += (a_boneWeight0.y) * bones0;
}else if(index == 1){
skinning += (a_boneWeight0.y) * bones1;
}else if(index == 2){
skinning += (a_boneWeight0.y) * bones2;
}else if(index == 3){
skinning += (a_boneWeight0.y) * bones3;
}
index = int(a_boneWeight1.x);
if(index == 0){
skinning += (a_boneWeight1.y) * bones0;
}else if(index == 1){
skinning += (a_boneWeight1.y) * bones1;
}else if(index == 2){
skinning += (a_boneWeight1.y) * bones2;
}else if(index == 3){
skinning += (a_boneWeight1.y) * bones3;
}
index = int(a_boneWeight2.x);
if(index == 0){
skinning += (a_boneWeight2.y) * bones0;
}else if(index == 1){
skinning += (a_boneWeight2.y) * bones1;
}else if(index == 2){
skinning += (a_boneWeight2.y) * bones2;
}else if(index == 3){
skinning += (a_boneWeight2.y) * bones3;
}
index = int(a_boneWeight3.x);
if(index == 0){
skinning += (a_boneWeight3.y) * bones0;
}else if(index == 1){
skinning += (a_boneWeight3.y) * bones1;
}else if(index == 2){
skinning += (a_boneWeight3.y) * bones2;
}else if(index == 3){
skinning += (a_boneWeight3.y) * bones3;
}
// Transform the model. // Transform the model.
transformedPosition = u_geomTrans * skinning * a_position; transformedPosition = u_geomTrans * skinning * a_position;

View File

@@ -0,0 +1,27 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifdef GL_ES
precision mediump float;
#endif
uniform sampler2D u_texture;
uniform vec2 u_scaling;
varying vec2 v_texCoords;
void main(){
gl_FragColor = texture2D(u_texture, v_texCoords * u_scaling);
}

View File

@@ -0,0 +1,27 @@
/*
* Copyright (C) 2014 Miguel Angel Astor Romero
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
uniform mat4 u_projTrans;
uniform float u_displacement;
attribute vec4 a_position;
attribute vec2 a_texCoord0;
varying vec2 v_texCoords;
void main(){
v_texCoords = a_texCoord0 + u_displacement;
gl_Position = u_projTrans * a_position;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@@ -5,7 +5,6 @@ include $(CLEAR_VARS)
OPENCV_CAMERA_MODULES:=off OPENCV_CAMERA_MODULES:=off
OPENCV_LIB_TYPE:=STATIC #SHARED OPENCV_LIB_TYPE:=STATIC #SHARED
include C:\Users\miguel.astor\Documents\OpenCV-2.4.8-android-sdk\sdk\native\jni\OpenCV.mk include C:\Users\miguel.astor\Documents\OpenCV-2.4.8-android-sdk\sdk\native\jni\OpenCV.mk
#include C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\jni\OpenCV-tegra3.mk
LOCAL_MODULE := cvproc LOCAL_MODULE := cvproc
LOCAL_SRC_FILES := cv_proc.cpp marker.cpp LOCAL_SRC_FILES := cv_proc.cpp marker.cpp
@@ -31,62 +30,62 @@ include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_java LOCAL_MODULE := ocv_tegra_java
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libopencv_java.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libopencv_java.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_info LOCAL_MODULE := ocv_tegra_info
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libopencv_info.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libopencv_info.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_220 LOCAL_MODULE := ocv_tegra_native_camera_220
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r2.2.0.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r2.2.0.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_233 LOCAL_MODULE := ocv_tegra_native_camera_233
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r2.3.3.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r2.3.3.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_301 LOCAL_MODULE := ocv_tegra_native_camera_301
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r3.0.1.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r3.0.1.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_400 LOCAL_MODULE := ocv_tegra_native_camera_400
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r4.0.0.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r4.0.0.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_403 LOCAL_MODULE := ocv_tegra_native_camera_403
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r4.0.3.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r4.0.3.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_411 LOCAL_MODULE := ocv_tegra_native_camera_411
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r4.1.1.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r4.1.1.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_MODULE := ocv_tegra_native_camera_420 LOCAL_MODULE := ocv_tegra_native_camera_420
LOCAL_SRC_FILES := C:\NVPACK\OpenCV-2.4.5-Tegra-sdk-r2\sdk\native\libs\tegra3\libnative_camera_r4.2.0.so LOCAL_SRC_FILES := C:\\Users\\miguel.astor\\Documents\\OpenCV-2.4.8-android-sdk\\sdk\\native\\libs\\armeabi-v7a\\libnative_camera_r4.2.0.so
include $(PREBUILT_SHARED_LIBRARY) include $(PREBUILT_SHARED_LIBRARY)

View File

@@ -77,7 +77,7 @@ int hammDistMarker(cv::Mat);
cv::Mat rotate(cv::Mat); cv::Mat rotate(cv::Mat);
int decodeMarker(cv::Mat &); int decodeMarker(cv::Mat &, int &);
void renderMarkers(markers_vector &, cv::Mat &); void renderMarkers(markers_vector &, cv::Mat &);
@@ -92,9 +92,11 @@ void warpMarker(Marker &, cv::Mat &, cv::Mat &);
******************************************************************************/ ******************************************************************************/
void getAllMarkers(markers_vector & valid_markers, cv::Mat & img){ void getAllMarkers(markers_vector & valid_markers, cv::Mat & img){
int rotations = 0;
cv::Mat gray, thresh, cont, mark; cv::Mat gray, thresh, cont, mark;
contours_vector contours; contours_vector contours;
markers_vector markers; markers_vector markers;
cv::Point2f point;
#ifdef DESKTOP #ifdef DESKTOP
std::ostringstream oss; std::ostringstream oss;
#endif #endif
@@ -116,10 +118,32 @@ void getAllMarkers(markers_vector & valid_markers, cv::Mat & img){
for(int i = 0; i < markers.size(); i++){ for(int i = 0; i < markers.size(); i++){
warpMarker(markers[i], gray, mark); warpMarker(markers[i], gray, mark);
int code = decodeMarker(mark); int code = decodeMarker(mark, rotations);
if(code != -1){ if(code != -1){
markers[i].code = code; markers[i].code = code;
// If the decoder detected the marker is rotated then reorder the points
// so that the orientation calculations always use the correct top of the marker.
if(rotations > 0){
while(rotations > 0){
for(int r = 0; r < 1; r++){
point = markers[i].points.at(markers[i].points.size() - 1);
markers[i].points.pop_back();
markers[i].points.insert(markers[i].points.begin(), point);
}
rotations--;
}
}
// Rotate 180 degrees.
for(int r = 0; r < 2; r++){
point = markers[i].points.at(markers[i].points.size() - 1);
markers[i].points.pop_back();
markers[i].points.insert(markers[i].points.begin(), point);
}
valid_markers.push_back(markers[i]); valid_markers.push_back(markers[i]);
} }
} }
@@ -434,11 +458,13 @@ cv::Mat rotate(cv::Mat in){
* Decode a marker image and return it's code. Returns -1 if the image is * Decode a marker image and return it's code. Returns -1 if the image is
* not a valid marker. * not a valid marker.
*/ */
int decodeMarker(cv::Mat & marker){ int decodeMarker(cv::Mat & marker, int & rotations){
bool found = false; bool found = false;
int code = 0; int code = 0;
cv::Mat bits; cv::Mat bits;
rotations = 0;
// Verify that the outer rim of marker cells are all black. // Verify that the outer rim of marker cells are all black.
for(int y = 0; y < 7; y++){ for(int y = 0; y < 7; y++){
int inc = (y == 0 || y == 6) ? 1 : 6; int inc = (y == 0 || y == 6) ? 1 : 6;
@@ -478,6 +504,7 @@ int decodeMarker(cv::Mat & marker){
if(hammDistMarker(bits) != 0){ if(hammDistMarker(bits) != 0){
for(int r = 1; r < 4; r++){ for(int r = 1; r < 4; r++){
bits = rotate(bits); bits = rotate(bits);
rotations++;
if(hammDistMarker(bits) != 0) continue; if(hammDistMarker(bits) != 0) continue;
else{ found = true; break;} else{ found = true; break;}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
--> -->
<resources> <resources>
<string name="app_name">NxtAR</string> <string name="app_name">NxtAR-core</string>
<string name="ocv_failed">No se pudo inicializar OpenCV</string> <string name="ocv_failed">Error al inicializar OpenCV</string>
<string name="ocv_success">OpenCV inicializado con exito</string> <string name="ocv_success">OpenCV inicializado con éxito</string>
</resources> </resources>

View File

@@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
--> -->
<resources> <resources>
<string name="app_name">NxtAR</string> <string name="app_name">NxtAR-core</string>
<string name="ocv_failed">Failed to initialize OpenCV</string> <string name="ocv_failed">Failed to initialize OpenCV</string>
<string name="ocv_success">OpenCV initialized successfully</string> <string name="ocv_success">OpenCV initialized successfully</string>
</resources> </resources>

View File

@@ -231,8 +231,8 @@ public class MainActivity extends AndroidApplication implements ActionResolver,
// Configure LibGDX. // Configure LibGDX.
AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration(); AndroidApplicationConfiguration cfg = new AndroidApplicationConfiguration();
cfg.useAccelerometer = false; cfg.useAccelerometer = true;
cfg.useCompass = false; cfg.useCompass = true;
cfg.useWakelock = true; cfg.useWakelock = true;
// Launch the LibGDX core game class. // Launch the LibGDX core game class.