ETロボコンシミュレータ 体験報告

モデルベース開発をするのであればシミュレータ環境は欲しいところ。

TOPPERS/箱庭プロジェクトからリリースされたシミュレータの使い方を体験するチュートリアルがあるので、追試してみました。

https://qiita.com/kanetugu2018/items/0e521f4779cd680dab18

環境

Windows10 1909 18363.476 WSL Ubuntu18.04 gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0

Unity 2018.3.7f1 のインストール

Unityはバージョンアップによる機能追加が多く、互換性もボチボチ壊れるので、インストールするバージョンは合わせるのがよい。 2018.3.7f1 はLTS版ではないようなので、LTS版のページに飛んでしまうと見つけられない。

インストーラをダウンロードしたら、ダイアログにしたがって進められる。

WSL のインストール

私の環境ではインストール済みだった。UbuntuのLTS版である18.04を使っている。

Rubyのインスト―ル

ロボット制御プログラム(つまり、EV3のファーム)のソースを自動生成するツールがあるのだが、それがrubyで出来ている。

sudo apt install ruby

Windows Terminalをインストール

WSL上で開発を進めることになるので、実用できるターミナルがあるとインストール作業が捗る。 Windows Terminal (preview) がMicrosoft Storeからリリースされているのでそれを使う。

athrillのインストール

このページを参考にした。

https://qiita.com/kanetugu2018/items/81713a3431482eab0f52#ros%E5%AF%BE%E5%BF%9C%E7%89%88%E3%81%AEathrill%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86

$ make timer32=true

のところでエラーがでた。

$ gcc -O3 -c -g -Wall -Wunknown-pragmas -Wimplicit-int -Wtrigraphs -std=gnu99 -mtune=native -march=native -mfpmath=both  -I. -I../../../athrill/trunk/src/inc -I../../../athrill/trunk/src/lib -I../src/cpu -I../src/cpu/config -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/api -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/api -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/config -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/config/os/target/os_asp -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/target -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/target/os -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/device -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/inc -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/os/target/os_asp -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/protocol/cimpl -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/node/cimpl -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/topic/cimpl -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/comm/cimpl/target/lwip -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/comm/cimpl -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/packet/cimpl -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/packet/template/version/kinetic -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/packet/cimpl/version/kinetic -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/protocol/cimpl -I../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/transfer/cimpl -DTARGET_ATHRILL  -DLWIP_TRANSPORT_ETHERNET -DOS_LINUX -DSUPRESS_DETECT_WARNING_MESSAGE ../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/comm/cimpl/mros_comm_tcp_client_factory_cimpl.c
In file included from ../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/config/mros_sys_config.h:9:0,
                 from ../../../athrill/trunk/src/device/peripheral/mros-dev/mros-src/comm/cimpl/mros_comm_tcp_client_factory_cimpl.c:19:
../../../athrill/trunk/src/device/peripheral/mros-dev/mros-athrill/config/os/target/os_asp/mros_os_config.h:15:28: error: unknown type name ‘intptr_t’; did you mean ‘__intptr_t’?
 extern void cyclic_handler(intptr_t exinf);
                            ^~~~~~~~
                            __intptr_t
Makefile.env:61: recipe for target 'mros_comm_tcp_client_factory_cimpl.o' failed
make[1]: *** [mros_comm_tcp_client_factory_cimpl.o] Error 1
make[1]: Leaving directory '/mnt/e/src/github.com/tmori/athrill-target/v850e2m/build_linux'
Makefile:70: recipe for target 'libmros.a' failed
make: *** [libmros.a] Error 2

インストール作業中にビルドエラーが出てしまったので中断。解決できそうか判断でき次第再開することになりそう。

.cソースに #include <stdint.h>や #include "stdint.h" を追加するだけでは解決しないようです。

今日はここまで。解決できれば次回に続きます。

(2019/12/03 続き)

athrill-targetで make するとビルドエラーが発生する件はリポジトリごと再取得することで回避できました。

gcc5とgcc7での結果を比較するためにgcc-5をaptでインストールしたことも関係あるかもしれません。

原因は分からないのですが、インストール作業を進めることを優先します。

athrill用gcc

V850向けクロスコンパイラを取得します。

$ wget https://github.com/tmori/athrill-gcc/releases/download/v1.0/athrill-gcc-package.tar.gz
$ tar xzvf athrill-gcc-package.tar.gz                                                                                  │make[1]: Leaving directory '/mnt/e/src/github.com/tmori/athrill-target/v850e2m/build_linux'
athrill-gcc-package/                                                                                                                    │ranlib libmain.a libcui.a libcpu.a libbus.a libmpu.a libdevice.a libloader.a libstd.a libmros.a
athrill-gcc-package/athrill-gcc.tar.gz                                                                                                  │gcc -O3 -Wl,--allow-multiple-definition libmain.a libcui.a libcpu.a libbus.a libmpu.a libdevice.a libloader.a libstd.a libmros.a -o athathrill-gcc-package/binutils-2.24.tar.gz                                                                                                │rill2  -lpthread   -lm
athrill-gcc-package/libgmps.tar.gz                                                                                                      │/bin/cp athrill2 ../../../athrill/trunk/src/../../bin/linux/
athrill-gcc-package/README.txt
$ cd athrill-gcc-package/
$ tar xzvf athrill-gcc.tar.gz  
$ sudo mv usr/local/athrill-gcc /usr/local

箱庭用 EV3RT 開発環境のダウンロード

 git clone https://github.com/tmori/athrill-sample.git

以上でインストール作業は終わりです。 最後に、ソースの修正やドキュメントの更新を迅速に対応して頂いた @tmori さんありがとうございました。