ROS學習筆記之——ROSAndroid 與 rosjava

2020-10-04 11:00:18

之前部落格已經介紹過一些在ROS系統上的Android環境的設定及專案的搭建。《ROS學習筆記之——基於ROS的Android開發》《基於linux系統安裝Android Studio》本博文來學習一下其整體框架

 

目錄

ROS Android

概述

ROSJAVA

概述

rosjava的構建環境

java

Gradle

Maven

Catkin

rosjava_core

Ros Android 應用

RosActivity

Android Interactions(互動)

Android Pairings(配對)

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

http://wiki.ros.org/rosjava

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)