This is an Android project to control Loomo according to commands recieved from a ROS2 topic.
The project is based on these two projects:
You can download and install the latest apk release to Loomo and make changes to params.yaml for further configuration. See Configuration below for details on configuring.
To build the project locally continue with the below steps.
This project uses rcl java client build from rclcpp. The .*.jar files coming from there are already included under /app/libs however the native *.so are too large. So you should either
- Build them from scratch following https://github.com/Roboy/ros2-android-build
- Or download from a large dependency release named like
vX.Y.Z-so_filesand copy the folder to respectivejniLibs/<android-processor-architecture>place. e.g.jniLibs/x86_64for Loomo
WATCH OUT
As ros2-java README points out:
Make sure to use Fast-RTPS as your DDS vendor and at least this revision.
So add the snippet below in your
~/.bashrcfile# This ros2 middleware implementation is a must-have for compliance with the ros2-java client export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
You can install, run and debug like a usual Android project via Android Stuido or adb cli tool.
As with ros1 android loomo controller this project is configured with params.yaml file too. So make sure the params.yaml file located at the root directory of the repo is also on the Loomo at /sdcard/params.yaml. This can be done by running:
adb push params.yaml /sdcard/
From a computer connected to the same wifi as Loomo, after setting up ros2, publish geometry Twist messages to the topic Loomo node listening on like:
ros2 topic pub -r 10 /LO01/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}"
The x component of the linear is the linear velocity of the Loomo. The z component of the angular is the angular velocity of the Loomo.