13 #ifndef KOBUKI_DIFF_DRIVE_HPP_ 14 #define KOBUKI_DIFF_DRIVE_HPP_ 23 #include <ecl/geometry/legacy_pose2d.hpp> 24 #include <ecl/mobile_robot.hpp> 25 #include <ecl/threads/mutex.hpp> 26 #include "../macros.hpp" 41 const ecl::DifferentialDrive::Kinematics&
kinematics() {
return diff_drive_kinematics; }
42 void update(
const uint16_t &time_stamp,
43 const uint16_t &left_encoder,
44 const uint16_t &right_encoder,
45 ecl::LegacyPose2D<double> &pose_update,
46 ecl::linear_algebra::Vector3d &pose_update_rates);
48 void getWheelJointStates(
double &wheel_left_angle,
double &wheel_left_angle_rate,
49 double &wheel_right_angle,
double &wheel_right_angle_rate);
50 void setVelocityCommands(
const double &vx,
const double &wz);
51 void velocityCommands(
const double &vx,
const double &wz);
52 void velocityCommands(
const short &cmd_speed,
const short &cmd_radius);
59 std::vector<short> velocityCommands();
60 std::vector<double> pointVelocity()
const;
88 short bound(
const double &value);
ecl::Mutex velocity_mutex
void velocityCommands(const std::vector< short > &cmd)
std::vector< double > point_velocity
void velocityCommands(const std::vector< double > &cmd)
double wheel_bias() const
ecl::DifferentialDrive::Kinematics diff_drive_kinematics
const ecl::DifferentialDrive::Kinematics & kinematics()
unsigned short last_timestamp
unsigned short last_tick_right
double last_velocity_right