etrobocon2018 feat.KatLab  770af34cce41ae9c30c41303275e1add2daae0c3 (with uncommitted changes)
 全て クラス 名前空間 ファイル 関数 変数 列挙型 列挙値 フレンド マクロ定義 ページ
公開メンバ関数 | 全メンバ一覧
Walker クラス

#include <Walker.h>

Walker 連携図
Collaboration graph

公開メンバ関数

 Walker ()=default
 
 Walker (Controller &controller_)
 
void stop ()
 
void run (std::int8_t pwm, std::int8_t turn)
 
int edgeChange ()
 
void moveAngle (std::int8_t pwm, int angle)
 
void angleChange (int angle, int rotation)
 
std::int32_t get_count_L ()
 
std::int32_t get_count_R ()
 
void init ()
 
void terminate ()
 
void reset ()
 
void setBrakeMotor (bool brake)
 

詳解

Walker.h7 行目に定義があります。

構築子と解体子

Walker::Walker ( )
default
Walker::Walker ( Controller controller_)
inlineexplicit

Walker.h10 行目に定義があります。

10 : controller(controller_) { reset(); }
void reset()
Definition: Walker.cpp:15

呼び出し関係図:

関数詳解

void Walker::angleChange ( int  angle,
int  rotation 
)

Walker.cpp101 行目に定義があります。

102 {
103  int32_t defaultAngleL;
104  int8_t dAngle = 75; // 45度におけるモーター回転数(床材によって変わる?)
105 
106  if(rotation >= 0) {
107  if(leftRight == 1) {
108  rotation = 1;
109  } else {
110  rotation = -1;
111  }
112  } else {
113  if(leftRight == 1) {
114  rotation = -1;
115  } else {
116  rotation = 1;
117  }
118  }
119 
120  /*
121  * 本来は45度単位だから、angleは45で割る
122  * ベータ機能として5度単位でも曲がれるようにしている
123  * そのため、もしangleが5度単位である場合はdAngleを9分割する
124  */
125  if(angle % 5 == 0 && angle % 45 != 0) {
126  dAngle = 8;
127  angle /= 5;
128  } else {
129  angle -= angle % 45;
130  angle /= 45;
131  }
132 
133  defaultAngleL = controller.leftWheel.getCount();
134 
135  while(1) {
136  run(0, 10 * rotation);
137  if(rotation >= 0) {
138  if(controller.leftWheel.getCount() - defaultAngleL < -dAngle * angle * rotation
139  || controller.leftWheel.getCount() - defaultAngleL > dAngle * angle * rotation) {
140  break;
141  }
142  } else {
143  if(controller.leftWheel.getCount() - defaultAngleL > -dAngle * angle * rotation
144  || controller.leftWheel.getCount() - defaultAngleL < dAngle * angle * rotation) {
145  break;
146  }
147  }
148  controller.clock.sleep(4);
149  }
150  stop();
151 }
void stop()
Definition: Walker.cpp:21
Clock clock
Definition: Controller.h:48
void run(std::int8_t pwm, std::int8_t turn)
Definition: Walker.cpp:30
void sleep(uint32_t duration)
Definition: Clock.h:58
Motor leftWheel
Definition: Controller.h:46
int32_t getCount(void) const
Definition: Motor.h:67

呼び出し関係図:

被呼び出し関係図:

int Walker::edgeChange ( )

Walker.cpp59 行目に定義があります。

60 {
61  if(leftRight == 1) {
62  run(10, 5);
63  controller.clock.sleep(10);
64  leftRight = -1;
65  } else {
66  run(10, 5);
67  controller.clock.sleep(10);
68  leftRight = 1;
69  }
70 
71  return leftRight;
72 }
Clock clock
Definition: Controller.h:48
void run(std::int8_t pwm, std::int8_t turn)
Definition: Walker.cpp:30
void sleep(uint32_t duration)
Definition: Clock.h:58

呼び出し関係図:

std::int32_t Walker::get_count_L ( )

Walker.cpp49 行目に定義があります。

