before test
Dependencies: BEAR_Protocol_Edited BufferedSerial Debug MaxSonar PID Process QEI UI iSerial mbed
Fork of clean_V1 by
Revision 7:0dac9d4ff04f, committed 2016-06-07
- Comitter:
- icyzkungz
- Date:
- Tue Jun 07 16:17:34 2016 +0000
- Parent:
- 6:adf1f4351f9f
- Commit message:
- before test
Changed in this revision
--- a/BEAR_Protocol_Edited.lib Tue Jun 07 03:28:39 2016 +0000 +++ b/BEAR_Protocol_Edited.lib Tue Jun 07 16:17:34 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/palmdotax/code/BEAR_Protocol_Edited/#1b64ff047f68 +https://developer.mbed.org/users/icyzkungz/code/BEAR_Protocol_Edited/#9f6ccea3d8f9
--- a/main.cpp Tue Jun 07 03:28:39 2016 +0000 +++ b/main.cpp Tue Jun 07 16:17:34 2016 +0000 @@ -35,13 +35,13 @@ // Global // //timer - int timer_now=0,timer_later=0; - int times=0,timer_buffer=0; - - //encoder - int Encoderpos = 0; - int real_d=0; - float valocity1 =0,valocity2 =0,pulse_1=0,pulse_2=0,count=0,r=0.125,velocityreal=0,pulse_d=0,Z_d=0; +int timer_now=0,timer_later=0; +int times=0,timer_buffer=0; + +//encoder +int Encoderpos = 0; +int real_d=0; +float valocity1 =0,valocity2 =0,pulse_1=0,pulse_2=0,count=0,r=0.125,velocityreal=0,pulse_d=0,Z_d=0; //pid double setp1=0,setp2=0; @@ -61,12 +61,12 @@ EEPROM memory(PB_4,PA_8,0); float KP_LEFT_BUFF=0,KI_LEFT_BUFF=0,KD_LEFT_BUFF=0,KP_RIGHT_BUFF=0,KI_RIGHT_BUFF =0,KD_RIGHT_BUFF=0; - void CmdCheck(int16_t id,uint8_t *command,uint8_t ins); - void RC(); +void CmdCheck(int16_t id,uint8_t *command,uint8_t ins); +void RC(); //rplidar - //float distances = 0; - //float angle = 0; +//float distances = 0; +//float angle = 0; //ool startBit = 0; //char quality =0 ; @@ -82,43 +82,46 @@ //s1.get_motor();รับค่ามอเตอร์ RC(); timer_later= timer_now; - + } void EncoderA_1()//ซ้าย -{ if(encoderB_1==0) - { Encoderpos = Encoderpos + 1;} - else - { Encoderpos = Encoderpos -1;} - pulse_1+=1; - //Encoderpos = Encoderpos + 1; - //valocity+=1; - //pc.printf("%d \n",Encoderpos); - //pc.printf("pulse=%f \n",pulse); - //if(pulse==128) - //{count+=1;pulse=0; pc.printf("count=%f \n",count);} +{ + if(encoderB_1==0) { + Encoderpos = Encoderpos + 1; + } else { + Encoderpos = Encoderpos -1; + } + pulse_1+=1; + //Encoderpos = Encoderpos + 1; + //valocity+=1; + //pc.printf("%d \n",Encoderpos); + //pc.printf("pulse=%f \n",pulse); + //if(pulse==128) + //{count+=1;pulse=0; pc.printf("count=%f \n",count);} } - void EncoderA_2()//ขวา -{ - if(encoderB_2==0) - { Encoderpos = Encoderpos + 1;} - else - { Encoderpos = Encoderpos -1;} +void EncoderA_2()//ขวา +{ + if(encoderB_2==0) { + Encoderpos = Encoderpos + 1; + } else { + Encoderpos = Encoderpos -1; + } pulse_2+=1; //pc.printf("%d",Encoderpos); } void EncoderA_D() -{ - if(encoderB_d==0) - { Encoderpos = Encoderpos + 1;} - else - { Encoderpos = Encoderpos -1;} +{ + if(encoderB_d==0) { + Encoderpos = Encoderpos + 1; + } else { + Encoderpos = Encoderpos -1; + } pulse_d+=1; - if(pulse_d==128) - { + if(pulse_d==128) { Z_d+=1; pulse_d=0; } - + } void getvelo1()//จาก encoder { @@ -138,60 +141,55 @@ { real_d=Z_d*(2*3.14*r); //ส่งข้อมูล - + } void get_rplidar() { - if (IS_OK(lidar.waitPoint())) - { - - } - else - { - - lidar.startScan(); - + if (IS_OK(lidar.waitPoint())) { + + } else { + + lidar.startScan(); + } - + } double map(double x, double in_min, double in_max, double out_min, double out_max) { return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min; - + } void PID_m1()//left { setp1=map(1.0,0.0,1.094,0.0,1.0); P1.setSetPoint(setp1); - times=timerStart.read(); - if(times==1)// m/s - { - getvelo1(); - //pc.printf("TIME \n"); - times=0; - pulse_1=0; - } + times=timerStart.read(); + if(times==1) { // m/s + getvelo1(); + //pc.printf("TIME \n"); + times=0; + pulse_1=0; + } P1.setProcessValue(valocity1); outPID=P1.compute(); - //pc.printf("outPID=%f \n",outPID); - m1.movespeed_1(setp1,outPID); + //pc.printf("outPID=%f \n",outPID); + m1.movespeed_1(setp1,outPID); } void PID_m2()//right { setp2=map(1.0,0.0,1.094,0.0,1.0); P2.setSetPoint(setp2); - times=timerStart.read(); - if(times==1)// m/s - { - getvelo2(); - //pc.printf("TIME \n"); - times=0; - pulse_2=0; - } + times=timerStart.read(); + if(times==1) { // m/s + getvelo2(); + //pc.printf("TIME \n"); + times=0; + pulse_2=0; + } P2.setProcessValue(valocity2); outPID=P2.compute(); - //pc.printf("outPID=%f \n",outPID); - m1.movespeed_2(setp2,outPID); + //pc.printf("outPID=%f \n",outPID); + m1.movespeed_2(setp2,outPID); } @@ -215,29 +213,30 @@ } /*******************************************************/ int buf=0; +float lidar_angle_max=360,lidar_angle_min=0; int main() { PC.baud(115200); lidar.begin(se_lidar); tim.start(); //com1 = new COMMUNICATION(PA_9,PA_10,115200); - encoderA_1.rise(&EncoderA_1); - timerStart.start(); - P1.setMode(1); - P1.setBias(0); - // pc.printf("READY \n"); + encoderA_1.rise(&EncoderA_1); + timerStart.start(); + P1.setMode(1); + P1.setBias(0); + // pc.printf("READY \n"); //pc.attach(&Rx_interrupt, Serial::RxIrq); - lidar.setAngle(0,360); + lidar.setAngle(lidar_angle_min,lidar_angle_max); while(1) { VMO=1; get_rplidar(); - /* if(tim.read_ms()-buf>=1000){ - for(int x=0;x<=359;x++){ - printf("%d,",lidar.Data[x]); - } - buf = tim.read_ms(); - }*/ + /* if(tim.read_ms()-buf>=1000){ + for(int x=0;x<=359;x++){ + printf("%d,",lidar.Data[x]); + } + buf = tim.read_ms(); + }*/ RC(); //wait_ms(1); } @@ -253,21 +252,38 @@ void CmdCheck(int16_t id,uint8_t *command,uint8_t ins) { - PC.printf("cmdcheck\n"); - if(id==MY_ID) { + PC.printf("cmdcheck\n"); + if(id==MY_ID) { switch (ins) { case PING: { break; } case WRITE_DATA: { switch (command[0]) { - case ID: { - /// - MY_ID = (int16_t)command[1]; + case SET_MAX_LIDAR_DEGREE: { + uint8_t int_buffer[2],float_buffer[2]; + uint8_t int_buffer2[2],float_buffer2[2]; + float Int,flo; + int_buffer[0]=command[1]; + int_buffer[1]=command[2]; + float_buffer[0]=command[3]; + float_buffer[1]=command[4]; + int_buffer2[0]=command[5]; + int_buffer2[1]=command[6]; + float_buffer2[0]=command[7]; + float_buffer2[1]=command[8]; + Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); + lidar_angle_max=Int+(flo/10000); + + Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer2); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer2); + lidar_angle_max=Int+(flo/10000); + PC.printf("Min,Max Degree of Lidar : %f %f/n",lidar_angle_min,lidar_angle_max); break; } + case SET_VELOCITY_LEFT: { - // uint8_t int_buffer[2],float_buffer[2]; float Int,flo; int_buffer[0]=command[1]; @@ -317,10 +333,10 @@ float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); - flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); VRmax=Int+flo; PC.printf("VRmax = %f",VRmax); - // PC.printf("*****************************"); + // PC.printf("*****************************"); break; } //save to rom @@ -329,35 +345,35 @@ float Int,flo; int_buffer[0]=command[1]; int_buffer[1]=command[2]; - float_buffer[0]=command[3]; + float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); - KP_LEFT=Int+flo; - PC.printf("KP_LEFT=%f /n",KP_LEFT); - int32_t data_buff; - data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); - memory.write(ADDRESS_LEFT_KP,data_buff); - wait_ms(EEPROM_DELAY); + KP_LEFT=Int+flo; + PC.printf("KP_LEFT=%f /n",KP_LEFT); + int32_t data_buff; + data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); + memory.write(ADDRESS_LEFT_KP,data_buff); + wait_ms(EEPROM_DELAY); break; } case SET_KI_LEFT: { - uint8_t int_buffer[2],float_buffer[2]; + uint8_t int_buffer[2],float_buffer[2]; float Int,flo; int_buffer[0]=command[1]; int_buffer[1]=command[2]; - float_buffer[0]=command[3]; + float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); - KI_LEFT=Int+flo; - PC.printf("KI_LEFT=%f /n",KI_LEFT); - int32_t data_buff; - data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); - memory.write(ADDRESS_LEFT_KI ,data_buff); - wait_ms(EEPROM_DELAY); + KI_LEFT=Int+flo; + PC.printf("KI_LEFT=%f /n",KI_LEFT); + int32_t data_buff; + data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); + memory.write(ADDRESS_LEFT_KI ,data_buff); + wait_ms(EEPROM_DELAY); break; } case SET_KD_LEFT: { @@ -365,16 +381,16 @@ float Int,flo; int_buffer[0]=command[1]; int_buffer[1]=command[2]; - float_buffer[0]=command[3]; + float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); - flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); - KD_LEFT=Int+flo; - PC.printf("KD_LEFT=%f /n",KD_LEFT); - int32_t data_buff; - data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); - memory.write(ADDRESS_LEFT_KD,data_buff); - wait_ms(EEPROM_DELAY); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); + KD_LEFT=Int+flo; + PC.printf("KD_LEFT=%f /n",KD_LEFT); + int32_t data_buff; + data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); + memory.write(ADDRESS_LEFT_KD,data_buff); + wait_ms(EEPROM_DELAY); break; } case SET_KP_RIGHT: { @@ -382,33 +398,33 @@ float Int,flo; int_buffer[0]=command[1]; int_buffer[1]=command[2]; - float_buffer[0]=command[3]; + float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); - flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); - KP_RIGHT=Int+flo; - PC.printf("KP_RIGHT=%f /n",KP_RIGHT); - int32_t data_buff; - data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); - memory.write(ADDRESS_RIGHT_KP,data_buff); - wait_ms(EEPROM_DELAY); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); + KP_RIGHT=Int+flo; + PC.printf("KP_RIGHT=%f /n",KP_RIGHT); + int32_t data_buff; + data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); + memory.write(ADDRESS_RIGHT_KP,data_buff); + wait_ms(EEPROM_DELAY); break; } case SET_KI_RIGHT: { - uint8_t int_buffer[2],float_buffer[2]; + uint8_t int_buffer[2],float_buffer[2]; float Int,flo; int_buffer[0]=command[1]; int_buffer[1]=command[2]; - float_buffer[0]=command[3]; + float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); - flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); - KI_RIGHT=Int+flo; - PC.printf("KI_RIGHT=%f /n",KI_RIGHT); - int32_t data_buff; - data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); - memory.write(ADDRESS_RIGHT_KI,data_buff); - wait_ms(EEPROM_DELAY); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); + KI_RIGHT=Int+flo; + PC.printf("KI_RIGHT=%f /n",KI_RIGHT); + int32_t data_buff; + data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); + memory.write(ADDRESS_RIGHT_KI,data_buff); + wait_ms(EEPROM_DELAY); break; } case SET_KD_RIGHT: { @@ -419,352 +435,292 @@ float_buffer[0]=command[3]; float_buffer[1]=command[4]; Int=(float)Utilities::ConvertUInt8ArrayToInt16(int_buffer); - flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); - KD_RIGHT=Int+flo; - PC.printf("KD_RIGHT=%f /n",KD_RIGHT); - int32_t data_buff; - data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); - memory.write(ADDRESS_RIGHT_KD,data_buff); - wait_ms(EEPROM_DELAY); + flo=(float)Utilities::ConvertUInt8ArrayToInt16(float_buffer); + KD_RIGHT=Int+flo; + PC.printf("KD_RIGHT=%f /n",KD_RIGHT); + int32_t data_buff; + data_buff = Utilities::ConvertUInt8ArrayToInt32(int_buffer); + memory.write(ADDRESS_RIGHT_KD,data_buff); + wait_ms(EEPROM_DELAY); break; } - } - } break; - case READ_DATA: { PC.printf("READ_DATA\n"); + } + } + break; + case READ_DATA: { + PC.printf("READ_DATA\n"); switch (command[0]) { - case GET_LIDAR: { - /* int i=0,j=1,k=0; - uint8_t intData[2]={0x00,0x01},floatData[2]; - ANDANTE_PROTOCOL_PACKET package; - //BUFFER_SIZE=143 - package.robotId = MY_ID; - package.length = 4;//122 + /*case GET_LIDAR1: { + uint8_t IntArray[2],FloatArray[2]; + int numberK=0; + ANDANTE_PROTOCOL_PACKET package; + + package.robotId = ID; + package.length = 362; package.instructionErrorId = WRITE_DATA; - PC.printf("GETDATA\n"); - while(k<60) - { PC.printf("i= %d,j= %d,k = %d\n",i,j,k); - com.FloatSep( lidar.Data[k],intData,floatData); - package.parameter[i]=intData[0]; - package.parameter[j]=intData[1]; - i=i+2; - j=j+2; - k++; - + + for(int i=1; i<=360; i++) { + if(i==2) { + com.FloatSep(lidar.Data[numberK],IntArray,FloatArray); + package.parameter[i-1]=IntArray[0]; + package.parameter[i]=IntArray[1]; + numberK++; + } } - // PC.printf("SEND\n"); - //rs485_dirc1=1; - wait_us(RS485_DELAY); - PC.printf("SEND2\n"); - com1->sendCommunicatePacket(&package); - PC.printf("SEND3\n"); - - - - - */ - com.sendlidar(); - PC.printf("SEND2\n"); + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); break; - } - case GET_LIDAR2: { + }*/ + case GET_LIDAR2: { int i=0,j=1,k=60; - uint8_t intData[2],floatData[2]; - ANDANTE_PROTOCOL_PACKET package; - //BUFFER_SIZE=143 - package.robotId = MY_ID; - package.length = 122; - package.instructionErrorId = WRITE_DATA; - - while(k<120) - {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k); - com.FloatSep( lidar.Data[k],intData,floatData); - package.parameter[i]=intData[0]; - package.parameter[j]=intData[1]; - i=i+2; - j=j+2; - k++; - - } - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - - break; - } - case GET_LIDAR3: { - int i=0,j=1,k=120; - uint8_t intData[2],floatData[2]; - ANDANTE_PROTOCOL_PACKET package; + uint8_t intData[2],floatData[2]; + ANDANTE_PROTOCOL_PACKET package; //BUFFER_SIZE=143 package.robotId = MY_ID; - package.length = 122; + package.length = 122; package.instructionErrorId = WRITE_DATA; - while(k<180) - {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k); - com.FloatSep( lidar.Data[k],intData,floatData); - package.parameter[i]=intData[0]; - package.parameter[j]=intData[1]; - i=i+2; - j=j+2; - k++; - } - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - - break; - } - case GET_LIDAR4: { - int i=0,j=1,k=180; - uint8_t intData[2],floatData[2]; - ANDANTE_PROTOCOL_PACKET package; - //BUFFER_SIZE=143 - package.robotId = MY_ID; - package.length = 122; - package.instructionErrorId = WRITE_DATA; - while(k<240) - {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k); - com.FloatSep( lidar.Data[k],intData,floatData); - package.parameter[i]=intData[0]; - package.parameter[j]=intData[1]; - i=i+2; - j=j+2; - k++; - } - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - - break; + + while(k<120) { + //PC.printf("i= %d,j= %d,k = %d\n",i,j,k); + com.FloatSep( lidar.Data[k],intData,floatData); + package.parameter[i]=intData[0]; + package.parameter[j]=intData[1]; + i=i+2; + j=j+2; + k++; + } - case GET_LIDAR5: { - int i=0,j=1,k=240; - uint8_t intData[2],floatData[2]; - ANDANTE_PROTOCOL_PACKET package; - //BUFFER_SIZE=143 - package.robotId = MY_ID; - package.length = 122; - package.instructionErrorId = WRITE_DATA; - while(k<300) - {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k); - com.FloatSep( lidar.Data[k],intData,floatData); - package.parameter[i]=intData[0]; - package.parameter[j]=intData[1]; - i=i+2; - j=j+2; - k++; - } - - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - - break; - } - case GET_LIDAR6: { - int i=0,j=1,k=300; - uint8_t intData[2],floatData[2]; - ANDANTE_PROTOCOL_PACKET package; - //BUFFER_SIZE=143 - package.robotId = MY_ID; - package.length = 122; - package.instructionErrorId = WRITE_DATA; - while(k<360) - {//PC.printf("i= %d,j= %d,k = %d\n",i,j,k); - com.FloatSep( lidar.Data[k],intData,floatData); - package.parameter[i]=intData[0]; - package.parameter[j]=intData[1]; - i=i+2; - j=j+2; - k++; - } - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - - break; - } - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + + break; + } case GET_BATTERY: { - + break; - } + } case GET_VELOCITY_LEFT: { uint8_t intVelo_L[2],floatVelo_L[2]; com.FloatSep(valocity1,intVelo_L,floatVelo_L); - ANDANTE_PROTOCOL_PACKET package; + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intVelo_L[0]; package.parameter[1]=intVelo_L[1]; - package.parameter[2]=floatVelo_L[0]; + package.parameter[2]=floatVelo_L[0]; package.parameter[3]=floatVelo_L[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + + break; - } + } case GET_VELOCITY_RIGHT : { uint8_t intVelo_R[2],floatVelo_R[2]; com.FloatSep(valocity2,intVelo_R,floatVelo_R); - - - ANDANTE_PROTOCOL_PACKET package; + + + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intVelo_R[0]; package.parameter[1]=intVelo_R[1]; - package.parameter[2]=floatVelo_R[0]; + package.parameter[2]=floatVelo_R[0]; package.parameter[3]=floatVelo_R[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + break; - } + } case GET_KP_LEFT: { - memory.read(ADDRESS_LEFT_KP ,KP_LEFT_BUFF); - uint8_t intKPL[2],floatKPL[2]; - com.FloatSep(KP_LEFT_BUFF,intKPL,floatKPL); + memory.read(ADDRESS_LEFT_KP ,KP_LEFT); + memory.read(ADDRESS_LEFT_KP ,KI_LEFT); + memory.read(ADDRESS_LEFT_KP ,KD_LEFT); + + com.sendKpKiKdLeft(KP_LEFT,KI_LEFT,KD_LEFT); - - ANDANTE_PROTOCOL_PACKET package; + /*uint8_t IntKp[2],FloatKp[2]; + uint8_t IntKi[2],FloatKi[2]; + uint8_t IntKd[2],FloatKd[2]; + + com.FloatSep(KP_LEFT_BUFF,IntKp,FloatKp); + com.FloatSep(KI_LEFT_BUFF,IntKi,FloatKi); + com.FloatSep(KD_LEFT_BUFF,IntKd,FloatKd); + - package.robotId = MY_ID; - package.length = 6; + ANDANTE_PROTOCOL_PACKET package; + + package.robotId = ID; + package.length = 14; package.instructionErrorId = WRITE_DATA; - package.parameter[0]=intKPL[0]; - package.parameter[1]=intKPL[1]; - package.parameter[2]=floatKPL[0]; - package.parameter[3]=floatKPL[1]; + package.parameter[0]=IntKp[0]; + package.parameter[1]=IntKp[1]; + package.parameter[2]=FloatKp[0]; + package.parameter[3]=FloatKp[1]; + package.parameter[4]=IntKi[0]; + package.parameter[5]=IntKi[1]; + package.parameter[6]=FloatKi[0]; + package.parameter[7]=FloatKi[1]; + package.parameter[8]=IntKd[0]; + package.parameter[9]=IntKd[1]; + package.parameter[10]=FloatKd[0]; + package.parameter[11]=FloatKd[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package);*/ break; - } + } case GET_KI_LEFT: { memory.read(ADDRESS_LEFT_KP ,KI_LEFT_BUFF); uint8_t intKIL[2],floatKIL[2]; com.FloatSep(KI_LEFT_BUFF,intKIL,floatKIL); - - - ANDANTE_PROTOCOL_PACKET package; + + + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intKIL[0]; package.parameter[1]=intKIL[1]; - package.parameter[2]=floatKIL[0]; + package.parameter[2]=floatKIL[0]; package.parameter[3]=floatKIL[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + break; - } + } case GET_KD_LEFT: { memory.read(ADDRESS_LEFT_KP ,KD_LEFT_BUFF); uint8_t intKDL[2],floatKDL[2]; com.FloatSep(KD_LEFT_BUFF,intKDL,floatKDL); - - - ANDANTE_PROTOCOL_PACKET package; + + + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intKDL[0]; package.parameter[1]=intKDL[1]; - package.parameter[2]=floatKDL[0]; + package.parameter[2]=floatKDL[0]; package.parameter[3]=floatKDL[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + break; - } + } case GET_KP_RIGHT: { memory.read(ADDRESS_LEFT_KP ,KP_RIGHT_BUFF); uint8_t intKDR[2],floatKDR[2]; com.FloatSep(KP_RIGHT_BUFF,intKDR,floatKDR); - - - ANDANTE_PROTOCOL_PACKET package; + + + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intKDR[0]; package.parameter[1]=intKDR[1]; - package.parameter[2]=floatKDR[0]; + package.parameter[2]=floatKDR[0]; package.parameter[3]=floatKDR[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + break; - } + } case GET_KI_RIGHT: { memory.read(ADDRESS_LEFT_KP ,KI_RIGHT_BUFF); uint8_t intKIR[2],floatKIR[2]; com.FloatSep(KI_RIGHT_BUFF,intKIR,floatKIR); - - - ANDANTE_PROTOCOL_PACKET package; + + + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intKIR[0]; package.parameter[1]=intKIR[1]; - package.parameter[2]=floatKIR[0]; + package.parameter[2]=floatKIR[0]; package.parameter[3]=floatKIR[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + break; - } + } case GET_KD_RIGHT: { memory.read(ADDRESS_LEFT_KP ,KD_RIGHT_BUFF); uint8_t intKDR[2],floatKDR[2]; com.FloatSep(KD_RIGHT_BUFF,intKDR,floatKDR); - - - ANDANTE_PROTOCOL_PACKET package; + + + ANDANTE_PROTOCOL_PACKET package; package.robotId = MY_ID; - package.length = 6; + package.length = 6; package.instructionErrorId = WRITE_DATA; package.parameter[0]=intKDR[0]; package.parameter[1]=intKDR[1]; - package.parameter[2]=floatKDR[0]; + package.parameter[2]=floatKDR[0]; package.parameter[3]=floatKDR[1]; - rs485_dirc1=1; - wait_us(RS485_DELAY); - com1->sendCommunicatePacket(&package); - + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package); + break; - } - } - }break; - + } + case GET_MAX_LIDAR_DEGREE: { + com.sendMaxMinLidarDegree(lidar_angle_max,lidar_angle_min); + /*uint8_t intMax[2],floatMax[2]; + uint8_t intMin[2],floatMin[2]; + com.FloatSep(lidar_angle_max,intMax,floatMax); + com.FloatSep(lidar_angle_min,intMin,floatMin); + ANDANTE_PROTOCOL_PACKET package; + + package.robotId = MY_ID; + package.length = 10; + package.instructionErrorId = WRITE_DATA; + package.parameter[0]=intMax[0]; + package.parameter[1]=intMax[1]; + package.parameter[2]=floatMax[0]; + package.parameter[3]=floatMax[1]; + package.parameter[4]=intMin[0]; + package.parameter[5]=intMin[1]; + package.parameter[6]=floatMin[0]; + package.parameter[7]=floatMin[1]; + + ////rs485_dirc1=1; + wait_us(RS485_DELAY); + com1->sendCommunicatePacket(&package);*/ + } + case GET_LIDAR1: { + com.sendSensorDataAll1(lidar.Data); + } + } + } + break; + + } } - } }
--- a/rplidar/RPlidar.cpp Tue Jun 07 03:28:39 2016 +0000 +++ b/rplidar/RPlidar.cpp Tue Jun 07 16:17:34 2016 +0000 @@ -261,7 +261,7 @@ dis = _currentMeasurement.distance; - if(ang>=angMin&&ang<=angMax)Data[ang] = dis; + if(ang>=angMin&&ang<=angMax)Data[ang] = dis/10; return RESULT_OK; }
--- a/rplidar/rplidar.h Tue Jun 07 03:28:39 2016 +0000 +++ b/rplidar/rplidar.h Tue Jun 07 16:17:34 2016 +0000 @@ -76,7 +76,7 @@ u_result waitPoint(_u32 timeout = RPLIDAR_DEFAULT_TIMEOUT); u_result _sendCommand(_u8 cmd, const void * payload, size_t payloadsize); // retrieve currently received sample point - int Data[360]; + float Data[360]; int ang,dis; int angMin,angMax; void setAngle(int min,int max);