12
main.cpp
- Committer:
- panzhan
- Date:
- 2021-06-09
- Revision:
- 0:dd5d4837292c
File content as of revision 0:dd5d4837292c:
#include "mbed.h" #include <cstring> #include "math_ops.h" #include "leg_message.h" #include "CAN.h" #include "used_leg_message.h" #include "data_pc.h" #include "data_board.h" #include "mode.h" #include "data_command.h" #include "math_ops.h" #include "fuzzy.h" #include "calculate.h" #include "timer.h" float ankp = 0.0f; float ankv = 0.0f; float ankt = 0.0f; float knp = 0.0f; float knv = 0.0f; float knt = 0.0f; float count=0.0f; float result_knee=0.0f; float result_ankle=0.0f; //////////////////////////////////////////////////////////////////////////////// // PID调试 // //////////////////////////////////////////////////////////////////////////////// int main() { ////////////////////////初始化////////////////////////////////////// pc.baud(115200); // U2 pc.attach(&serial_pc_isr); foot.baud(115200); // U1 foot.attach(&serial_board_isr); command.baud(115200); // U3 command.attach(&serial_command_isr); ankle_can.frequency(1000000); ankle_can.filter(CAN_ID<<21, 0xFFE00004, CANStandard, 0); ankle_rxMsg.len = 6; ankle_txMsg.len = 8; ankle_txMsg.id = 0x01; knee_can.frequency(1000000); knee_can.filter(CAN_ID<<21, 0xFFE00004, CANStandard, 0); knee_rxMsg.len = 6; knee_txMsg.len = 8; knee_txMsg.id = 0x02; //////////////////////////////////////////////////////////////////////////////// wait(4); EnterMotorMode(&knee_txMsg); EnterMotorMode(&ankle_txMsg); Zero(&knee_txMsg); Zero(&ankle_txMsg); tim.start(); while(1) { ankle_can.read(ankle_rxMsg); unpack_reply(ankle_rxMsg, &a_state); wait_us(100); knee_can.read(knee_rxMsg); unpack_reply(knee_rxMsg, &a_state); ankp = a_state.ankle_state.p; // 从CAN获得的当前位置 ankv = a_state.ankle_state.v; ankt = a_state.ankle_state.t; knp = a_state.knee_state.p; // 从CAN获得的当前位置 knv = a_state.knee_state.v; knt = a_state.knee_state.t; control(ankp, knp); if(send_enable == 1){ PackAll(); WriteAll(); } // pc.printf("p:%.3f\tv:%.3f\tKp:%.3f\tKd:%.3f\ttff:%.3f\n",a_control.ankle.p_des, a_control.ankle.v_des, a_control.ankle.kp, a_control.ankle.kd, a_control.ankle.t_ff); // pc.printf("%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n", a_state.knee_state.p, a_control.knee.p_des, a_state.ankle_state.p, a_control.ankle.p_des,tim.read()); // pc.printf("AB%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t%.3f\n", a_state.knee_state.p, a_control.knee.p_des, a_state.knee_state.t, a_state.ankle_state.p, a_control.ankle.p_des, a_state.ankle_state.t); pc.printf("AB"); if(a_state.knee_state.p >= 0) pc.printf("+%.3f\t",a_state.knee_state.p); else pc.printf("%.3f\t",a_state.knee_state.p); if(a_control.knee.p_des >= 0) pc.printf("+%.3f\t",a_control.knee.p_des); else pc.printf("%.3f\t",a_control.knee.p_des); if(a_state.knee_state.t >= 0) pc.printf("+%.3f\t",a_state.knee_state.t); else pc.printf("%.3f\t",a_state.knee_state.t); if(a_state.ankle_state.p >= 0) pc.printf("+%.3f\t",a_state.ankle_state.p); else pc.printf("%.3f\t",a_state.ankle_state.p); if(a_control.ankle.p_des >= 0) pc.printf("+%.3f\t",a_control.ankle.p_des); else pc.printf("%.3f\t",a_control.ankle.p_des); if(a_state.ankle_state.t >= 0) pc.printf("+%.3f\n",a_state.ankle_state.t); else pc.printf("%.3f\n",a_state.ankle_state.t); } }