趣味で作ってるロボット用ソフトウェア
 All Classes Files Functions Enumerations Enumerator Friends Pages
Roomba_driver.h
Go to the documentation of this file.
1 #ifndef HRK_ROOMBA_DRIVER_H
2 #define HRK_ROOMBA_DRIVER_H
3 
9 #include "Run_driver.h"
10 #include "Power_manager.h"
11 #include <string>
12 
13 
14 namespace hrk
15 {
17  class Roomba_driver : public Run_driver, public Power_manager
18  {
19  public:
20  Roomba_driver();
21  ~Roomba_driver();
22 
28  const char* what() const;
29 
39  bool open(const std::string& device_name, bool do_open = true);
40 
41  void close();
43  void set_connection(Connection* connection);
44  void set_straight_velocity(double m_per_sec);
45  double straight_velocity() const;
46  void set_rotate_velocity(const Angle& angle_per_sec);
47  Angle rotate_velocity() const;
48  void set_straight_acceleration(double m_per_sec2);
49  void set_rotate_acceleration(const Angle& angle_per_sec2);
50  PositionF position(const Locatable* coordinate = Global) const;
51  void set_position(const PositionF& position,
52  const Locatable* coordinate = Global);
53  double path_change_distance();
54  bool is_stable();
55  void follow_line(const PositionF& line,
56  const Locatable* coordinate = Global);
57  void follow_circle(const PointF& center, double radius,
58  const Locatable* coordinate = Global);
59  void stop_to_line(const PositionF& line,
60  const Locatable* coordinate = Global);
61  void spin(const Angle& spin_angle);
62  void spin_to_direction(const Angle& target_angle,
63  const Locatable* coordinate = Global);
64  void stop();
65  double distance_to(const PointF& point,
66  const Locatable* coordinate = Global);
67  double distance_to_perpendicular(const PositionF& line,
68  const Locatable* coordinate = Global);
69  Angle angle_to(const Angle& angle,
70  const Locatable* coordinate = Global);
71 
72  bool sleep();
73  bool wake_up();
74  bool power_down();
75  bool dock();
76  bool is_charging();
77  int charged_percent();
78 
84  void set_vacuum(bool on = true);
85 
86  void control_wheel_velocity(double right_m_per_sec,
87  double left_m_per_sec);
88 
89  private:
90  Roomba_driver(const Roomba_driver& rhs);
91  Roomba_driver& operator = (const Roomba_driver& rhs);
92 
93  struct pImpl;
94  std::auto_ptr<pImpl> pimpl;
95  };
96 }
97 
98 #endif
bool wake_up()
省電力な状態からの復帰
Definition: Roomba_driver.cpp:880
ロボットの移動制御
void set_vacuum(bool on=true)
掃除機能の On/Off を設定する
Definition: Roomba_driver.cpp:925
void set_rotate_acceleration(const Angle &angle_per_sec2)
回転角加速度を指定する
Definition: Roomba_driver.cpp:711
void spin_to_direction(const Angle &target_angle, const Locatable *coordinate=Global)
指定した向きで停止させる
Definition: Roomba_driver.cpp:810
void follow_circle(const PointF &center, double radius, const Locatable *coordinate=Global)
追従させる円を指定する
Definition: Roomba_driver.cpp:770
const char * what() const
状態を示すメッセージを返す
Definition: Roomba_driver.cpp:628
void spin(const Angle &spin_angle)
指定した角度だけ回転させる
Definition: Roomba_driver.cpp:800
角度
Definition: Angle.h:13
bool is_stable()
移動コマンドの動作が安定したかを返す
Definition: Roomba_driver.cpp:748
位置
Definition: PointF.h:12
電源の管理インターフェース
Definition: Power_manager.h:12
void close()
接続を閉じる
Definition: Roomba_driver.cpp:647
void follow_line(const PositionF &line, const Locatable *coordinate=Global)
追従させる直線を指定する
Definition: Roomba_driver.cpp:756
電源の管理インターフェース
接続のインターフェース
Definition: Connection.h:21
bool dock()
充電の開始を指示
Definition: Roomba_driver.cpp:894
void stop()
停止させる
Definition: Roomba_driver.cpp:825
int charged_percent()
充電されている割合をパーセントで返す
Definition: Roomba_driver.cpp:918
Connection * connection()
接続オブジェクトを返す
Definition: Roomba_driver.cpp:665
bool sleep()
省電力な状態への遷移
Definition: Roomba_driver.cpp:873
Angle angle_to(const Angle &angle, const Locatable *coordinate=Global)
向きとロボットとの角度差を返す
Definition: Roomba_driver.cpp:861
ルンバの制御
Definition: Roomba_driver.h:17
bool open(const std::string &device_name, bool do_open=true)
接続を開く
Definition: Roomba_driver.cpp:634
void set_rotate_velocity(const Angle &angle_per_sec)
回転角速度を指定する
Definition: Roomba_driver.cpp:688
bool power_down()
電源を切る
Definition: Roomba_driver.cpp:887
void set_straight_acceleration(double m_per_sec2)
並進加速度を指定する
Definition: Roomba_driver.cpp:704
double distance_to_perpendicular(const PositionF &line, const Locatable *coordinate=Global)
ベクトルの始点を通る垂線とロボットとの距離を返す
Definition: Roomba_driver.cpp:849
PositionF position(const Locatable *coordinate=Global) const
推定自己位置の取得
Definition: Roomba_driver.cpp:718
Angle rotate_velocity() const
回転角速度を取得する
Definition: Roomba_driver.cpp:695
void stop_to_line(const PositionF &line, const Locatable *coordinate=Global)
直線上で停止させる
Definition: Roomba_driver.cpp:786
void set_position(const PositionF &position, const Locatable *coordinate=Global)
位置の登録
Definition: Roomba_driver.cpp:728
ロボット用インターフェース
Definition: Run_driver.h:17
void set_straight_velocity(double m_per_sec)
並進速度を指定する
Definition: Roomba_driver.cpp:671
void set_connection(Connection *connection)
接続オブジェクトを設定する
Definition: Roomba_driver.cpp:658
Definition: Locatable.h:15
位置
Definition: PositionF.h:16
double straight_velocity() const
並進速度を取得する
Definition: Roomba_driver.cpp:678
bool is_charging()
充電中かを返す
Definition: Roomba_driver.cpp:907
double path_change_distance()
経路の切替えが適切に行える最短距離を返す
Definition: Roomba_driver.cpp:739
double distance_to(const PointF &point, const Locatable *coordinate=Global)
点とロボットとの距離を返す
Definition: Roomba_driver.cpp:835