伽利略导航系统概述

伽利略导航系统整体分为以下几个部分

1.    核心API部分

核心API对系统的其他部分进行管理,用户通过调用核心API对机器人进行控制

2.    建立地图和导航程序

导航算法实现创建地图和定位功能。不同导航算法通过暴露相同的接口供核心API和路径规划算法调用

3.    路径规划和运动控制程序

路径规划程序根据目标点和现有路径信息计算出机器人的运动路线,同时根据导航程序提供的位置信息进行运动控制。

基本应用场景

下面以工业AGV作为应用场景介绍伽利略导航系统的使用方法。工业AGV的基本功能是按照特定的路线运动。在到达对应的位置时,停下装货。装货完成后,机器人继续按照给定路线运动至下一个目标点进行卸货。伽利略导航系统的使用流程如下。

1.    绘制地图

调用 启动建图API,等待建图程序启动。启动成功后系统处于Mapping状态。通过遥控控制机器人在目标环境中运动和建立地图。建立的地图可以通过 获取当前地图API 来获取。地图绘制完成后调用保存地图API

2.    标记AVG运行路线和目标点位置

地图绘制完成之后可以得到建立的地图图片。根据图片绘制对应的osm路径文件。路径文件内包含可能运动的路线。

3.    运行导航程序,控制AVG按照目标路线运动

调用启动导航API ,等待系统进入Navigating状态。调用设置目标点API ,系统根据小车当前位置和目标点位置自动计算出机器人的运动路线。机器人在导航程序控制下向目标点运动。

4.    自动充电过程

电池的电量信息可以通过系统信息API获取,当电池电量过低时可以通过调用自动充电API为机器人充电。机器人收到请求后会按照之前设置的位置信息自动充电。

 

API基本格式

所有的请求在参数中都有token, token用于对请求者进行合法性验证。

API的格式为API版本号加上对应的URL,以获取系统状态API为例,实际请求地址为/v1/system/statusAPI返回值都是json格式的数据。

1.    获取token

URL: http://center.bwbot.org/api/v1/token

请求方式: GET

请求参数:

参数

类型

说明

username

string

用户名

password

string

密码

device_id

string

设备id

 

返回参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

系统状态API

1.    获取系统当先状态

URL: /system/status

请求方式: GET

 

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

status

string

状态string,可能的值为 Mapping, Navigating, Busy, Free, Charging

 

补充说明:系统可能处在互斥的几种状态中。通过不同的操作API系统在不同的状态间切换。只有在特定的状态下系统才能执行特定的API

 

2.    获取系统基本信息

URL: /system/info

请求方式: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

battery

int

电池电量百分百

camera_rgb

int

rgb摄像头topic发布频率,0代表没有数据

camera_depth

int

深度摄像头topic发布频率,0代表没有数据

odom

int

编码器topic发布频率,0代表没有数据

imu

int

IMU topic的发布频率,0代表没有数据

 

3.    获取rgb摄像头原始图像

URL: /system/camera_rgb

请求方式: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数:

参数

类型

说明

视频流

返回rgb摄像头视频流信息

 

4.    获取rgb摄像头处理后图像

URL: /system/camera_rgb_processed

请求方式: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

视频流

返回经过处理的rgb摄像头视频流信息

 

 

5.    获取系统日志

URL: /system/log

请求方法: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

log

string

系统日志信息

 

 

6.    获取机器人当前的速度和角速度

URL/system/speed

请求方式: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

speed_x

float

机器人本体坐标系x方向运动速度

speed_y

float

机器人本体坐标系y方向运动速度

speed_angle

float

机器人本体坐标系的角速度

 

 

7.    设置机器人当前的速度和角速度

URL/system/speed

请求方式: PUT

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

speed_x

float

机器人本体坐标系x方向速度

speed_y

float

机器人本体坐标系y方向速度

speed_angle

float

机器人本体坐标系的角速度

 

返回参数

参数

类型

说明

result

bool

是否设置成功的状态

 

 

建立地图API

1.    启动建图线程

说明: 接收到启动命令后系统会处于Busy状态,线程启动成功后系统进入Mapping状态。

URL: /map/start

请求方式:GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

launch

string

启动launch文件的路径

 

 

返回参数

参数

类型

说明

result

bool

设置launch文件的结果

 

 

2.    结束建图线程

说明:接收到结束命令进入Busy状态。后先自动保存地图,然后开始关闭建图线程,线程关闭后系统进入Free状态。

URL: /map/stop

请求方式: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

result

bool

设置结束建图线程的结果

 

 

3.    获取当前正在建立的地图

URL: /map/current_map_image

请求方法: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

 

 

返回参数

参数

类型

说明

map_image

pgm文件

当前正在建立的地图的图片文件

map_paras

yaml文件

