LoginSignup
18
16

More than 5 years have passed since last update.

Intel Edisonを使ったロボット

Posted at

Intel Edisonを使ったロボット

UART経由でシリアル通信を行ったIntel Edisonで動くロボットに挑戦!!

【仕様】
・WEB画面(Node.js or python)でロボットを操作
・音声認識、画像認識で動作

今回、音声認識や画像認識を行う予定なのでEdison上のYocto linuxをRebuildを実施。
(EdisonでUSBビデオやUSB音声を扱うのにOSイメージのRebuildが必要)

☆作成中のロボット☆
IMG_0381.JPG
☆操作画面☆
スクリーンショット 2014-12-07 14.09.11.png

Yocto linux Rebuild手順(ubuntu作業)

準備したもの
・ubuntu-14.04.1-server(VM :CPU: 2, MEM: 4G, Disk: 50G)

1.コンパイルに必要なパッケージをインストール

$ sudo apt-get install build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib

2.インストールに必要な設定

$ git config --global user.email "******@gmail.com"
$ git config --global user.name "tsunaki"

# 一時ディレクトリの作成(どこでもOK)
$ sudo mkdir -p /temp/bitbake_download_dir
$ sudo mkdir -p /temp/bitbake_sstate_dir
$ sudo chmod 777 -R /temp

3.LinuxイメージをDownLoadする

ここからをwgetなどでDownLoad(Edison Linux source files)

$ wget http://downloadmirror.intel.com/24389/eng/edison-src-rel1-maint-rel1-ww42-14.tgz

$ tar xvf edison-src-rel1-maint-rel1-ww42-14.tgz

$ cd edison-src

4.build初期設定

$ ./device-software/setup.sh --dl_dir=/temp/bitbake_download_dir --sstate_dir=/temp/bitbake_sstate_dir --bb_number_thread=8 --parallel_make=8

# buildに必要な環境変数を設定
$ source poky/oe-init-build-env

5.カーネルのbuild

スペックにもよりますが、かなり時間が掛かります

# build
$ bitbake virtual/kernel

6.カーネル設定

$ bitbake linux-yocto -c menuconfig

メニュー画面で以下を設定して<save>する
 ■ Video設定
  Device Drivers
   Multimedia support
    Media USB Adapters
     USB Video Class [M] ←ここを設定
      UVC input events device support

 ■ Sound設定
  Device Drivers
   Sound card support
    Advanced Linux Sound Architecture
     USB sound devices [M] ←ここを設定

※終了は<Exit>で階層があがるので、最初のページまで実行すればOK。

スクリーンショット 2014-12-07 12.17.56.png

7.カーネルのRebuild

終わったら,設定した.configをコピーする。

$ cp tmp/work/edison-poky-linux/linux-yocto/3.10.17+gitAUTOINC+6ad20f049a_c03195ed6e-r0/linux-edison-standard-build/.config ../device-software/meta-edison/recipes-kernel/linux/files/defconfig

# rebuild
$ bitbake virtual/kernel

8.全体のbuild

$ bitbake edison-image

※ build中にwarningが出ても問題なし。

9.Edisonへ焼き込み

以下のコマンドで,Edisonに焼き込むファイルをtoFlashフォルダにまとめる。

$ ../device-software/utils/flash/postBuild.sh

ここから実際にEdisonに焼き込みを行う。
※先ずはEdisonとubuntuは接続しないでおく

$ cd toFlash
$ sudo ./flashall.sh
[sudo] password for slavey:
Using U-Boot target: edison-default
Now waiting for dfu device 8087:0a99
Please plug and reboot the board
# ↑これが出たらEdisonのUSB OTGを接続する。

焼き込みが完了したら、とりあえずEdisonの電源を切ってubuntuと切り離す。

10.ここからEdisonでの作業

Mac側でEdisonへシリアルログイン

$ screen  /dev/tty.usbserial-A703ZARJ 115200 -L 

User : root
Pass : なし

先ず、USB接続が認識されていることを確認

USB OTGを外部機器で利用する際は電源供給をUSB以外から行う必要がある。
Intel Edison Breakout Board Hardware Guideを見ると、J21から7v〜15vを取得できるとのこと。

