1 #include "ETLineTracer.h"
\r
5 ETLineTracer::ETLineTracer(LinePos& linepos, Runner& runner)
\r
6 : m_linepos(linepos), m_runner(runner), m_pid(0.3, 0.001, 10.0)
\r
8 m_pid.SetClip(-50,50);
\r
9 m_pid.SetIntegralClip(-500,500);
\r
11 ETLineTracer::~ETLineTracer(void)
\r
14 void ETLineTracer::Run(int speed)
\r
18 CalcOutput(speed,m_linepos.GetLinePos(),forward,turn);
\r
19 m_runner.Run(forward,turn);
\r
21 bool ETLineTracer::IsException() const
\r
23 return m_runner.IsException();
\r
25 void ETLineTracer::Stop()
\r
29 void ETLineTracer::Reset()
\r
32 m_pid.ResetPrevDiff();
\r
34 void ETLineTracer::CalcOutput(int speed, int linepos, int& forward, int& turn)
\r
36 forward = speed * 7 / 10; //
\82Æ
\82è
\82 \82¦
\82¸
\82Ì
\8eÀ
\91\95\r
37 turn =static_cast<int>(m_pid.CalcControlValue(static_cast<float>(linepos)));
\r