Notes about ROS on Android

Post date: Jun 06, 2017 1:14:44 PM

The tutorial on the robot operating system (ROS) is given by O'Kane, J. M. (2014). A gentle introduction to ROS.

Ros catkin workspace

+ http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment

+ Must source ws/devel/setup.bash, to verify workspace setup: echo $ROS_PACKAGE_PATH

RosJava:

+ http://wiki.ros.org/rosjava

+ http://rosjava.github.io/rosjava_core/latest/index.html

+ To avoid having genjava run in your non-java source workspaces, use the ROS_LANG_DISABLE environment variable, i.e. to genjava http://wiki.ros.org/rosjava/Tutorials/indigo/RosJava%20Message%20Artifacts

RosAndroid: http://wiki.ros.org/android

Cross-compile ROS packages for Android:

+ http://wiki.ros.org/android_ndk/Tutorials/BuildingNativeROSPackages

+ http://wiki.ros.org/android_ndk/Tutorials/How%20to%20cross-compile%20any%20ROS%20package

Android Gradle+CMake/ndkBuild:

+ https://developer.android.com/studio/build/index.html#build-files

+ https://developer.android.com/studio/projects/add-native-code.html#link-gradle

+ https://developer.android.com/ndk/guides/cmake.html

Android JNI syntax & FAQs:

+ https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

+ http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/method.html

+ native-lib must be SHARED, not STATIC https://stackoverflow.com/questions/25862197/importing-static-library-in-to-android-project

+ import-lib must use absolute path https://stackoverflow.com/questions/41478323/cmakemissing-and-no-known-rule-to-make-it-when-i-import-a-prebuilt-library

+ JNI function name must match its package. For C++, must be wrapped by extern "C"

+ crash on System.loadLibrary() => segfault in constructors https://stackoverflow.com/questions/17883185/android-ndk-call-to-system-loadlibrary-results-in-sigsegv-code-1

+ In (static) library linking, the order matters! The library that needs symbols must be first, then the library that resolves the symbol. https://stackoverflow.com/questions/45135/why-does-the-order-in-which-libraries-are-linked-sometimes-cause-errors-in-gcc