【自己动手做一台SLAM导航机器人】附录A:用于ROS机器人交互的Android手机APP开发

本专栏目录
前言
第一章:Linux基础
第二章:ROS入门
第三章:感知与大脑
第四章:差分底盘设计
第五章:树莓派3开发环境搭建
第六章:SLAM建图与自主避障导航
第七章:语音交互与自然语言处理
附录A:用于ROS机器人交互的Android手机APP开发
附录B:用于ROS机器人管理调度的后台服务器搭建
附录C:如何选择ROS机器人平台进行SLAM导航入门
视频教程
https://www.bilibili.com/video/BV1jS4y1a7Lz
Android要与ROS通讯,一种是基于rosbridge,另一种是基于rosjava库。
Rosbridge
rosjava

下面这本书是本篇文章的参考文献,大家有需要可以入手一本:


1.相关参考例子工程
(1)rosbridge
rosbridge例子:
https://github.com/hibernate2011/RosClient
rosbridge(rosbridge_suite)是ros官方为开发者提供的一个用于非ros系统和ros系统进行交互通信的功能包。包括话题的订阅,消息的发布,服务的调用,参数的设置和获取,图片信息的传递等等,都是JSON格式的字符串。获取JSON字符串并将命令发送到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导入工程编译运行

(2)启动登入界面
保证手机跟Raspberry Pi 3连接同一个网络,通过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可以发出cmd_vel topic控制小车移动
Camera View与Map View可以相互切换
miiboo.apk是由android_apps-kinetic和android_core-kinetic改造而来,基于rosjava库,在原有控制移动、小车位置设定,导航目标设定及路径显示等功能基础上集成了自动获取IP、启动保存建图和代价地图显示选择功能。
3.miiboo.apk运用介绍
主界面:

进入建图模式:

图层显示选择:


后记
为了防止后续大家找不到本篇文章,我同步制作了一份文章的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
技术交流
QQ技术交流群:117698356
参考文献
[1] 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.
