【自己動手做一臺SLAM導(dǎo)航機器人】附錄A:用于ROS機器人交互的Android手機APP開發(fā)

本專欄目錄
前言
第一章:Linux基礎(chǔ)
第二章:ROS入門
第三章:感知與大腦
第四章:差分底盤設(shè)計
第五章:樹莓派3開發(fā)環(huán)境搭建
第六章:SLAM建圖與自主避障導(dǎo)航
第七章:語音交互與自然語言處理
附錄A:用于ROS機器人交互的Android手機APP開發(fā)
附錄B:用于ROS機器人管理調(diào)度的后臺服務(wù)器搭建
附錄C:如何選擇ROS機器人平臺進行SLAM導(dǎo)航入門
視頻教程
https://www.bilibili.com/video/BV1jS4y1a7Lz
Android要與ROS通訊,一種是基于rosbridge,另一種是基于rosjava庫。
Rosbridge
rosjava

下面這本書是本篇文章的參考文獻,大家有需要可以入手一本:


1.相關(guān)參考例子工程
(1)rosbridge
rosbridge例子:
https://github.com/hibernate2011/RosClient
?
rosbridge(rosbridge_suite)是ros官方為開發(fā)者提供的一個用于非ros系統(tǒng)和ros系統(tǒng)進行交互通信的功能包。包括話題的訂閱,消息的發(fā)布,服務(wù)的調(diào)用,參數(shù)的設(shè)置和獲取,圖片信息的傳遞等等,都是JSON格式的字符串。獲取JSON字符串并將命令發(fā)送到ros,反之亦然。
(2)rosjava
rosjava例子:
https://github.com/rosjava/android_apps
https://github.com/rosjava/android_core
rosjava庫,這玩意兒類似于ROS官方支持的rospy roscpp等,也是ROS分布式計算平臺的一種language binding。
2.rosjava使用舉例
以android_apps-kinetic為例,首先下載android_apps-kinetic工程(https://github.com/rosjava/android_apps)。

(1)Android Studio導(dǎo)入工程編譯運行

(2)啟動登入界面
保證手機跟Raspberry Pi 3連接同一個網(wǎng)絡(luò),通過PC 獲取Raspberry Pi 3的IP=XXX.XXX.XXX.XXX。修改Master URI選擇roscore的URI 點擊CONNECT。

(3)主界面

Set Pose在地圖長按 相當于Rviz中的 2D Pose Estimate
Set Goal在地圖長按 相當于Rviz中的 2D Nav Goal
左下角Joystick可以發(fā)出cmd_vel topic控制小車移動
Camera View與Map View可以相互切換
miiboo.apk是由android_apps-kinetic和android_core-kinetic改造而來,基于rosjava庫,在原有控制移動、小車位置設(shè)定,導(dǎo)航目標設(shè)定及路徑顯示等功能基礎(chǔ)上集成了自動獲取IP、啟動保存建圖和代價地圖顯示選擇功能。
3.miiboo.apk運用介紹
主界面:

進入建圖模式:

圖層顯示選擇:


后記
為了防止后續(xù)大家找不到本篇文章,我同步制作了一份文章的pdf和本專欄涉及的例程代碼放在github和gitee方便大家下載,如果下面給出的github下載鏈接打不開,可以嘗試gitee下載鏈接:
github下載鏈接:https://github.com/xiihoo/DIY_A_SLAM_Navigation_Robot
gitee下載鏈接:https://gitee.com/xiihoo-robot/DIY_A_SLAM_Navigation_Robot
技術(shù)交流
QQ技術(shù)交流群:117698356
參考文獻
[1] 張虎,機器人SLAM導(dǎo)航核心技術(shù)與實戰(zhàn)[M]. 機械工業(yè)出版社,2022.
