Re: The history of "M&Y"

Team "M&Y" and "花鳥風月"
the soliloquy of the father
毎日更新!

EV3ねた その5 EV3でNXCをうごかしてみるプロジェクト 動かない!

2020-04-24 | EV3ねた

新型コロナウイルスの感染拡大で、ステイホームを余儀なくされている今日この頃

皆さん、いかがお過ごしでしょうか(笑)

 

ずっと家にいるのも大変ですよね・・・

この時間でなにをやろうか考えていて、ふと・・・そうだEV3を使って見よう・・・と考えました。

我が家のチームはNXTまでしか使ったことがなく、EV3は購入したものの、一回箱から出しただけ、の状態でした。

たまに、M&Yのロボットで Rescue-Maze(正式には Rescue-B 笑)のデモをやるのに、見せるのはNXTのロボットだから、現在のチームには参考にならないかも・・・

しかもそのときに、偉そうに「EV3に沢山のセンサーを接続したいのなら、このロボットみたいにArduinoに接続すれば沢山のセンサーを接続できるよ」と説明したりしてます。本当に、EV3とArduinoが接続できるのか・・・自分で確認しないとダメだなぁ・・・と常々思っていたことを実験してみます。

 

では、EV3でNXCを動かす環境を作ってみます・・・

参考にしたのは、このページ

Ev3:BricxCCのインストール、設定とプログラム

丁寧に書かれているので、とにかく手順通りにやってみます。

 

■手順01 BricxCCの通常版、テストリリース版、linux tool、lms apiの4つのパッケージのダウンロード

http://bricxcc.sourceforge.net/

 

Downloading の latest version から最新版のBricxCCをダウンロードするのですが・・・すでにリンク切れのようです。幸いにも test release のリンクの方にはいろいろと揃っているようなので、こちらから調達します。

最新版として bricxcc_setup_33810_20130220.exe

テストリリース版として test_release20131007.zip

あと2つ

linux_tools.zip

lms_api.zip

をダウンロードします。

 

■手順02 G++ クロスコンパイラ環境 for ARMプロセッサ(EV3)のダウンロード

https://sourcery.mentor.com/GNUToolchain/package4574/public/arm-none-linux-gnueabi/arm-2009q1-203-arm-none-linux-gnueabi.exe

arm-2009q1-203-arm-none-linux-gnueabi.exe をダウンロードします。

 

■手順03 EV3ソースコード のダウンロード

https://github.com/mindboards/ev3sources

GitHubの Clone or Download をクリックして Download zip で全体をダウンロードします。

ev3sources-master.zip をダウンロードします。

展開(解凍)して・・・必要なのは、その中の ev3sources/lms2012/lms2012/sourceの下のファイルを lms2012フォルダを作成して、その下に格納します。

 

■手順04 EV3最新ファームウェアのダウンロード

これは、別途最新版にしたので省略

 

■手順05 BricxCCのBricxCCのインストール

(手順01で入手した)bricxccbricxcc_setup_33810_20130220.exe

を実行して、インストールします。

インストールするディレクトリとして(デフォルトではなく) C:\BricxCC を指定しました。

 

■手順06 G++ クロスコンパイラ環境のインストール

(手順02で入手した)arm-2009q1-203-arm-none-linux-gnueabi.exe を実行して CodeSourcery Lite のインストールを行います。

 

■手順07 BricxCCテストリリース版のインストール

(手順01で入手した)test_release20131007.zip を展開して、先ほどインストールした BricxCC に上書きします。

(丸ごとコピーして、上書きする)

 

■手順08 linux_tools.zip の解凍

(手順01で入手した)linux_tools.zip を解凍すると make.exe と rm.exe の2つのファイルが出てくるので、C:\BricxCC ディレクトリに格納します。

 

■手順09 lms_api.zipの解凍

(手順01で入手した)lms_api.zipを解凍して、フォルダ(lms_api)ごと C:\BricxCC ディレクトリに格納します。

 

■手順10 lms2012フォルダの格納

EV3ソースコードから取り出した(手順03で作成した)lms2012フォルダを C:\BricxCC ディレクトリに格納します。

 

■手順11 環境変数(PATH)の設定

画面左下の Windowsマークを右クリックして システム → システム情報→システムの詳細設定 でシステムのプロパティが開くので、詳細設定タブの環境変数をクリックします。

Pathを選択して 編集 をクリックして 変数値の最初に C:\BricxCC;C:\BricxCC\lms_api; を追記します。

 

■手順12 ヘッダファイル(JissenPBL.h)、EV3 BricxCCプログラムランチャー(run.rbf) のダウンロード

九州工業大学 花沢研究室 File Download

ヘッダファイル(JissenPBL.h)と EV3 BricxCCプログラムランチャー(run.rbf)をダウンロードします。

 

■手順13 JissennPBL.h の編集

(手順12で入手した)JissennPBL.h をメモ帳で開いて、#include の部分に追加します。

#include <sys/types.h> //追加
#include <sys/stat.h> //追加
#include //追加
#include "lms2012\lms2012.h"