50 {
51  return controller.leftWheel.getCount();
52 }
Motor leftWheel
Definition: Controller.h:46
int32_t getCount(void) const
Definition: Motor.h:67

呼び出し関係図:

被呼び出し関係図:

std::int32_t Walker::get_count_R ( )

Walker.cpp54 行目に定義があります。

55 {
56  return controller.rightWheel.getCount();
57 }
int32_t getCount(void) const
Definition: Motor.h:67
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:

被呼び出し関係図:

void Walker::init ( )

Walker.cpp3 行目に定義があります。

4 {
5  // init_f("Walker");
6 }
void Walker::moveAngle ( std::int8_t  pwm,
int  angle 
)

Walker.cpp77 行目に定義があります。

78 {
79  controller.leftWheel.reset();
80  controller.rightWheel.reset();
81 
82  controller.leftWheel.setPWM(pwm);
83  controller.rightWheel.setPWM(pwm);
84 
85  while(1) {
86  if(controller.leftWheel.getCount() >= angle && controller.rightWheel.getCount() >= angle) break;
87  controller.clock.sleep(4);
88  }
89 
90  controller.leftWheel.reset();
91  controller.rightWheel.reset();
92 }
void setPWM(int pwm)
Definition: Motor.cpp:31
void reset(void)
Definition: Motor.h:55
Clock clock
Definition: Controller.h:48
void sleep(uint32_t duration)
Definition: Clock.h:58
Motor leftWheel
Definition: Controller.h:46
int32_t getCount(void) const
Definition: Motor.h:67
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:

void Walker::reset ( void  )

Walker.cpp15 行目に定義があります。

16 {
17  controller.leftWheel.reset();
18  controller.rightWheel.reset();
19 }
void reset(void)
Definition: Motor.h:55
Motor leftWheel
Definition: Controller.h:46
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:

被呼び出し関係図:

void Walker::run ( std::int8_t  pwm,
std::int8_t  turn 
)

Walker.cpp30 行目に定義があります。

31 {
32  controller.printDisplay(1, "running...");
33  setBrakeMotor(false);
34  /* left = p-t, right = p+t -> 右 */
35  /* left = p+t, right = p-t -> 左 */
36  // pwmは int型の -100 ~ 100
37  controller.leftWheel.setPWM(pwm - turn);
38  controller.rightWheel.setPWM(pwm + turn);
39 }
void setPWM(int pwm)
Definition: Motor.cpp:31
void setBrakeMotor(bool brake)
Definition: Walker.cpp:41
Motor leftWheel
Definition: Controller.h:46
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:

被呼び出し関係図:

void Walker::setBrakeMotor ( bool  brake)

Walker.cpp41 行目に定義があります。

42 {
43  // 0でフロート
44  // 1でブレーク
45  controller.leftWheel.setBrake(brake);
46  controller.rightWheel.setBrake(brake);
47 }
void setBrake(bool brake)
Definition: Motor.cpp:47
Motor leftWheel
Definition: Controller.h:46
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:

被呼び出し関係図:

void Walker::stop ( )

Walker.cpp21 行目に定義があります。

22 {
23  run(0, 0);
24 
25  controller.printDisplay(1, "stopping...");
26  controller.leftWheel.reset();
27  controller.rightWheel.reset();
28 }
void reset(void)
Definition: Motor.h:55
void run(std::int8_t pwm, std::int8_t turn)
Definition: Walker.cpp:30
Motor leftWheel
Definition: Controller.h:46
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:

被呼び出し関係図:

void Walker::terminate ( )

Walker.cpp8 行目に定義があります。

9 {
10  controller.printDisplay(1, "Stopped.");
11  controller.leftWheel.stop();
12  controller.rightWheel.stop();
13 }
void stop()
Definition: Motor.h:97
Motor leftWheel
Definition: Controller.h:46
void printDisplay(int8_t row, const char *format,...)
Definition: Controller.cpp:79
Motor rightWheel
Definition: Controller.h:45

呼び出し関係図:


このクラス詳解は次のファイルから抽出されました: