123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263 |
- # update: 2024-3-20
- """
- 车辆控制器API
- """
- from urllib import parse
- import requests
- import time
- import traceback
- import sys
- import importlib
- sys.path.append(r'E:\casper\repositories\repositories\casperz.py-project\module-py') # for pc
- # sys.path.append(r'D:\casper\gitee\casperz.py-project\module-py') # for pc
- methods = importlib.import_module(f"xlib")
- class API(object):
- def __init__(self, address='192.168.191.91', port=8000):
- """
- start_plan 启动任务
- abort_plan 终止任务
- start_engine 远程打火
- stall_engine 远程熄火
- apply_use_by_ip 申请远程操作模式 1 申请远程操作模式 2 申请自动作业模式
- """
- # --- define ---
- self.port = port
- # self.url = f"http://{address}:{port}"
- def cmd1001(self, address='192.168.191.91', navigation=[]):
- """
- 启动行驶
- data = {
- # 指令类型
- "cmdid": 1001, # 执行行驶任务
- # 指令参数
- "param": {
- # 导航数据
- "navigation": [
- {
- 'type': 'forward', # 方向类型 forward 正向 backward 反向
- 'nav_coordinates': [
- # 直行轨迹坐标参数
- {
- "start_point_x": 37.7749,
- "start_point_y": 37.7749,
- "end_point_x": 40,
- "end_point_y": -120
- },
- # 转弯轨迹坐标参数
- {
- "start_point_x": 40.7128,
- "start_point_y": -74.0060,
- "center_point_x": 10,
- "center_point_y": 20,
- "end_point_x": 50.7128,
- "end_point_y": -70.0060
- },
- ]
- },
- {
- 'type': 'backward',
- 'nav_coordinates': [
- # 直行轨迹坐标参数
- {
- "start_point_x": 37.7749,
- "start_point_y": -122.4194,
- "end_point_x": 40,
- "end_point_y": -120
- },
- # 转弯轨迹坐标参数
- {
- "start_point_x": 40.7128,
- "start_point_y": -74.0060,
- "center_point_x": 10,
- "center_point_y": 20,
- "end_point_x": 50.7128,
- "end_point_y": -70.0060
- },
- ]
- },
- ],
- },
- }
- """
- data = {
- 'cmdid': 1001,
- 'param': {
- 'navigation': navigation,
- }
- }
- url = f"http://{address}:{self.port}"
- response = requests.post(self.url, json=data)
- print('API.start_plan.url:', self.url)
- print('API.start_plan.data:', data)
- print('API.start_plan.code:', response.status_code)
- print('API.start_plan.text:', response.text)
- def cmd100101(self):
- """
- 启动作业
- """
- data = {
- # 指令类型
- "cmdid": 100101, # 启动作业
- # 指令参数
- "param": {
- # 任务类型 102 叉包 103 放包 104 倒渣
- "task_type": 102,
- # 102
- "task_coordinates": {
- "pot_name": "M.24",
- "pot_x": 40,
- "pot_y": 50,
- "mark_pot_pose": 0.3,
- "e_point_x": 50,
- "e_point_y": 60
- },
- # 103
- # "task_coordinates": {
- # "pot_name": "M.24",
- # "pot_x": 40,
- # "pot_y": 50,
- # "goal_pot_pose": 0.3,
- # "e_point_x": 50,
- # "e_point_y": 60
- # },
- # 104
- # "task_coordinates": {},
- }
- }
- def cmd1002(self):
- """
- 中止行驶任务
- """
- data = {
- # 指令类型
- "cmdid": 1002, # 中止行驶任务
- # 指令参数
- "param": {}
- }
- def cmd1003(self):
- data = {
- # 指令类型
- "cmdid": 1003, # 远程打火
- # 指令参数
- "param": {}
- }
- def cmd1004(self):
- data = {
- # 指令类型
- "cmdid": 1004, # 远程熄火
- # 指令参数
- "param": {}
- }
- def cmd1005(self):
- data = {
- # 指令类型
- "cmdid": 1005, # 申请远程操作模式
- # 指令参数
- "param": {}
- }
- def cmd1006(self):
- data = {
- # 指令类型
- "cmdid": 1006, # 申请自动作业模式
- # 指令参数
- "param": {}
- }
- def test002(self, address):
- """
- """
- data = {
- # 指令类型
- "cmdid": 1001, # 执行行驶任务
- # 指令参数
- "param": {
- # 导航数据
- "navigation": [
- {
- 'type': 'forward',
- 'nav_coordinates': [
- {
- 'start_point_x': 2.495, # 当前位置
- 'start_point_y': 173.1666142856, # 当前位置
- 'end_point_x': 182.6588877142857,
- 'end_point_y': 169.8418064285714
- },
- {
- 'start_point_x': 182.6588877142857,
- 'start_point_y': 169.8418064285714,
- 'center_point_x': 182.92185485714285,
- 'center_point_y': 183.5769582142857,
- 'end_point_x': 196.65700664285714,
- 'end_point_y': 183.31399107142855
- },
- {
- 'start_point_x': 196.65700664285714,
- 'start_point_y': 183.31399107142855,
- 'center_point_x': 182.92185485714285,
- 'center_point_y': 183.5769582142857,
- 'end_point_x': 183.184822,
- 'end_point_y': 197.31211
- },
- {
- 'start_point_x': 183.184822,
- 'start_point_y': 197.31211,
- 'end_point_x': 178.045984 - 50,
- 'end_point_y': 197.219726
- }
- ]
- }
- ]
- },
- }
- url = f"http://{address}:{self.port}"
- response = requests.post(url, json=data)
- print('API.start_plan.url:', url)
- print('API.start_plan.data:', data)
- print('API.start_plan.code:', response.status_code)
- def test004(self, address):
- data = {
- # 指令类型
- "cmdid": 100101, # 启动作业
- # 指令参数
- "param": {
- "task_type": 103, # 放包
- "task_coordinates": {
- "pot_name": "N.20",
- "pot_x": 122.755687,
- "pot_y": 210.019149,
- "mark_pot_pose": -1.570920,
- "e_point_x": 0,
- "e_point_y": 0
- },
- }
- }
- url = f"http://{address}:{self.port}"
- response = requests.post(url, json=data)
- print('API.start_plan.url:', url)
- print('API.start_plan.data:', data)
- print('API.start_plan.code:', response.status_code)
- if __name__ == '__main__':
- # --- init ---
- api = API(port=8000)
- # --- test ---
- # out = api.test002(address='192.168.131.180') # 行驶
- out = api.test004(address='192.168.131.180') # 作业
- print(out)
|