#include "C:\BricxCC\lms_api\ev3_output.h"
#include "C:\BricxCC\lms_api\ev3_command.h"
#include "C:\BricxCC\lms_api\ev3_lcd.h"
#include "C:\BricxCC\lms_api\ev3_sound.h" //追加
#include "C:\BricxCC\lms_api\ev3_button.h" //追加
#include "C:\BricxCC\lms_api\ev3_constants.h" //追加
#include "C:\BricxCC\lms_api\ev3_timer.h" //追加

 

■手順14 二重宣言の解消

ヘッダファイル間で二重宣言されてしまっているため、このままコンパイルすると 通常ではエラーが発生してしまいます。 無理矢理ですが、この二重定義のままオブジェクトファイルの生成を行います。 この状態で一度、コンパイルを行います(コンパイルエラーが表示されます)。

⇒ここまで、すごく丁寧に書かれていた説明が、急にわからなくなりました。「一度コンパイルを行います」と言われても、何をどうやってやるのか、具体的な操作が書かれていません。う~ん、困った!

とりあえず、下の方に書いてあるモーターを動かすプログラムを入力してやってみました。

EV3をPCに接続し、EV3の電源を入れて・・・NXCを起動して、モーターを動かすプログラムを入力してみて、コンパイルします。

はい、エラーがドバっとでますね。

これで、続けていいのかなぁ

 

次に2重宣言のエラーとwarning表示を消します。C:\BricxCC\lms_api内にある ev3_lcd.h の内容を変更します。

ev3_lcd.h の52、54、55行目をコメント「//」にします。

#define LCD_BUFFER_SIZE (LCD_BYTE_WIDTH * LCD_HEIGHT)
→ // #define LCD_BUFFER_SIZE (LCD_BYTE_WIDTH * LCD_HEIGHT)

typedef byte IMGDATA; //!< Image base type
→ // typedef byte IMGDATA; //!< Image base type

typedef IMGDATA* IP; //!< Instruction pointer type
→ // typedef IMGDATA* IP; //!< Instruction pointer typeev3_constants.h

 

ev3_constants.h の内容を変更します。

ev3_constants.h も同じように52、53、54、330行をコメント「//」にします。

#define LCD_WIDTH 178 /*!< LCD horizontal pixels */
→ // #define LCD_WIDTH 178 /*!< LCD horizontal pixels */

#define LCD_HEIGHT 128 /*!< LCD vertical pixels */
→ // #define LCD_HEIGHT 128 /*!< LCD vertical pixels */

#define TOPLINE_HEIGHT 10 /*!< Top line vertical pixels */
→ // #define TOPLINE_HEIGHT 10 /*!< Top line vertical pixels */

#define FILENAME_SIZE 120 //!< Max filename size including path, name…
→ // #define FILENAME_SIZE 120 //!< Max filename size including path, name…

 

■手順15 NXCを起動

BricxCCを起動します。

Port に Automatic

BricType に EV3

Firmware に Linux

を選択します。

 

■手順16 モーターを動かす

File → NEW

// Sample Program “Motor.c”
#include < stdio.h >
#include < unistd.h >
#include “C:\BricxCC\lms_api\ev3_output.h”
#include “C:\BricxCC\lms_api\ev3_command.h”#include "jissenPBL.h"

int main()
{
if (!OutputInit())
{
return -1;
}
OnFwdEx(OUT_AB,70,0);
Wait(10000);
Off(OUT_AB);
}

このプラグラムを入力して、Motor.c としてセーブします。

「View」→「Project Manager」をクリックします。

「Files」内で右クリックして「Add」を選択して

C:\BricxCC\lms_api\ev3_button.c
C:\BricxCC\lms_api\ev3_command.c
C:\BricxCC\lms_api\ev3_lcd.c
C:\BricxCC\lms_api\ev3_output.c
C:\BricxCC\lms_api\ev3_sound.c
C:\BricxCC\lms_api\ev3_timer.c

これらのパスを追加します。

 

File→Open から 今作成したプロジェクトファイル Motor.prj を開きます。

それぞれのパスに C:\BricxCC\lms_api\ を追加します。

 

ここまでで、NXCがEV3で実施可能のハズなのですが・・・使えません。

エラーになります。

 

 

エラーログには

motor.c:2:21: error:  stdio.h : No such file or directory
motor.c:3:22: error:  unistd.h : No such file or directory
make: *** [motor] Error 1

と、エラーが出ます。

そもそも stdio.h が無い・・・

 

ぐぐったりしたけど・・・さすがに、これは、どうしようもない!?

 

 

どなたか、EV3でNXCを使っている方、環境設定のやりかたを教えてください。

 

追補・・・なんかいろいろといじっていたら、コンパイルができるようになりました。

はっきり言うと・・・なんで動くようになったのかわかりません。(苦笑)

別記事で原因を究明していきたいと思います・・・

 

続きの記事はこちら EV3でNXCをうごかしてみるプロジェクト 動いた!

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
«  藤原藤房卿遺跡 | トップ | EV3ねた その6 EV3でNXCをう... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

EV3ねた」カテゴリの最新記事