地图图片参数

 

 

4.    保存当前正在创建的地图

URL/map/current_map_image

请求方法: POST

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

name

string

地图文件名称

 

返回参数

参数

类型

说明

result

bool

是否保存成功的状态

name

string

保存的地图文件名称

 

 

5.    获取机器人当前位置和姿态

URL: /map/pose

请求方法: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数:

参数

类型

说明

x

float

机器人位置的X坐标

y

float

机器人位置的Y坐标

angle

float

机器人的角度

 

6.    获取机器人的移动轨迹点

URL /map/track

请求方法: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

trajectory

file

机器人运动的轨迹点列表osm 文件

 

7.    获取地图图片

URL/map/image

请求方法: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

name

string

可选,如果有此参数则只返回这个名字的地图图片

 

 

返回参数

参数

类型

说明

maps

 

list of maps

所有地图的列表,如果请求参数中有name参数,则只返回一个名字为name参数的地图

 

 

 

8.    重命名地图图片文件

URL/map/map_image

请求方式:PUT

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

name

string

原图片文件名称

new_name

string

新图片文件名称

 

返回参数

参数

类型

说明

result

bool

执行结果

name

string

新地图图片文件名称

 

 

 

9.    获取当前地图的路径文件

URL /map/current_path

请求方式: GET

 

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

file

返回当前osm格式的地图路径文件。一个地图路径文件中可以有多条路径,地图路径文件和地图图片文件具有相同的名字

 

 

10.  上传地图路径文件

URL/map/map_path

请求方式: POST

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

name

string

地图文件名称

path

file

地图路径osm文件内容

 

返回参数

参数

类型

说明

result

bool

文件是否上传成功

 

 

11.  获取当前地图目标点列表

URL /map/current_target_points

请求方式: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数:

参数

类型

说明

target_points

file

当前地图目标点列表osm 文件

 

 

导航部分

系统处于Navigating状态下才可能执行下面的API

1.    启动巡检线程

说明: 接收到启动命令后系统会处于Busy状态,线程启动成功后系统进入Navigating状态。启动命令参数中包含导航地图文件名字。

URL /navigation/start

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

launch

string

巡检配置的launch文件

map

string

巡检地图名字

 

返回参数

参数

类型

说明

result

bool

启动巡检后的结果

 

2.    结束巡检线程

说明: 结束导航巡检线程,接收到结束命令后系统会开始关闭导航巡检线程,线程关闭后系统进入Free状态。

URL: /navigation/stop

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

result

bool

结束巡检的结果

 

3.    获取机器人当前位置姿态

URL /navigation/pose

请求方法: GET

请求参数:

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

x

float

机器人位置的X坐标

y

float

机器人位置的Y坐标

angle

float

机器人的角度

 

4.    设置下一个目标点

URL /navigation/target_point

请求方法: POST

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

x

float

目标点x坐标

y

float

目标点y坐标

angle

float

目标点角度

 

返回参数:

参数

类型

说明

result

bool

设置结果

 

 

5.    设置目标点列表

说明:设置指定站点文件为机器人移动目标点集,设置完成后机器人会依次遍历目标点,遍历完成后自动进行下一轮循环。

URL/navigation/target_points

请求方法:POST

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

target_points

file

目标点集osm文件

 

 

返回参数

参数

类型

说明

result

bool

设置结果

 

6.    获取机器人当前位置到目标点的路径

URL: /navigation/current_path

请求方法: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

path

file

从当前点到下一个目标点的地图路径osm文件

 

7.    获取机器人当前位置到下一个目标点的距离

URL /navigation/target_distance

请求方式: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

distance

float

当前位置距离目标点的距离,0为已到达目标点

 

8.    暂停导航

说明:接收请求后机器人停止移动同时保存下一个目标点,包括xy像素坐标、角度和停留时间,此时系统仍处于Navigating状态。

URL /navigation/pause

请求方式: GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

result

bool

执行结果

 

9.    继续导航

说明:接收请求后机器人继续移动到下一个目标站点

URL/navigation/resume

请求方式:GET

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数

参数

类型

说明

result

bool

执行结果

 

 

自动充电API相关

1.    启动自动充电线程

说明: 接收到启动命令后系统会处于Busy状态,线程启动成功后系统进入Charging状态

URL/recharge/start

请求方式:GET

 

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

launch

string

启动自动充电线程的launch文件

 

返回参数

参数

类型

说明

result

bool

执行结果

 

 

2.    结束充电线程

说明:接收到结束命令后系统会开始关闭充电线程,线程关闭后系统进入Free状态。

URL/recharge/stop

请求方式:GET

 

请求参数

参数

类型

说明

token

string

api token 用于验证是不是合法的请求者

 

返回参数:

参数

类型

说明

result

bool

执行结果