伽利略导航系统整体分为以下几个部分
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为机器人充电。机器人收到请求后会按照之前设置的位置信息自动充电。
所有的请求在参数中都有token, token用于对请求者进行合法性验证。
API的格式为API版本号加上对应的URL,以获取系统状态API为例,实际请求地址为/v1/system/status。API返回值都是json格式的数据。
1. 获取token
URL: http://center.bwbot.org/api/v1/token
请求方式: GET
请求参数:
参数 |
类型 |
说明 |
username |
string |
用户名 |
password |
string |
密码 |
device_id |
string |
设备id |
返回参数:
参数 |
类型 |
说明 |
token |
string |
api token 用于验证是不是合法的请求者 |
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 |
是否设置成功的状态 |
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. 暂停导航
说明:接收请求后机器人停止移动同时保存下一个目标点,包括x、y像素坐标、角度和停留时间,此时系统仍处于Navigating状态。
URL: /navigation/pause
请求方式: GET
请求参数
参数 |
类型 |
说明 |
token |
string |
api token 用于验证是不是合法的请求者 |
返回参数
参数 |
类型 |
说明 |
result |
bool |
执行结果 |
9. 继续导航
说明:接收请求后机器人继续移动到下一个目标站点
URL:/navigation/resume
请求方式:GET
请求参数
参数 |
类型 |
说明 |
token |
string |
api token 用于验证是不是合法的请求者 |
返回参数
参数 |
类型 |
说明 |
result |
bool |
执行结果 |
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 |
执行结果 |