(toppers-users 4609) mruby on EV3RT + TECS のサンプルプログラム ev3way_sample.rb の誤り?について

055 aqua aqua055 @ gmail.com
2016年 10月 12日 (水) 01:08:01 JST


TOPPERS MLの皆さま

柴田義之@noanoa07 です。

「mruby on EV3RT + TECS」のサンプルプログラム ev3way_sample.rb を動かそうと
して苦労してので報告します。

バージョン:mruby on EV3RT+TECS beta 1.0.1(2016-05-27)

ev3way_sample.rb は ETロボコン用のサンプルプログラムとのことなので、
ETロボコン EV3開発環境構築ガイド
https://github.com/ETrobocon/etroboEV3/wiki
のEV3way-ET組立図(EV3wayET16)に沿ってEV3を組み立てて、プログラムを実行
したのですが、どうしても倒立しませんでした。

比較のため、TOPPERS/EV3RT を使った C言語版サンプルプログラム EV3way_EV3RT_sample
https://github.com/ETrobocon/etroboEV3/wiki/sample_program
を入手して同じ走行体で実行したところ、すぐ倒立してライントレースをしました。
(センサーの割り当ては修正しました)

両者を比較したところ、Balancer に与えるgyroセンサーの値の正負が逆になっていました。

app.c
/* 倒立振子制御APIを呼び出し、倒立走行するための */
        /* 左右モータ出力値を得る */
        balance_control(
            (float)forward,
            (float)turn,
            (float)gyro,
            (float)GYRO_OFFSET,
            (float)motor_ang_l,
            (float)motor_ang_r,
            (float)volt,
            (signed char*)&pwm_L,
            (signed char*)&pwm_R);

ev3way_sample.rb
# 倒立振子制御APIを呼び出し、倒立走行するための
    # 左右モータ出力値を得る */
    pwm_l, pwm_r = Balancer.control(
    forward.to_f,
    turn.to_f,
    -$gyro.rate.to_f,
    GYRO_OFFSET,
    $motor_l.count.to_f,
    $motor_r.count.to_f,
    Battery.mV.to_f)

そこで、ev3way_sample.rb でも
-$gyro.rate.to_f,
を
$gyro.rate.to_f,
にしたところ、mruby版でも倒立し、ライントレースをしました。
(C言語版に比べると、かなりギクシャクしますが)

当方、ETロボコン2016の参加者ではありませんので(以前参加したことがありますが)、
既知の情報、もしくは走行体の組み立て自体が変わっているのかもしれませんが、一応
報告しておきます。

柴田義之@noanoa07