Using EV3 Device Binding C++ Library

ev3dev-lang の利用

ev3dev-lang には C++ や Python、Lua などの EV3 デバイスへのバインディングライブラリが含まれています。 以下では、C++ から利用できる、ev3dev バインディングの導入と使い方について説明します。

ev3dev-lang の取得

以下の作業は、クロス開発環境にて行います。既に、上述の方法でクロス開発環境が導入済みであるとして進めます。

まず、github から ev3dev-lang をクローニングします。クローニング先は、クロス開発環境内の適当な場所 (ここでは /home/openrtm/work の下) にします。

 $ cd ev3-ev3dev-work/home/
 $ mkdir -p openrtm/work
 $ cd openrtm/work
 $ git clone https://github.com/ddemidov/ev3dev-lang-cpp
 Cloning into 'ev3dev-lang-cpp'...
 remote: Counting objects: 1733, done.
 remote: Total 1733 (delta 0), reused 0 (delta 0), pack-reused 1733
 Receiving objects: 100% (1733/1733), 510.41 KiB | 310.00 KiB/s, done.
 Resolving deltas: 100% (1150/1150), done.
 Checking connectivity... done.
 $ ls
 ev3dev-lang-cpp
 $ cd  ev3dev-lang-cpp
 $ git checkout c0829011bf668bb77e55049a7f2f396b0b452f41

ev3dev-lang のビルド

次に、コンパイルを行います。まず、作業ディレクトリー work に入り、brickstrap のクロス開発モードに入ります。

 $ cd ~/work
 $ brickstrap -b ev3-ev3dev-jessie -d ev3-ev3dev-work shell

先ほど github からクローニングしたディレクトリに移動し、make します。

 # cd /home/openrtm/work/ev3dev-lang-cpp/
 # mkdir build
 # cd build
 # cmake .. -DEV3DEV_PLATFORM=EV3
 # make

コンパイルが終了すると build の下にスタティックリンクライブラリ (libev3dev.a)、demos の下にはいくつかのサンプルアプリケーションが生成されます。

サンプルプログラム

サンプルプログラムの内容は以下の通りです。 標準セットの構成で使用できる産プロプログラムは、button-test、ev3dev-lang-demo、ev3dev-lang-test で drive-test、remote_control-test には IRセンサーと IRビーコンが必要になります。

button-test EV3 インテリジェントブロック(本体)のボタン(十字、中央、キャンセル)の ON/OFF を表示するサンプル。
drive-test モード1: IRセンサーを距離センサーとして利用し、障害物がなければ直進、障害物があればターンする自動動作を繰り返す。モード2: IRビーコンを用いた赤外線による遠隔操作モード。(標準セットにはIRセンサー、IRビーコンが付属していません。)
ev3dev-lang-demo メニュー形式で、センサー、モーター、LED、ボタン、サウンド、バッテリー、LCD等のデバイスの様々な機能にアクセスできるでもプログラム。
ev3dev-lang-test libev3dev のテスト用プログラム。センサー、モーター、LEDなどの機能を一通りアクセスし、libev3dev の機能をテストするプログラム。
remote_control-test IRセンサーと IRビーコンを用いたリモートコントロールのでもプログラム。

サンプルロプログラムの EV3 へのコピー

実際に EV3 で動作させるために、サンプルプログラムを EV3 にコピーします。EV3 で ev3dev が起動してネットワークにつながっていることを確認してください。クロス開発環境側から以下のようにしてコピーします。

 # cd demos ← ev3dev-lang-cpp/demos に移動
 # scp * ev3dev.local:/tmp/ ← ファイルを ev3.local (EV3) の /tmp/ にコピー

サンプルプログラムの実行

そのままターミナルから ev3dev.local にログインしてサンプルプログラムを実行します。

 # ssh ev3dev.local
 login: root
 password: r00tme
 # cd /tmp
 # ./ev3dev-lang-demo
 *** main menu ***
 
 (s)ensors
 (m)otors
 (l)eds
 (b)uttons
 s(o)und
 b(a)ttery
 l(c)d
 (q)uit
 
 Choice: 

自作のプログラムのビルド

自作のプログラムをビルドする際は ev3dev.h のインクルードと libev3dev.a とのリンクする必要があります。 以下は CMakeLists.txt の一例です。

 cmake_minimum_required(VERSION 2.8)
 
 set(ev3dev_dir /home/ev3dev-lang-cpp)
 set(ev3dev_lib ${ev3dev_dir}/build/libev3dev.a)
 
 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
 
 project( testEV3 )
 add_executable(testEV3 main.cpp)
 include_directories(${ev3dev_dir})
 target_link_libraries(testEV3 ${ev3dev_lib} pthread)

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK