ROS2でAndroidを使う(FoxyではなくDashingを使う必要あり)→結果的にビルドできず

ここを参考にインストールを進めると、最後のColconのビルドで失敗する。
github.com

エラーメッセージを検索すると、Foxyではビルドできないらしい。
githubmemory.com

Dashingを入れ直すことに。

$ mkdir -p ~/ros2_dashing/src
$ cd ~/ros2_dashing
$ wget https://raw.githubusercontent.com/ros2/ros2/dashing/ros2.repos
$ vcs import src < ros2.repos
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro dashing -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 rti-connext-dds-5.3.1 urdfdom_headers"
$ cd ~/ros2_dashing/
$ colcon build --symlink-install

Ros2 Androidのインストール

 mkdir -p $HOME/ros2_android_ws/src
 cd $HOME/ros2_android_ws
 curl https://raw.githubusercontent.com/ros2-java/ros2_java/dashing/ros2_java_android.repos | vcs import src

~/.bashrc

 export PYTHON3_EXEC="$( which python3 )"
 export PYTHON3_LIBRARY="$( ${PYTHON3_EXEC} -c 'import os.path; from distutils import sysconfig; print(os.path.realpath(os.path.join(sysconfig.get_config_var("LIBPL"), sysconfig.get_config_var("LDLIBRARY"))))' )"
 export PYTHON3_INCLUDE_DIR="$( ${PYTHON3_EXEC} -c 'from distutils import sysconfig; print(sysconfig.get_config_var("INCLUDEPY"))' )"
 export ANDROID_ABI=armeabi-v7a
 export ANDROID_NATIVE_API_LEVEL=android-21
 export ANDROID_TOOLCHAIN_NAME=arm-linux-androideabi-clang
 colcon build \
   --packages-ignore cyclonedds rcl_logging_log4cxx rosidl_generator_py \
   --packages-up-to rcljava \
   --cmake-args \
   -DPYTHON_EXECUTABLE=${PYTHON3_EXEC} \
   -DPYTHON_LIBRARY=${PYTHON3_LIBRARY} \
   -DPYTHON_INCLUDE_DIR=${PYTHON3_INCLUDE_DIR} \
   -DCMAKE_TOOLCHAIN_FILE=${ANDROID_NDK}/build/cmake/android.toolchain.cmake \
   -DANDROID_FUNCTION_LEVEL_LINKING=OFF \
   -DANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL} \
   -DANDROID_TOOLCHAIN_NAME=${ANDROID_TOOLCHAIN_NAME} \
   -DANDROID_STL=c++_shared \
   -DANDROID_ABI=${ANDROID_ABI} \
   -DANDROID_NDK=${ANDROID_NDK} \
   -DTHIRDPARTY=ON \
   -DCOMPILE_EXAMPLES=OFF \
   -DCMAKE_FIND_ROOT_PATH="${PWD}/install"

インストールはできたけどサンプルアプリが動かない。
以下のレポジトリを試したらROS2でAndroidが動いた。
上記の環境のインストールは必要あったのか??
github.com
Youtubeでのチュートリアル
www.youtube.com
追記:上記のROS_2_ANDROIDAndroid上でROS2を動かしておらず、ホストPC上のUDPサーバ(ROS2へのブローカーサーバとして機能する)にPOSTしているだけだった。
これでも動くならいいんだけど、一度通信が途絶えると再接続できないなど、実践で使えるレベルではなかった。やはりROS2をネイティブでAndroidで動かしたい。

ROS2のサンプルがどうしてもできなかった。
原因は、サンプルが依存しているamentのGradleプラグインが古く(2017 Novで最終更新が止まっている)、DashingのColconで動かないこと。
github.com

しょうがないのでAndroidではROS1を使い、ESP32ではROS2を使うことにした。ros1bridgeで両者を中継する。