読者です 読者をやめる 読者になる 読者になる

空飛ぶロボットのつくりかた

ロボットをつくるために必要な技術をまとめます。ロボットの未来についても考えたりします。

Deep Learningの環境構築(Ubuntu14.04+GTX 950M+CUDA+cuDNN)

これから過酷な戦いが始まる…

ノートパソコンにDeep Learningの環境をつくってみる.

PC環境

目標

  1. Nvidia driver
  2. CUDA
  3. cuDNN
  4. chainer のインストー

Nvidia Driver

悪名高き?ドライバnouveau

nouveauをブラックリストに入れないとNvidiaのドライバが正しくインストールできない可能性がある

参考: UbuntuにCUDAを入れようとしたらハマった - Qiita

Nvidia Driverのインストー

  1. GPUにあったDriverをインストー
  2. 以下の参考の方法でインストー
sudo ./NVIDIA-Linux-x86_64-367.44.run --no-opengl-files

参考: NVIDIAドライバダウンロード  Ubuntu14.04にNVIDIAドライバーをインストールしたらGUIログインできなくなったときの話 - Qiita  https://devtalk.nvidia.com/default/topic/878117/-solved-titan-x-for-cuda-7-5-login-loop-error-ubuntu-14-04-/

nvidia-smiについて

GPUの設定等が見れる

参考:nvidia-smiコマンドの詳細ついて - Qiita nvidia-smi: Control Your GPUs | Microway

CUDA

CUDA対応GPU

CUDA GPUs | NVIDIA Developer

CUDAのドライバ

CUDA Toolkit Archive | NVIDIA Developer

CUDAのインストール方法

  1. CUDA driverのrunファイルをダウンロード
  2. 以下の参考の方法でインストー
sudo ./cuda_7.5.18_linux.run --silent --no-opengl-libs --toolkit

参考: Ubuntu14.04にNVIDIAドライバーをインストールしたらGUIログインできなくなったときの話 - Qiita  https://devtalk.nvidia.com/default/topic/878117/-solved-titan-x-for-cuda-7-5-login-loop-error-ubuntu-14-04-/

CUDA環境変数設定

echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_ PATH' >> ~/.bashrc
echo 'export CUDA_PATH=/usr/local/cuda' >> ~/.bashrc
source ~/.bashrc

CUDAのバージョン確認方法

nvcc -V
Tips1: wgetとは
wget (URL)

URLはリンクを右クリックしてコピーしたもの

参考:wget コマンド | コマンドの使い方(Linux) | hydroculのメモ  NVIDIA Driverおよび CUDA のインストール - Qiita

Tips2: PPAとは

参考:Proprietary GPU Drivers : “Graphics Drivers” team  UbuntuのPPAて何? [Linuxの使い方] All About  Personal Package Archives : Ubuntu

CUDAインストール参考資料

http://developer.download.nvidia.com/compute/cuda/7_0/Prod/doc/CUDA_Getting_Started_Linux.pdf

Installation Guide Linux :: CUDA Toolkit Documentation

UbuntuにNvidia GPUのDriver + CUDAをInstallする(GTX1080対応版) - Qiita

Pascal世代GPUでのUbuntu14.04へのCUDAインストール - はぐれ大学院生つれづれ

098.wgetコマンド URLでファイルをダウンロードする LinuxコマンドLinuxコマンドU-Zネットワーク管理コマンド:UNIX/Linuxコマンド Topics Linux初心者のためのサイト

NVIDIA Driverおよび CUDA のインストール - Qiita

cuDNN

cuDNNのダウンロード

ダウンロードするには登録が必要

https://developer.nvidia.com/rdp/cudnn-download

ファイルをコピー

