syntax = "proto3"; package NavMessage; message LidarOdomStatu { float x=1; float y=2; float theta=3; float v=4; float vth=5; } message AgvStatu{ float v=1; float w=2; int32 clamp=3; //夹持状态 0,中间状态,1夹紧到位,2,打开到位, int32 clamp_other=4; //另外一节 } message ToAgvCmd { int32 H=1; //心跳 int32 M=2; //模式:2整车模式,1:单车 int32 T=3; // 1:原地旋转,2:横移,3:MPC巡线/前进, 5,夹持,6,松夹持,其他/未接收到:停止 float V=4; //角速度 float W=5; //线速度 float L=6; //轴距 int32 end=7; } message Pose2d { float x=1; float y=2; float theta=3; } message PathNode //导航路径点及精度 { float x=1; //目标点坐标 float y=2; float l=3; //目标点旋转矩形方程,代表精度范围 float w=4; float theta=5; string id=6; } message Trajectory { repeated Pose2d poses=1; } //---------------------------- message NewAction //进库,出库,轨迹导航,夹持,松夹持 { int32 type =1; //1,进库,2,出库,3,自动选择动作导航,4,保证agv朝前导航,5,汽车模型导航,6:夹持,7:松夹持,8:切换模式 PathNode spaceNode = 2; //进出库起点 PathNode passNode=3; //进出库途径点 PathNode streetNode = 4; //进出库终点 repeated PathNode pathNodes=5;//导航路径点 float wheelbase=6; //切换模式,轴距信息 int32 changedMode=7; //1:切换单车模式,2:切换双车模式 } //----------------------------- message NavCmd { int32 action=1; // 0 开始任务,1 pause, 2 continue ,3 cancel,4:切换到双车模式,5:切换到单车模式, string key=2; repeated NewAction newActions=5; } message NavResponse{ int32 ret=1; string info=2; } service NavExcutor{ rpc Start(NavCmd) returns(NavResponse){} rpc Cancel(NavCmd) returns(NavResponse){} } message NavStatu { int32 statu = 1; //0:ready 1:原地旋转,2:Horizon,3:vrtical,4:MPC,5:夹持开,6:夹持关 bool main_agv=2; //是否是两节控制plc int32 move_mode=3; //运动模式,1:single,2:双车 LidarOdomStatu odom=4; string key = 5; // 任务唯一码 Trajectory selected_traj = 6; Trajectory predict_traj = 7; bool in_space=8; //是否在车位/正在进入车位 string space_id=9; } message RobotStatu { float x=1; float y=2; float theta=3; AgvStatu agvStatu=4; }