之前博客已经介绍过一些在ROS系统上的Android环境的配置及项目的搭建。《ROS学习笔记之——基于ROS的Android开发》《基于linux系统安装Android Studio》本博文来学习一下其整体框架
目录
Using native ROS code on Android
ROS Android
Android的代码是基于rosjava客户端和核心库,准备与androidstudio和Google支持的androidgradle插件无缝协作
android项目的官方源代码可以在github(https://github.com/rosjava)上找到
概述
在ROS Android开发时应该注意:
- 避免在本地编译你的项目需要的每个依赖
- 将堆栈添加到工作区,用一个调用以正确的顺序编译所有内容(即注意堆栈间的依赖关系)
- 兼容的命令行和IDE工作流
ROS Android的依赖图如下图所示
- android_core - Damon Kohler的android开发的核心库。
- android_extras - 各种额外功能(例如hokuyo、qrcodes)
- android_apps - 机器人应用程序管理的开发库和应用程序(turtlebot)
- android_remocons - 机器人的远程控制客户端
ROSJAVA
rosjava类似roscpp或rospy一样。为ros通信提供了一个客户端库(采用java语言),以及不断增长的核心工具
rosjava的核心项目可以见:https://github.com/rosjava
Rosjava主要用于构建Android应用程序。
概述
rosjava的目标是:
- 为ros人员提供一种构建、打包和使用rosjava包的方法,将rosjava与其他ros工具集成(如roslaunch等)。
- 也为非ros的人提供了一种方法,只需将rosjava二进制文件链接到ros机器人上。他们不需要去ros构建环境——让他们可以直接访问maven存储库。
rosjava的构建环境
java
目前Java支持是针对ros ubuntu平台上的openjdk。但它也同样可以工作在其他java实现上,没有什么不一样的地方
Gradle
Gradle是用于管理单个和多个java项目构建的工具(类似于c++中的CMake)它提供了一种强大的脚本语言以及对各种模块和扩展的插件支持.
Gradle对rosjava构建的范围扩展到了堆栈概念。它通常控制几个相关软件包的编译和组装。
Maven
maven 用于存储gradle构建的二进制结果,也用于处理系统依赖关系(又称rosdeps)
它是一个完全跨平台的解决方案,允许您检索和部署java依赖项。
Catkin
我们很少使用Catkin。它的任务是提供ros包信息, 成为跨多个存储库构建序列的粘合剂,可能由不同的人维护。
rosjava_core
(http://rosjava.github.io/rosjava_core/hydro/index.html)
rosjava_core是ROS的纯Java实现.它提供了一个客户端库,使Java程序员能够快速地与ROS的topic、services和Parameters交互。也提供了roscore的Java实现
Ros Android 应用
RosActivity
在RosActivity类的基础上构建android应用程序。
robot_activity功能包的介绍(http://wiki.ros.org/robot_activity).是一个ROS的包,实现了节点生命周期。这个想法是,当一个新的ROS节点时,你不必编写大量的 bolier-plate代码在C++中
Android Interactions(交互)
让你的android应用程序与安装机器人进行有效的交互。
Android应用程序比pc和ssh隧道更容易让用户(甚至开发者)使用他们的机器人.
Android Pairings(配对)
Simultaneously bring up & tear down an android listener/robot talker pair.
Using native ROS code on Android
http://wiki.ros.org/android_ndk
参考资料
http://wiki.ros.org/android_core
https://github.com/rosjava/rosjava_mvn_repo(半官方包)
https://github.com/turtlebot/turtlebot_android(simple apps for turtlebot development.)
https://github.com/ekumenlabs/base_controller(Android controllers for the Kobuki and the Husky robots.)
http://wiki.ros.org/rosjava/Tutorials/kinetic/No%20Ros%20Installation(没有ros的情况下,用Android配置ros的app)
https://index.ros.org/doc/ros2/(ROS2)
https://www.cnblogs.com/hiram-zhang/p/10410171.html(Android手机端与robot端ROS网络通信)
http://wiki.ros.org/ApplicationsPlatform/Clients/Android/Tutorials/Getting%20Started(Building A ROS Android App)