结束论文
基于边缘计算的智能网联机器人系统-可视化模块的设计与实现
需求
用户注册与登录,安全验证
用户操作可视化,弹窗列表显示最近几条,查询记录在新视图
机器人可视化展示,遥控器,支持键盘,图像流,速度显示,速度设置
ui设计美观,可用性强,可理解性强
人机交互和软工2要在看看!!!
架构设计
好几个微服务加一起
问题是,这还叫可视化吗,写架构要把edgex的服务也写进来,因此还要先搞懂edgex!!!
测试
简单的增删改查测试,部署docker测试,服务器测试
接口调用测试文档
在正式开发前,根据后端定义的网联机器人系统的API进行测试,旨在检测各个接口的数据访问和操作功能。方便在后期设计UI时,根据本文档定义的规范来进行后端接口调用。
发布启动命令
请求方法:PUT
请求URL:
/api/v2/device/name/{deviceName}/run
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
| —— | —— | ———— | ———— | ——— |
| run | Bool | 是 | 是否运动 | true |测试请求:
1
2
3curl localhost:59882/api/v2/device/name/device1/run \
-H "Content-Type:application/json" -X PUT \
-d '{"run":true}'响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ————— | ——— | ————— | ——— |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |测试成功示例响应:
1
2
3
4{
"apiVersion":"v2",
"statusCode":200
}
发布停止命令
请求方法:PUT
请求URL:
/api/v2/device/name/{deviceName}/stop
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
| —— | —— | ———— | ———— | ——— |
| stop | Bool | 是 | 是否停止 | true |测试请求:
1
2
3curl localhost:59882/api/v2/device/name/device1/stop \
-H "Content-Type:application/json" -X PUT \
-d '{"stop":true}'响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ————— | ——— | ————— | ——— |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |测试成功示例响应:
1
2
3
4{
"apiVersion":"v2",
"statusCode":200
}
发布速度设置命令
请求方法:PUT
请求URL:
/api/v2/device/name/{deviceName}/velocity
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
| ———— | ——- | ———— | ——— | ——— |
| velocity | Float | 是 | 速度值 | 0.1 |测试请求:
1
2
3curl localhost:59882/api/v2/device/name/device1/velocity \
-H "Content-Type:application/json" -X PUT \
-d '{"velocity":0.1}'响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ————— | ——— | ————— | ——— |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |测试成功示例响应:
1
2
3
4{
"apiVersion":"v2",
"statusCode":200
}
获取当前速度命令
请求方法:GET
请求URL:
/api/v2/device/name/{deviceName}/velocity
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
无
测试请求:
1
2curl localhost:59882/api/v2/device/name/device1/velocity \
-H "Content-Type:application/json" -X GET响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ———————————- | ——— | —————— | —————— |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |
| event.readings[0].value | String | 返回的速度值 | 1.000000e-01 |
- 测试成功示例响应:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"apiVersion": "v2",
"statusCode": 200,
"event": {
"apiVersion": "v2",
"id": "5d1968f7-8f90-4893-9aee-3038a4428700",
"deviceName": "device1",
"profileName": "my-ros",
"sourceName": "velocity",
"origin": 1714641172648511485,
"readings": [
{
"id": "9b9fe7b1-1922-4d88-8c47-a14645c1e46d",
"origin": 1714641172648508145,
"deviceName": "device1",
"resourceName": "velocity",
"profileName": "my-ros",
"valueType": "Float64",
"value": "1.000000e-01"
}
]
}
}
发布设置角度命令
请求方法:PUT
请求URL:
/api/v2/device/name/{deviceName}/angular
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
| 名称 | 类型 | 是否必填 | 描述 | 示例值 |
| ———- | ——- | ———— | ——— | ——— |
| angular | Float | 是 | 角度值 | 10.0 |测试请求:
1
2
3curl localhost:59882/api/v2/device/name/device1/angular \
-H "Content-Type:application/json" -X PUT \
-d '{"angular":10.0}'响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ————— | ——— | ————— | ——— |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |测试成功示例响应:
1
2
3
4{
"apiVersion":"v2",
"statusCode":200
}
获取当前角度命令
请求方法:GET
请求URL:
/api/v2/device/name/{deviceName}/angular
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
无
测试请求:
1
2curl localhost:59882/api/v2/device/name/device1/angular \
-H "Content-Type:application/json" -X GET响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ———————————- | ——— | —————— | ——————- |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |
| event.readings[0].value | String | 返回的角度值 | 10.000000e-01 |测试成功示例响应:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23{
"apiVersion": "v2",
"statusCode": 200,
"event": {
"apiVersion": "v2",
"id": "5d1968f7-8f90-4893-9aee-3038a4428700",
"deviceName": "device1",
"profileName": "my-ros",
"sourceName": "angular",
"origin": 1714641172648511485,
"readings": [
{
"id": "9b9fe7b1-1922-4d88-8c47-a14645c1e46d",
"origin": 1714641172648508145,
"deviceName": "device1",
"resourceName": "angular",
"profileName": "my-ros",
"valueType": "Float64",
"value": "10.000000e-01"
}
]
}
}
获取视频流地址命令
请求方法:GET
请求URL:
/api/v2/device/name/{deviceName}/cameraUrl
请求参数与载荷:
| 名称 | 类型 | 是否必填 |描述 | 示例值 |
| ———— | —— | ———— | - | - |
| deviceName | String | 是 |设备名称 | device1 |请求载荷:
无
测试请求:
1
2curl localhost:59882/api/v2/device/name/device1/cameraUrl \
-H "Content-Type:application/json" -X GET响应参数:
| 参数名称 | 类型 | 描述 | 示例值 |
| ———————————- | ——— | ———————- | —————————————————————————————— |
| apiVersion | String | API版本 | v2 |
| statusCode | Int | 响应状态码 | 200 |
| event.readings[0].value | String | 返回的视频源Url | http://172.19.166.145:8080/stream?topic=/camera/rgb/image_raw |测试成功示例响应:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23{
"apiVersion": "v2",
"statusCode": 200,
"event": {
"apiVersion": "v2",
"id": "75c292db-0b04-40ff-8138-8413a7676f02",
"deviceName": "device1",
"profileName": "my-ros",
"sourceName": "cameraUrl",
"origin": 1714641874330672509,
"readings": [
{
"id": "3c907d4d-8c68-403f-be8d-b8c642ceb5c8",
"origin": 1714641874330669171,
"deviceName": "device1",
"resourceName": "cameraUrl",
"profileName": "my-ros",
"valueType": "String",
"value": "http://172.19.166.145:8080/stream?topic=/camera/rgb/image_raw"
}
]
}
}