Initial commit

This commit is contained in:
2026-07-13 09:25:40 +07:00
parent c08ff54676
commit bccfb156d7
1938 changed files with 641646 additions and 0 deletions

View File

@@ -0,0 +1,362 @@
# Lấy pose hiện tại
```bash
curl -k -X GET https://localhost:7002/api/navigation/pose/current2d
```
# Di chuyển đến vị trí (1.0, 2.0) với yaw = 0
```bash
# Move to goal
curl -k -X POST https://localhost:7002/api/navigation/move_to \
-H "Content-Type: application/json" \
-d '{"x": 1.0, "y": 2.0, "yaw": 0.0, "frame_id": "map"}'
```
# Di chuyển đến vị trí với order (navigation_move_to_order)
#
# ⚠️ LƯU Ý QUAN TRỌNG:
# - order_handle phải là một pointer hợp lệ đến Order object được tạo bởi navigation system.
# - KHÔNG thể sử dụng số ngẫu nhiên hoặc giá trị test (như 0x12345678) - phải là pointer thực sự từ C++ code.
# - Nếu sử dụng order_handle không hợp lệ, server có thể crash hoặc trả về lỗi SSL.
# - order_handle có thể là số decimal hoặc hex string (0x...)
# - Giá trị phải > 0x1000 để được coi là pointer hợp lệ
# - Để có order_handle hợp lệ, bạn cần tạo Order object từ navigation system trước
```bash
curl -k -X POST https://localhost:7002/api/navigation/move_to_order \
-H "Content-Type: application/json" \
-d '{
"order_handle": "0x12345678",
"x": 1.0,
"y": 2.0,
"z": 0.0,
"qx": 0.0,
"qy": 0.0,
"qz": 0.0,
"qw": 1.0,
"frame_id": "map",
"xy_tolerance": 0.1,
"yaw_tolerance": 0.1
}'
```
# Lưu ý: JSON phải được format đúng. Nếu gặp lỗi, có thể sử dụng format một dòng:
# ⚠️ LƯU Ý: order_handle "0x12345678" trong ví dụ này chỉ là placeholder - bạn PHẢI thay bằng order_handle thực sự từ navigation system!
```bash
# Ví dụ với order_handle thực (thay 0x12345678 bằng giá trị thực):
curl -k -X POST https://localhost:7002/api/navigation/move_to_order -H "Content-Type: application/json" -d '{"order_handle":"0x12345678","x":1.0,"y":2.0,"z":0.0,"qx":0.0,"qy":0.0,"qz":0.0,"qw":1.0,"frame_id":"map","xy_tolerance":0.1,"yaw_tolerance":0.1}'
curl -k -X POST https://localhost:7002/api/navigation/move_to -H "Content-Type: application/json" -d '{"x": 1.0, "y": 2.0, "yaw": 0.0, "frame_id": "map"}'
```
# Hoặc sử dụng yaw thay vì quaternion:
```bash
curl -k -X POST https://localhost:7002/api/navigation/move_to_order \
-H "Content-Type: application/json" \
-d '{
"order_handle": 305419896,
"x": 1.0,
"y": 2.0,
"yaw": 0.0,
"frame_id": "map",
"xy_tolerance": 0.1,
"yaw_tolerance": 0.1
}'
```
# Cấu trúc OrderHandle trong C#:
# - OrderHandle: Wrapper class cho IntPtr, đại diện cho pointer đến Order object
# - OrderData: C# class chứa dữ liệu Order (headerId, orderId, nodes, edges, etc.)
#
# Hiện tại, order_data chưa được hỗ trợ (cần C API function để tạo OrderHandle từ OrderData).
# Vui lòng sử dụng order_handle (IntPtr) từ navigation system.
# Di chuyển thẳng theo hướng hiện tại (distance mét). Bắt buộc có trường "distance".
```bash
# Đi thẳng 2.0 mét
curl -k -X POST https://localhost:7002/api/navigation/move_straight_to \
-H "Content-Type: application/json" \
-d '{"distance": 1.0}'
```
# Ví dụ khác:
```bash
# Đi thẳng 1.5 mét
curl -k -X POST https://localhost:7002/api/navigation/move_straight_to \
-H "Content-Type: application/json" \
-d '{"distance": 1.5}'
curl -k -X POST https://localhost:7002/api/navigation/move_straight_to -H "Content-Type: application/json" -d '{"distance": 2.0}'
```
# Xoay đến yaw = 1.57 (90 độ)
```bash
curl -k -X POST https://localhost:7002/api/navigation/rotate_to \
-H "Content-Type: application/json" \
-d '{"yaw": 3.14}'
```
# Tạm dừng
```bash
curl -k -X POST https://localhost:7002/api/navigation/pause
```
# Tiếp tục
```bash
curl -k -X POST https://localhost:7002/api/navigation/resume
```
# Hủy goal
```bash
curl -k -X POST https://localhost:7002/api/navigation/pause
```
# Lấy feedback
```bash
curl -k -X GET https://localhost:7002/api/navigation/feedback
```
```bash
curl -k -X POST https://localhost:7002/api/navigation/twist/linear \
-H "Content-Type: application/json" \
-d '{"x": 0.5, "y": 0.0, "z": 0.0}'
```
```bash
curl -k -X POST https://localhost:7002/api/navigation/move_to_order_data \
-H "Content-Type: application/json" \
-d '{
"order": {
"orderId": "order_001",
"orderUpdateId": 1,
"nodes": [{"nodeId": "node1", "sequenceId": 1, "released": true, "nodePosition": {"x": 0.0, "y": 0.0, "mapId": "map"}}],
"edges": [{"edgeId": "edge1", "sequenceId": 2, "startNodeId": "node1", "endNodeId": "node2", "released": true}]
},
"x": 13.05,
"y": 3.41,
"z": 0.0,
"yaw": 1.57
}'
```
```bash
curl -k -X POST https://localhost:7002/api/navigation/move_to_order_data \
-H "Content-Type: application/json" \
-d '{
"x": 7.0,
"y": 2.0,
"yaw": 1.57,
"frame_id": "map",
"xy_tolerance": 0.3,
"yaw_tolerance": 50,
"order": {
"headerId": 1,
"timestamp": "2026-02-28T16:01:25.308Z",
"version": "0.0.1",
"manufacturer": "phenikaaX",
"serialNumber": "T800Fake",
"orderId": "c92ec33e-ec04-4521-8255-af8ae46b7f31",
"orderUpdateId": 1,
"zoneSetId": "maze",
"nodes": [
{
"nodeId": "86312653-08b2-4556-bb84-674805905bed",
"sequenceId": 0,
"nodeDescription": "Node0",
"released": true,
"nodePosition": {
"x": 2.5,
"y": 1.0,
"theta": 0.0,
"allowedDeviationXY": 0,
"allowedDeviationTheta": 0,
"mapId": "448039b7-23d2-4a70-a2d2-08dd61dadd33",
"mapDescription": ""
},
"actions": []
},
{
"nodeId": "3726205f-0140-454d-21a8-08de5340bfbf",
"sequenceId": 1,
"nodeDescription": "Node1",
"released": true,
"nodePosition": {
"x": 6.0,
"y": 1.0,
"theta": 0.0,
"allowedDeviationXY": 0.3,
"allowedDeviationTheta": 50,
"mapId": "448039b7-23d2-4a70-a2d2-08dd61dadd33",
"mapDescription": ""
},
"actions": []
},
{
"nodeId": "1231321231231-fdfdf-fdfdsafa",
"sequenceId": 2,
"nodeDescription": "Node2",
"released": true,
"nodePosition": {
"x": 7.0,
"y": 2.0,
"theta": 1.57,
"allowedDeviationXY": 0.3,
"allowedDeviationTheta": 50,
"mapId": "448039b7-23d2-4a70-a2d2-08dd61dadd33",
"mapDescription": ""
},
"actions": []
}
],
"edges": [
{
"edgeId": "522212fa-74d5-4f00-9a00-23e092593bcc",
"sequenceId": 0,
"edgeDescription": "86312653-08b2-4556-bb84-674805905bed - 3726205f-0140-454d-21a8-08de5340bfbf",
"released": true,
"startNodeId": "86312653-08b2-4556-bb84-674805905bed",
"endNodeId": "3726205f-0140-454d-21a8-08de5340bfbf",
"maxSpeed": 0.5,
"maxHeight": 0,
"minHeight": 0,
"orientation": 0,
"orientationType": "",
"direction": "Both",
"rotationAllowed": true,
"maxRotationSpeed": 0.5,
"length": 0,
"trajectory": {
"degree": 1,
"knotVector": [0, 0, 1, 1],
"controlPoints": [
{
"x": 2.5,
"y": 1.0,
"weight": 1
},
{
"x": 6.0,
"y": 1.0,
"weight": 1
}
]
},
"actions": []
},
{
"edgeId": "13312fds-fdsfsdaaf",
"sequenceId": 1,
"edgeDescription": "3726205f-0140-454d-21a8-08de5340bfbf - 1231321231231-fdfdf-fdfdsafa",
"released": true,
"startNodeId": "3726205f-0140-454d-21a8-08de5340bfbf",
"endNodeId": "1231321231231-fdfdf-fdfdsafa",
"maxSpeed": 0.5,
"maxHeight": 0,
"minHeight": 0,
"orientation": 0,
"orientationType": "",
"direction": "Both",
"rotationAllowed": true,
"maxRotationSpeed": 0.5,
"length": 0,
"trajectory": {
"degree": 2,
"knotVector": [0, 0, 0, 1, 1, 1],
"controlPoints": [
{"x": 6.0, "y": 1.0, "weight": 1.0},
{"x": 7.0, "y": 0.5, "weight": 0.707},
{"x": 7.0, "y": 2.0, "weight": 1.0}
]
},
"actions": []
}
]
}
}'
```
```bash
curl -k -X POST https://localhost:7002/api/navigation/move_to_order_data \
-H "Content-Type: application/json" \
-d '{
"x": 2.5,
"y": 0.4,
"yaw": 0.0,
"frame_id": "map",
"xy_tolerance": 0.3,
"yaw_tolerance": 50,
"order": {
"headerId": 1,
"timestamp": "2026-02-28T16:01:25.308Z",
"version": "0.0.1",
"manufacturer": "phenikaaX",
"serialNumber": "T800Fake",
"orderId": "c92ec33e-ec04-4521-8255-af8ae46b7f31",
"orderUpdateId": 1,
"zoneSetId": "maze",
"nodes": [
{
"nodeId": "86312653-08b2-4556-bb84-674805905bed",
"sequenceId": 0,
"nodeDescription": "RobotCurrentNode",
"released": true,
"nodePosition": {
"x": 5.5,
"y": 0.4,
"theta": -0.0,
"allowedDeviationXY": 0,
"allowedDeviationTheta": 0,
"mapId": "448039b7-23d2-4a70-a2d2-08dd61dadd33",
"mapDescription": ""
},
"actions": []
},
{
"nodeId": "3726205f-0140-454d-21a8-08de5340bfbf",
"sequenceId": 1,
"nodeDescription": "Node172",
"released": true,
"nodePosition": {
"x": 2.5,
"y": 0.4,
"theta": -0.0,
"allowedDeviationXY": 0.3,
"allowedDeviationTheta": 50,
"mapId": "448039b7-23d2-4a70-a2d2-08dd61dadd33",
"mapDescription": ""
},
"actions": []
}
],
"edges": [
{
"edgeId": "522212fa-74d5-4f00-9a00-23e092593bcc",
"sequenceId": 0,
"edgeDescription": "86312653-08b2-4556-bb84-674805905bed - 3726205f-0140-454d-21a8-08de5340bfbf",
"released": true,
"startNodeId": "86312653-08b2-4556-bb84-674805905bed",
"endNodeId": "3726205f-0140-454d-21a8-08de5340bfbf",
"maxSpeed": 0.5,
"maxHeight": 0,
"minHeight": 0,
"orientation": 0,
"orientationType": "",
"direction": "Both",
"rotationAllowed": true,
"maxRotationSpeed": 0.5,
"length": 0,
"trajectory": {
"degree": 1,
"knotVector": [0, 0, 1, 1],
"controlPoints": [
{
"x": 4.5,
"y": 0.4,
"weight": 1
},
{
"x": 3.5,
"y": 0.4,
"weight": 1
}
]
},
"actions": []
}
]
}
}'
```