Clone per testare Mbed studio
Dependencies: PwmIn IONMcMotor MPU6050 Eigen ROVER
Fork of Hyfliers_Completo_testato by
Diff: Hyfliers_robot_eth_msgs.h
- Revision:
- 6:584653235830
diff -r 362759e42070 -r 584653235830 Hyfliers_robot_eth_msgs.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Hyfliers_robot_eth_msgs.h Tue Sep 14 11:18:35 2021 +0000 @@ -0,0 +1,299 @@ +//Communication messages for ethernet protocol + +enum RobotCmd { + IDLE_STATE, + DISABLE_MOTORS, + ENABLE_ROVER, + ENABLE_ARM, + ENABLE_TOOL, + ARM_JOINT_CONTROL, + ARM_KINEMATIC_CONTROL_FIRST_ORDER, + ARM_KINEMATIC_CONTROL_SECOND_ORDER, + CALIBRATE_ROVER_IMU, + CALIBRATE_ROVER_LASERS, + CALIBRATE_ARM_LASERS, + GET_CURRENT_ROBOT_STATE, + RESTART_BOARD, + STOP_ALL +}; + + +enum Status { + ETH_CONNECTED, + ETH_SRV_ACCEPTED, + ETH_LOST_CONNECTION, + ETH_WRONG_RECV_SIZE, + ETH_CHECKSUM_ERROR, + ETH_NEW_CNF, + ETH_NEW_CMD, + ETH_NEW_CMD_CURRENT_VAL_REQUEST, + ETH_ERROR_SENDING_DATA, + ETH_IDLE, + ROBOT_SAFETY_MODE +}; + + +enum ControlMode { + IDLE_MODE, + GET_ROBOT_STATE_MODE, + JOINT_CONTROL_MODE, + KINEMATIC_CONTROL_FIRST_ORDER_MODE, + KINEMATIC_CONTROL_SECOND_ORDER_MODE, + ADMITTANCE_CONTROL_MODE, + HYBRID_CONTROL_MODE, + HYBRID_ADMITTANCE_CONTROL_MODE, + SAFETY_MODE +}; + +enum PacketId { + ID_config, + ID_receive_command_send_prec_val, + ID_receive_command_send_current_val +}; + + +struct DebugVector +{ + float d1; + float d2; + float d3; + float d4; + float d5; + float d6; + float d7; + float d8; + float d9; + float d10; + float d11; + float d12; + float d13; + float d14; + float d15; + float d16; + float d17; + float d18; + float d19; + float d20; + float d21; + float d22; + float d23; + float d24; + +}; + +struct DataToTheBoard +{ + float roverForwardVel; + float roverZVel; //speed around z axis (used to correct the rover orientation on the pipe) + float roverFrontJointAngle; + float roverRetroJointAngle; + //Arm position in base frame + float armX; + float armY; + float armZ; + //Arm oriantation in base frame + float armQ0; + float armQ1; + float armQ2; + float armQ3; + + float drone_roll; + float drone_pitch; + + float jointPos1; + float jointPos2; + float jointPos3; + float jointPos4; + float jointPos5; + float toolOrientAroundPipeAxis; + float roverLongitudinalPosition; + bool toolEmatClose; + +}; + + +struct ConfigDataToTheBoard +{ + float wdTime; + + bool debug; + + float dtBoard; + float r_frontWheel; + float r_retroWheel; + float pipeCurve_I; + float pipeCurve_E; + float pipeCurve_M; + float retroFrontCentralDistance; + float wheelsCntactPointDistanceFromPipeCenter; + float pipeRadious; + float Kp_stabilization; + float Kd_stabilization; + + + float Kp_zero_torque; + float Ki_zero_torque; + + float wheelsAcceleration; + + float jacobianInversionWeight1; + float jacobianInversionWeight2; + float jacobianInversionWeight3; + float jacobianInversionWeight4; + float jacobianInversionWeight5; + float jacobianInversionWeight6; + float jacobianInversionWeight7; + float jacobianInversionWeight8; + + + // arm DH + float a3; + float a4; + float a5; + float a5i; + float a6; + float d7; + // drone distances + float x_0_r2; + float y_0_r2; + float z_0_r2; + + float massr; + float mpxr ; + float mpyr ; + float mpzr ; + float mass1; + float mpx1 ; + float mpy1 ; + float mpz1 ; + float mass2; + float mpx2 ; + float mpy2 ; + float mpz2 ; + float mass3; + float mpx3 ; + float mpy3 ; + float mpz3 ; + float mass4; + float mpx4 ; + float mpy4 ; + float mpz4 ; + float mass5; + float mpx5 ; + float mpy5 ; + float mpz5 ; + float mass6; + float mpx6 ; + float mpy6 ; + float mpz6 ; + + float mass_battery; + float mpx_battery; + float mpz_battery; + + float kp_first_order; + float ko_first_order; + float kp_second_order; + float ko_second_order; + float dp_second_order; + float do_second_order; + + float jointsMaxVel; + float jointsMaxAcc; + float jointsFilterOmega; + float jointsFilterZita; + float velAccSafetyFactor; + + float maxCartPos_x; + float maxCartPos_y; + float maxCartPos_z; + + float minCartPos_x; + float minCartPos_y; + float minCartPos_z; + + + +}; + +struct DataFromTheBoard +{ + float roverForwardVel; + float roverStabVel; + float roverZVel; //speed around z axis (used to correct the rover orientation on the pipe) + float roverPitchAngle; + float roverOdom; + float roverLaserFrontDx; + float roverLaserFrontSx; + float roverLaserRetroDx; + float roverLaserRetroSx; + + //Arm position in base frame + float misTebX; + float misTebY; + float misTebZ; + //Arm oriantation in base frame + float misTebQ0; + float misTebQ1; + float misTebQ2; + float misTebQ3; + + float cmdJointPos1; + float cmdJointPos2; + float cmdJointPos3; + float cmdJointPos4; + float cmdJointPos5; + float cmdJointPos6; + + float estRoverJointPos1; + float estRoverJointPos2; + + float misArmJointPos1; + float misArmJointPos2; + float misArmJointPos3; + float misArmJointPos4; + float misArmJointPos5; + float misArmJointPos6; + + float droneFx; + float droneFy; + float droneFz; + float droneTx; + float droneTy; + float droneTz; + + float toolOrientAroundPipeAxis; + + float toolLaserFrontDx; + float toolLaserFrontSx; + float toolLaserRetroDx; + float toolLaserRetroSx; + +}; + +struct ComandMsg +{ + int pId; + RobotCmd Cmd; + DataToTheBoard Data; + uint8_t Checksum; +}; + +struct ConfigMsg +{ + int pId; + ConfigDataToTheBoard Data; + uint8_t Checksum; +}; + + +struct ResponseMsg +{ + int StatusData; + int ControlModeData; + DataFromTheBoard Data; + DebugVector Dbv; + +}; + +