趣味で作ってるロボット用ソフトウェア
 All Classes Files Functions Enumerations Enumerator Friends Pages
Differential_drive.h
Go to the documentation of this file.
1 #ifndef HRK_DIFFERENTIAL_DRIVE_H
2 #define HRK_DIFFERENTIAL_DRIVE_H
3 
9 #include <memory>
10 #include "PositionF.h"
11 
12 
13 namespace hrk
14 {
17  {
18  public:
21 
23  void set_count_per_1m(int count);
24 
26  void set_count_per_1rotate(int count);
27 
29  void update_position(int left_difference, int right_difference,
30  double timestamp);
31 
33  std::pair<double, double> update_control(double timestamp);
34 
36  bool set_straight_velocity(double m_per_sec);
37 
38  double straight_velocity() const;
39 
41  bool set_rotate_velocity(const Angle& angle_per_sec);
42 
43  Angle rotate_velocity() const;
44 
46  bool set_straight_acceleration(double m_per_sec2);
47 
49  bool set_rotate_acceleration(const Angle& angle_per_sec2);
50 
52  bool set_straight_tiny_acceleration(double m_per_sec2);
53 
55  bool set_rotate_tiny_acceleration(const Angle& angle_per_sec2);
56 
58  bool set_path_tiny_difference(double m);
59 
62 
63  std::pair<double, double> wheels_velocity();
64 
66  bool set_position(const PositionF& position);
67 
69  double path_change_distance();
70 
72  bool is_stable();
73 
75  bool follow_line(const PositionF& line);
76 
78  bool follow_circle(const PointF& center, double radius);
79 
81  bool stop_to_line(const PositionF& line);
82 
84  bool spin(const Angle& spin_angle);
85 
87  bool spin_to_direction(const Angle& target_angle);
88 
90  bool stop();
91 
92  bool control_wheel_velocity(double right_m_per_sec,
93  double left_m_per_sec);
94 
95  private:
97  Differential_drive& operator = (const Differential_drive& rhs);
98 
99  struct pImpl;
100  std::auto_ptr<pImpl> pimpl;
101  };
102 }
103 
104 #endif
bool set_position(const PositionF &position)
位置の登録
Definition: Differential_drive.cpp:557
bool spin(const Angle &spin_angle)
指定した角度だけ回転させる
Definition: Differential_drive.cpp:601
double path_change_distance()
経路の切替えが適切に行える最短距離を返す
Definition: Differential_drive.cpp:551
bool stop_to_line(const PositionF &line)
直線上で停止させる
Definition: Differential_drive.cpp:592
角度
Definition: Angle.h:13
bool set_straight_acceleration(double m_per_sec2)
並進の加速度を指定する
Definition: Differential_drive.cpp:496
bool set_straight_tiny_acceleration(double m_per_sec2)
並進について、ゼロとみなす加速度を指定する
Definition: Differential_drive.cpp:516
bool stop()
停止させる
Definition: Differential_drive.cpp:619
位置
Definition: PointF.h:12
bool follow_line(const PositionF &line)
追従させる直線を指定する
Definition: Differential_drive.cpp:571
bool is_stable()
移動コマンドの動作が安定したかを返す
Definition: Differential_drive.cpp:565
void set_count_per_1rotate(int count)
1 回転あたりの両輪のエンコーダ変位の差
Definition: Differential_drive.cpp:415
bool set_rotate_tiny_acceleration(const Angle &angle_per_sec2)
回転について、ゼロとみなす加速度を指定する
Definition: Differential_drive.cpp:523
独立駆動二輪
Definition: Differential_drive.h:16
bool spin_to_direction(const Angle &target_angle)
指定した向きで停止させる
Definition: Differential_drive.cpp:610
std::pair< double, double > update_control(double timestamp)
経路追従の更新
Definition: Differential_drive.cpp:454
void set_count_per_1m(int count)
1 [m] あたりのエンコーダ変位
Definition: Differential_drive.cpp:408
bool set_path_tiny_difference(double m)
位置制御にて、十分に近いとみなせる距離を指定する
Definition: Differential_drive.cpp:531
void update_position(int left_difference, int right_difference, double timestamp)
推定自己位置の更新
Definition: Differential_drive.cpp:422
bool set_rotate_velocity(const Angle &angle_per_sec)
回転角速度を指定する
Definition: Differential_drive.cpp:478
bool set_straight_velocity(double m_per_sec)
並進速度を指定する
Definition: Differential_drive.cpp:460
位置
Definition: PositionF.h:16
bool follow_circle(const PointF &center, double radius)
追従させる円を指定する
Definition: Differential_drive.cpp:580
bool set_rotate_acceleration(const Angle &angle_per_sec2)
回転の加速度を指定する
Definition: Differential_drive.cpp:503
PositionF position()
推定自己位置の取得
Definition: Differential_drive.cpp:538