今回は、Galileo用の12vをブレッドボードから結合。
IMG_0387.jpg

# ドライバを認識しているかの確認
root@edison:~# lsmod
Module                  Size  Used by
uvcvideo               71516  0 
videobuf2_vmalloc      13003  1 uvcvideo
videobuf2_memops       13001  1 videobuf2_vmalloc
videobuf2_core         37707  1 uvcvideo
usb_f_acm              14335  1 
u_serial               18582  6 usb_f_acm
g_multi                70703  0 
libcomposite           39245  2 usb_f_acm,g_multi
bcm_bt_lpm             13676  0 
bcm4334x              574851  0 

root@edison:~# lsusb
Bus 001 Device 002: ID 05e3:0608 Genesys Logic, Inc. USB-2.0 4-Port HUB
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 056e:7016 Elecom Co., Ltd 
Bus 001 Device 004: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller

認識されているのを確認したら、Edisonの初期セットアップ

# PASSWORD, WIFIの設定
$ configure_edison --setup

# Package Managerの設定
$ vi /etc/opkg/base-feeds.conf
src/gz all http://repo.opkg.net/edison/repo/all
src/gz edison http://repo.opkg.net/edison/repo/edison
src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32

$ vi /etc/opkg/intel-iotdk.conf
src intel-iotdk http://iotdk.intel.com/repos/1.1/intelgalactic
src intel-all http://iotdk.intel.com/repos/1.1/iotdk/all
src intel-i586 http://iotdk.intel.com/repos/1.1/iotdk/i586
src intel-x86 http://iotdk.intel.com/repos/1.1/iotdk/x86

# Package Update
$ opkg update
$ opkg upgrade

11.オーディオ入出力ツールをインストール

opkgでALSAをインストール

$ opkg install alsa-utils

12.音声を出力

テスト用のサウンド(test.wav)準備して音声出力

$ aplay -D plughw:1,0 test.wav 

イヤホンから音が出ている確認ができました。

13.Edisonロボット接続

今回は以下の20軸サーボモータコントローラを使用
WR-MSXX.jpg

サーボコントローラを操作はシリアル通信で行うため、EdisonのUART設定を行う。
UARTはGalileo開発ボードのPIN0/PIN1(/dev/ttyMFD1)を利用。

UARTを使うにはGPIOのmodeを変更しなければ行けないらしい?!
※Intelのmraaでmraa_uart_init(0);でもOKみたいです。
 mraa: uart.h File Reference

以下コマンドを実行してmode変換

$ echo 214 > /sys/class/gpio/export 2>&1
$ echo high > /sys/class/gpio/gpio214/direction
$ echo low > /sys/class/gpio/gpio214/direction

$ echo 131 > /sys/class/gpio/export 2>&1
$ echo mode1 > /sys/kernel/debug/gpio_debug/gpio131/current_pinmux
$ echo 249 > /sys/class/gpio/export 2>&1
$ echo high > /sys/class/gpio/gpio249/direction
$ echo 1 > /sys/class/gpio/gpio249/value
$ echo 217 > /sys/class/gpio/export 2>&1
$ echo high > /sys/class/gpio/gpio217/direction
$ echo 1 > /sys/class/gpio/gpio217/value
$ echo out > /sys/class/gpio/gpio131/direction
$ echo 0 > /sys/class/gpio/gpio131/value


$ echo 130 > /sys/class/gpio/export 2>&1
$ echo mode1 > /sys/kernel/debug/gpio_debug/gpio130/current_pinmux
$ echo 248 > /sys/class/gpio/export 2>&1
$ echo low > /sys/class/gpio/gpio248/direction
$ echo 0 > /sys/class/gpio/gpio248/value
$ echo 216 > /sys/class/gpio/export 2>&1
$ echo in > /sys/class/gpio/gpio216/direction
$ echo in > /sys/class/gpio/gpio130/direction

$ echo high > /sys/class/gpio/gpio214/direction

このあとNode.jsのserialportで接続の確認ができ、Wifi経由でロボット操作が可能になりました。

ここまでで、なんだかんだ2日も掛かりました。

このあと音声認識と画像認識の組込みを行う予定です。
ただ、Edisonの外部機器とサーボ9軸への電源供給が課題。。。

18
16
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
16