aboutsummaryrefslogtreecommitdiffstats
path: root/udp2lcm/udp2lcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'udp2lcm/udp2lcm.c')
-rw-r--r--udp2lcm/udp2lcm.c48
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++) {