src/BalancerCpp.cpp (35 lines of code) (raw):

/****************************************************************************** * BalancerCpp.cpp (for LEGO Mindstorms EV3) * Created on: 2015/01/25 * Implementation of the Class Balancer * Author: Kazuhiro.Kawachi * Copyright (c) 2015 Embedded Technology Software Design Robot Contest *****************************************************************************/ #include "balancer.h" #include "BalancerCpp.h" /** * コンストラクタ */ Balancer::Balancer() : mForward(0), mTurn(0), mOffset(0), mRightPwm(0), mLeftPwm(0) { } /** * バランサを初期化する * @param offset ジャイロセンサオフセット値 */ void Balancer::init(int offset) { mOffset = offset; balance_init(); // 倒立振子制御初期化 } /** * バランサの値を更新する * @param angle 角速度 * @param rwEnc 右車輪エンコーダ値 * @param lwEnc 左車輪エンコーダ値 * @param battety バッテリ電圧値 */ void Balancer::update(int angle, int rwEnc, int lwEnc, int battery) { // 倒立振子制御APIを呼び出し、倒立走行するための // 左右モータ出力値を得る balance_control( static_cast<float>(mForward), static_cast<float>(mTurn), static_cast<float>(angle), static_cast<float>(mOffset), static_cast<float>(lwEnc), static_cast<float>(rwEnc), static_cast<float>(battery), &mLeftPwm, &mRightPwm); } /** * 前進値、旋回値を設定する * @param forward 前進値 * @param turn 旋回値 */ void Balancer::setCommand(int forward, int turn) { mForward = forward; mTurn = turn; } /** * 右車輪のPWM値を取得する * @return 右車輪のPWM値 */ int8_t Balancer::getPwmRight() { return mRightPwm; } /** * 左車輪のPWM値を取得する * @return 左車輪のPWM値 */ int8_t Balancer::getPwmLeft() { return mLeftPwm; }