diff options
Diffstat (limited to 'udp2lcm/udp2lcm.c')
-rw-r--r-- | udp2lcm/udp2lcm.c | 48 |
1 files changed, 47 insertions, 1 deletions
diff --git a/udp2lcm/udp2lcm.c b/udp2lcm/udp2lcm.c index 36100da..5514b24 100644 --- a/udp2lcm/udp2lcm.c +++ b/udp2lcm/udp2lcm.c | |||
@@ -71,7 +71,13 @@ void parseCmd(const char *buffer, int bytesReceived) { | |||
71 | if (buffer[0] == 0) { | 71 | if (buffer[0] == 0) { |
72 | // 手机端用来与udp2lcm服务器建立连接的初始化消息 | 72 | // 手机端用来与udp2lcm服务器建立连接的初始化消息 |
73 | // 也是手机端的心跳 | 73 | // 也是手机端的心跳 |
74 | ; | 74 | // 下达30号命令,开始建图 |
75 | robotCtrlInit(&robotCtrlData, 0, 30, 0, 1, 1, 0, 0); | ||
76 | robotCtrlData.dparams[0] = 0.05; | ||
77 | robotCtrlData.niparams = 1; | ||
78 | robotCtrlData.iparams[0] = 1; | ||
79 | robot_control_t_publish(lcm, "ROBOT_CONTROL", &robotCtrlData); | ||
80 | freeRobotCtrl(&robotCtrlData); | ||
75 | } else if (buffer[0] == 1) { | 81 | } else if (buffer[0] == 1) { |
76 | // 建图过程中,手机端遥控小车进行移动,命令下发至轮控模块 | 82 | // 建图过程中,手机端遥控小车进行移动,命令下发至轮控模块 |
77 | path.cmd = buffer[1]; | 83 | path.cmd = buffer[1]; |
@@ -125,7 +131,47 @@ void parseCmd(const char *buffer, int bytesReceived) { | |||
125 | } else if (buffer[0] == 4) { | 131 | } else if (buffer[0] == 4) { |
126 | // 取消导航,删除上一个目标点 | 132 | // 取消导航,删除上一个目标点 |
127 | robotCtrlInit(&robotCtrlData, 0, 23, 0, 0, 0, 0, 0); | 133 | robotCtrlInit(&robotCtrlData, 0, 23, 0, 0, 0, 0, 0); |
134 | // TODO 第一次停止指令 | ||
135 | printf("Cancel Navigation!\n"); | ||
136 | path.cmd = 4; | ||
137 | path_ctrl_t_publish(lcm, "wheel_ctrl", &path); | ||
138 | ///////////////////////////// | ||
139 | robot_control_t_publish(lcm, "ROBOT_CONTROL", &robotCtrlData); | ||
140 | // TODO 再次下达停止指令 | ||
141 | sleep(2); | ||
142 | path.cmd = 5; | ||
143 | printf("Stop but can recieve cmd\n"); | ||
144 | path_ctrl_t_publish(lcm, "wheel_ctrl", &path); | ||
145 | ///////////////////////// | ||
146 | } else if (buffer[0] == 5) { | ||
147 | /* | ||
148 | 加载地图,需要注意的是所加载的地图是由电脑控制端下发的 | ||
149 | 该部分由建图部分修改 | ||
150 | */ | ||
151 | path.cmd = 0; | ||
152 | path.speed = 0; | ||
153 | path_ctrl_t_publish(lcm, "wheel_ctrl", &path); | ||
154 | |||
155 | printf("Load Map!\n"); | ||
156 | // robotCtrlInit(&robotCtrlData, 0, 32, 0, 0, 0, 0, 0); | ||
157 | // robot_control_t_publish(lcm, "ROBOT_CONTROL", &robotCtrlData); | ||
158 | // freeRobotCtrl(&robotCtrlData); | ||
159 | |||
160 | // sleep(2); | ||
161 | |||
162 | robotCtrlInit(&robotCtrlData, 0, 10, 0, 7, 0, 0, 0); | ||
163 | pthread_mutex_lock(&heartBeatMutex); | ||
164 | int16_t x, y, sita; | ||
165 | x = swapEndian(*(int16_t *)&heartBeat[3]); | ||
166 | y = swapEndian(*(int16_t *)&heartBeat[5]); | ||
167 | sita = swapEndian(*(int16_t *)&heartBeat[7]); | ||
168 | printf("NOW point: x: %d, y: %d, sita: %d\n", x, y, sita); | ||
169 | robotCtrlData.dparams[4] = 0; | ||
170 | robotCtrlData.dparams[5] = 0; | ||
171 | robotCtrlData.dparams[6] = 0; | ||
172 | pthread_mutex_unlock(&heartBeatMutex); | ||
128 | robot_control_t_publish(lcm, "ROBOT_CONTROL", &robotCtrlData); | 173 | robot_control_t_publish(lcm, "ROBOT_CONTROL", &robotCtrlData); |
174 | freeRobotCtrl(&robotCtrlData); | ||
129 | } else { | 175 | } else { |
130 | fprintf(stderr, "Error: Invalid command: "); | 176 | fprintf(stderr, "Error: Invalid command: "); |
131 | for (int i = 0; i < 9; i++) { | 177 | for (int i = 0; i < 9; i++) { |