tar xvfz cudnn-<version>.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/* /usr/local/cuda/lib64

Chainer

Chainerのインストール方法

pip install chainer

アップグレードの方法

pip install -U chainer

ChainerでGPUを使う方法

  1. Variableオブジェクトをcupyから作る
  2. モデル設定後以下の2つを追加
xp = cuda.cupy
cuda.get_device(0).use()
model.to_gpu()

Chainerのサンプルダウンロード

$ git clone [https://github.com/pfnet/chainer:title]

GPUのパフォーマンス確認

上記サンプルの実行

CPU only (core i7)

$ time python train_mnist.py

real 16m27.166s

user 16m26.425s

sys 0m0.168s

GPU (GeForce 950M)

$ time python train_mnist.py -g 0

real 3m12.369s

user 2m50.749s

sys 0m5.305s

GPUを使用すると5倍くらいの速度が出る

chainerのバージョン確認方法

【Chainer】バージョンの確認

chainerの参考資料

Chainer: A flexible framework for neural networks

Deep Learningを使っていろいろ試してみたい♪

Ubuntuのお勉強1~フォルダ構成~

問題が起こった時にログから問題を特定できるようになりたい

/sys、/tmp、/usr、/varについて

参考: Ubuntu システムログ その1 - /var/log以下に生成されるログファイルについて・ カーネルログについて・カーネルリングバッファーログについて - kledgeb

/var/logについて

参考:Ubuntu システムログ その1 - /var/log以下に生成されるログファイルについて・ カーネルログについて・カーネルリングバッファーログについて - kledgeb

/var/log/syslogについて

参考:Linuxサーバ運用マニュアル

/var/log/auth.log

グラフィック関係のログ

参考:Ubuntu システムログ その2 - 認証ログについて・ Xサーバーログについて - kledgeb

参考

kledgeb: フォルダー構造

人力ヘリコプターについて

大好きな空飛ぶ自転車のお話

シコルスキー賞

アメリカ・ヘリコプター協会が1980年に設立した賞で賞金2500万円。

受賞基準が以下の三点

  1. 人力で60秒間
  2. 10フィート(約3メートル)以上の高度を維持
  3. 1076平方フィート(約100平方メートル)以内の範囲を飛行

30年以上受賞者が現れなかったが、2013年に、カナダのトロント大学のチームが受賞

参考: シコルスキー人力ヘリコプター賞 - Wikipedia

人力ヘリコプター

ダビンチ3

  • 1989年
  • 機体を44kg
  • ブレード長は15.24 m
  • 回転速度は毎秒15.24 m

www.youtube.com

YURI-I

  • 1994年
  • 日本製
  • 4枚のローターを地面効果を利用するために、低い位置に配置

www.youtube.com

GameraⅡ

参考: 人力ヘリコプターGameraについて

Atlas

  • 2013年
  • 58m
  • 52kg
  • 滞空時間64.11秒
  • 最高高度3.3m

参考:全幅58mの人力ヘリコプターAtlas、33年間未踏のシコルスキー賞を獲得 (動画) - Engadget 日本版

youtu.be

乗ってみたい

あ〜空飛びたい

ネットワークのお勉強その1

f:id:robonchu:20170520144353p:plain

IPアドレス

192.168.1.128

以下の2つから構成されている

  1. ネットワーク・アドレス(192.168.1.)
  2. ホスト・アドレス(128)

ネットワーク・アドレスは、ネットワーク全体でお互いのネットワークを識別するために使われ、 ホスト・アドレスは、同一ネットワーク内でお互いのホストを識別するために使われる、ということである。

参考: 基礎から学ぶWindowsネットワーク:第7回 IPアドレスとネットマスク (2/3) - @IT

ネットマスク

  • IPアドレスからネットワーク・アドレス部を抽出するためのマスク値
  • ネットワークの範囲を定義するために使用する

参考: 基礎から学ぶWindowsネットワーク:第7回 IPアドレスとネットマスク (1/3) - @IT

ゲートウェイ

  • 所属するネットワークの外へアクセスする際に使用する「出入り口」の代表となる機器のこと
  • 異なるネットワーク同士を接続するネットワーク機器のこと

参考:デフォルトゲートウェイとは TCP/IP入門 デフォルトゲートウェイとは | IPラーニング

マシンA : 192.168.2.1/255.255.255.0

マシンB : 192.168.2.2/255.255.255.0

この2つは同じネットワークなので、双方向通信が可能

マシンC : 192.168.2.1/255.255.0.0

このCは上記2つと同じネットワークではないので通信することができない。

通信するためにはネットワーク同士をつなぐゲートウェイが必要になる。

ffmpegとpythonで動画をいじろう

ffmpegのインストー

sudo apt-get install ffmpeg

動画の変換

ffmpeg -i test1.MOV -strict -2 test1.mp4

動画の結合

ffmpeg -i test1.mp4 -i test2.mp4 -strict -2 -filter_complex "concat=n=2:v=1:a=1" output.mp4

動画の倍速方法

(TBD)

pythonでフォルダ内の指定ファイルをの取り込み

import os 
files = os.listdir('<dir path>')
 
for file in files:
    print file

こちらだとワイルドカードが使える

import glob
 
files = glob.glob('<dir path>/*.*')
 
for file in files:
    print file

pythonでコマンド実行するには

import subprocess
cmd = "ls -a"
subprocess.call( cmd, shell=True  ) 

フォルダ内の.MOVファイルをmp4ファイルに変換して、結合するdamedameコード

video_con.py

import sys
import glob
import subprocess
import os

args = sys.argv
files = glob.glob(args[1]+"/*")
num = 0

join_mov = str("")

for file in zipfiles:
    num += 1
    slice = file[0:-4]
    cmd1 = "ffmpeg -i "+file+" -strict -2 "+slice+".mp4"
    subprocess.call( cmd, shell=True  )
    join_mov += " -i "+ slice+".mp4"

cmd2 = "ffmpeg"+join_mov+" -strict -2 -filter_complex "+"\"concat=n="+str(num)+":v=1:a=1\" output.mp4"
subprocess.call( cmd2, shell=True  )

実行方法

python video_con.py <path>

たとえば~/video/test/*の.movファイルを変換したいとすると以下のように記述

python video_con.py ~/video/test

rosを使ってセンサ取得データの保存

rosを使ってセンサ取得データを保存する。

 環境

  • os: ubuntu16.04
  • ros: kinetic

usb_cam編

インストー

  • usb_camのインストー

参考:づーまー日記: 【備忘録】 ROS Kinetic でusb-camのインストール方法&使い方

データの表示

ターミナル1

$ roscore

ターミナル2

$ rosrun usb_cam usb_cam_node

ターミナル3

$ rosrun image_view image_view image:=/usb_cam/ime_raw

データの保存

  1. image_viewのGUIの保存ボタンで画像を保存
  2. rosbagの使用
$ rostopic list
$ rosbag record /usb_cam/camera_info /usb_cam/image_raw -O usb_cam_data.bag

-O でファイル名を指定

rosbagでのデータの再生方法

$ rosbag play -l images.bag

-l でループ再生

rosbagでbagファイルを確認

$ rosbag info usb_cam_data.bag

kinect, Xtion編

参考: demura.net | Xtion Pro LiveをUSB3.0とROS Indigoで使うメモ https://staff.aist.go.jp/kanezaki.asako/pdf/SSII2016_AsakoKanezaki_tutorial.pdf 

環境構築 ~ Docker / Jupyter のインストール ~

Jupyter

参考: Jupyter Notebook(IPython)のインストールと始め方 - TASK NOTES

Docker

参考: Ubuntu 16.04 LTS Dockerをインストール - Qiita