#ifndef PIBOT_MODLE_H_ #define PIBOT_MODLE_H_ //用于标识里程信息 struct Odom { float x; float y; float z; float vel_x; float vel_y; float vel_z; }; // 运动模型接口, 继承该类实现对应的模型 struct Model { // 构造函数 Model(){} Model(float _wheel_radius, float _body_radius): wheelRadius(_wheel_radius), bodyRadius(_body_radius){} // 参数更新接口 void set(float _wheel_radius, float _body_radius) { wheelRadius = _wheel_radius; bodyRadius = _body_radius; } // 析构函数 ~Model(){} // robot speed -> motor speed 运动解算 把给到机器人的速度分解为各个轮子速度 virtual void motionSolver(float* robot_speed, float* motor_speed) = 0; // motor speed -> robot speed 反解算, 把各个轮子的速度转为机器人的速度, // 这里通过固定时间间隔转为里程 //interval ms virtual void get_odom(struct Odom* odom, float* motor_dis, unsigned long interval) = 0; protected: float wheelRadius; // 轮子半径 float bodyRadius; // 机器人半径(泛指), 对于差分机器人模型bodyRadius就是轮距 }; #endif