
メカナムのコード
shared/Wheel/Wheel.cpp
- Committer:
- e2011220
- Date:
- 2021-04-14
- Revision:
- 0:ee7e9405e1c7
File content as of revision 0:ee7e9405e1c7:
#include "Wheel.h" Wheel::Wheel(MD *md, double wheel_angle, double position_angle) { this->md = md; this->wheel_angle = wheel_angle; this->wheel_radius = 0; this->position_angle = position_angle; this->position_radius = 1; } Wheel::Wheel(MD *md, double wheel_angle, double position_x, double position_y, double wheel_radius) { this->md = md; this->wheel_angle = wheel_angle; this->wheel_radius = wheel_radius; set_position(position_x, position_y); } void Wheel::set_position(double position_x, double position_y) { position_angle = atan2(position_y, position_x); position_radius = sqrt( position_y * position_y + position_x * position_x ); } double Wheel::wheel_speed(double move_angle, double move_radius, double yaw) { double speed; double moving, rotating; while(move_angle > M_PI) move_angle -= 2.0 * M_PI; moving = cos(wheel_angle - move_angle) * move_radius; rotating = sin(wheel_angle - position_angle) * yaw * position_radius; speed = moving + rotating; return speed; } void Wheel::drive(double duty) { md->drive(duty); }