Ubuntu tesorflow-gpu install

2019/01/03 업데이트

Version check

  1. ubuntu 16.04
  2. nvidia driver setup

  3. cuda setup – 9.0

  4. cudnn setup -7.0

nvidia-smi check

nvidia-smi

CUDA version check

cat /usr/local/cuda/version.txt

CUDA VERSION 9.0.176

CUDNN version check

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

CUDNN_MAJOR 7

vultr-env 환경 셋팅

virtualenv –system-site-packages -p python3 ./tensorflow_py3

Tensorflow-gpu 설치

source tensorflow_py3/bin/activate

pip install –upgrade tensorflow-gpu

Tensorflow-gpu 사용 체크

import tensorflow as tf

sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))


 

에러 발생

  • cuda 9.0, cudnn 7.0로 해야 에러가 나지 않는다.

https://www.tensorflow.org/install/pip
https://blog.plon.io/tensorflow/install-tensorflow-gpu-virtualenv-python-3/

https://www.tensorflow.org/install/gpu

https://stackoverflow.com/questions/50622525/which-tensorflow-and-cuda-version-combinations-are-compatible

https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html

CUDA 설치 우분투 환경

https://keras.io/ – 케라스 설치

Keras Tutorial: How to get started with Keras, Deep Learning, and Python

Keras Tutorial: The Ultimate Beginner’s Guide to Deep Learning in Python

http://solarisailab.com/archives/303

https://tensorflowkorea.gitbooks.io/tensorflow-kr/content/g3doc/get_started/os_setup.html

http://hunkim.github.io/ml/

Ubuntu 16.04 nvidia driver setup, CUDA setup

몇 번 설치를 해봤지만, 항상 짜증나는 일이다.

그래픽 카드 확인하기

lspci | grep VGA

01:00.0 VGA compatible controller: NVIDIA Corporation GK110 [GeForce GTX TITAN] (rev a1)

근데 요즘은 cuda-kit만 설치하면 자동으로 nvidia-driver도 설치된다.

  1. https://developer.nvidia.com/cuda-downloads에서 하라는대로 한다.
  2. sudo apt install nvidia-cuda-toolkit

간단해졌다. 아래와 같이 체크를 한다.

lspci -k 확인

kernel driver in use: nvidia

kernel_modules: nvidia_410(XXX)

nvidia-smi 확인

PATH, LD_LIBRARY_PATH에 cuda 경로 추가하기

export PATH=/usr/local/cuda-10.0/bin:${PATH:+${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}}

nvcc -V 체크

 

 

It is wrote by wordpress

Hello

I wrote this using wordpress.

Actually, steempress is great. Steempress is wordpress plugin for converting wordpress post to steem.

But, when I wrote something using steempress, I need to give my profit 15% to steempress.

They said we can vote you using their power (steempress). But, I did not receive any vote.

So, I developed this plugin by myself for me.

Anyway it is test writing and diary.

Thank you.

Actually, I can’t blame steempress.

Steempress just did good strategy.

Hardware for esp8266

I prepared hardware for what I want to develop.

What I want to develop is control motor remotely.

That is already many people did it.

But, I want to try do it my own skill.

Also, I want to develop prototype perfectly using 3d printer.

1. ESP8266

http://vctec.co.kr/product/nodemcu-v2-lua-%EA%B8%B0%EB%B0%98-esp8266-%EA%B0%9C%EB%B0%9C%EB%B3%B4%EB%93%9C-nodemcu-v2-lua-based-esp8266-developmen/6575/

2. Servo motor

I made 기구 for switching on/off.

ESP8266 with arduino

esp8266이라는 보드를 뒤늦게 알게됐다. 가격이 싸다. (개발용 보드 8천원, 칩 자체는 2천원, 2천원에 딱 필요한것만 몇 개 붙이면 싸면서 작게 만들 수 있다.) wifi module이 붙어있다. 라이브러리가 잘 지원돼 wifi 관련 모든 기능들을 사용할 수 있다.
  • ap mode
  • web server/client
  • etc..
거기다가 arduino ide와 arduino code처럼 짤 수 있도록 구성도 했다.. 사실 arduino로 안하고 lua를 써보고 싶었지만 초기셋팅이 많아보여 말았다. arduino 환경으로만 먼저 해보고 필요하다면 lua쪽으로 해보고자한다.
참고할만한 사이트
  • Control servo motor
    • switch motor angle only on/off.
    • control manually specific angle
    • motor power on/off
  • Set some settings to board
    • save some setting to eeprom
    • get data from eeprom

[독서] 부의 추월차선

생각보다 술술 읽혔다. 읽고 느낀점이 있다. 적어도 내가 사업을 한다면, 이 책을 다시 읽으면서 내 사업의 방향이 맞는지 체크해야겠다. 나의 꿈, 나의 목표를 다시 생각해보게 한 책이다.
부자가 되고 싶다라는 생각은 옛날부터 많이 했다. 어떻게 될 수 있을까도 많이 생각했다. 이 책은 내가 생각했던 방식이 조금 잘못됐다라고 솔직히 말해줬다.
내가 생각한 부자가 되는 방법은 아래와 같다. 1.실력을 키운다. (코딩, 기술, 영어) 2.좋은 회사에 들어간다. 3.연봉을 많이 받는다. 한 마디로 내 분야에서 전문가가 되는게 내 목표였다. 전문가가 되서 좋은 회사 들어가고, 내 역할을 잘하는 것 내가 로봇 개발하는게 즐거우니 즐기면서 일하면 참 좋겠다. 기회가 된다면 좋은 회사에서 연봉을 많이 받자.
이 책은 내 목표에 대해 다시 생각하게 했다. 그렇게 해가지고는 50살, 아니 60살 돼서도 부자가 될지 안될지 모른다. 너가 생각한 길은 서행차선이야. 추월차선으로 가자!! 라고 책이 나에게 말해주었다.
책이 말하는 이야기는 이렇다. 내가 일하지 않아도 돈을 벌어주는 시스템을 만들어라. 돈 버는 나무를 만들어라. 60살까지 열심히 일하는 것도 힘들고 돈 버는 나무 만드는 것도 힘들다. 둘 다 어려운데 어떤것을 할래?
읽어주셔서 감사합니다.

install ros, python, dlib, other things on ubuntu 16.04

install wireless lan card usb driver

11 git clone https://github.com/gnab/rtl8812au.git
12 cd rtl8812au/
13 ls
14 make
15 sudo make install
16 sudo modprobe 8812au

install ros kinetic on ubuntu 16.04

wget https://raw.githubusercontent.com/oroca/oroca-ros-pkg/kinetic/ros_install.sh && chmod 755 ./ros_install.sh && bash ./ros_install.sh catkin_ws kinetic

install opencv 4.0

sudo trash-put /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so # 이미 설치가 되있다면, 삭제한다.

easy_install trash-cli

sudo trash-put /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so

git clone https://github.com/opencv/opencv

git clone https://github.com/opencv/opencv_contrib

sudo apt-get install cmake-gui

check dnn and python, ext

cd build; make; make install; ldconfig

install tensorflow

pip install –user –upgrade tensorflow

install dlib

27 git clone git clone https://github.com/davisking/dlib.git
28 git clone https://github.com/davisking/dlib.git
29 cd dlib
30 mkdir build; cd build; cmake .. -DDLIB_USE_CUDA=0 -DUSE_AVX_INSTRUCTIONS=1; cmake –build .
31 cd ../
33 sudo python setup.py install –yes USE_AVX_INSTRUCTIONS –no DLIB_USE_CUDA

install face_recognition

35 sudo apt-get install python-pip
37 sudo pip install face_recognition –default-timeout=100

install ros dependance

39 sudo apt-get install ros-kinetic-usb-cam
48 sudo apt-get install ros-kinetic-kobuki
50 sudo apt-get install ros-kinetic-map-server
69 sudo apt-get install ros-kinetic-move-base
73 sudo apt-get install ros-kinetic-depthimage-to-laserscan
71 sudo apt-get install libsvm-dev
63 sudo pip install sklearn

install ros-control-dependance

2671 sudo apt-get install ros-kinetic-pluginlib
2673 sudo apt-get install ros-kinetic-ros-control
2675 sudo apt-get install ros-kinetic-joint-trajectory-controller
2677 sudo apt-get install ros-kinetic-ros-controllers
2679 sudo apt-get install ros-kinetic-controller-interface

install utility

75 sudo apt-get install gitg git-cola
76 sudo apt-get install ipython


build athena project

40 cd catkin_ws/
42 cd src
44 git clone https://jacobyu_aibrain@bitbucket.org/athena_aibrain/navigation-system-on-cartographer.git
45 cd ~/catkin_ws/
47 catkin_make

try to run module

62 rosrun vision face_recog_2.py
87 roslaunch vision face_detection_using_usbcam.launch

 

[IoT Project] 아두이노와 라즈베리파이 간의 시리얼 통신

 

이번 글은 아두이노와 라즈베리파이 간의 시리얼 통신에 대한 글입니다.

시리얼 통신이 무엇인지에 대해 설명을 하고,

J-bot은 아두이노와 라즈베리파이를 같이 사용하는데 어떻게 사용하였는지 적었습니다.

J-bot이 궁금하신가요? 아래 글들을 읽어보세요.

나만의 비서 로봇, J-bot 만들고 있습니다.
google-aiy-voice-kit 활용기
google-aiy-voice-kit 셋팅


#### 시리얼 통신

시리얼 통신은 이종의 보드 간에 데이터를 주고 받는 방법 중 하나입니다.

시리얼 통신을 위해서 필요한 것들에 대해 소개를 하겠습니다.

  • Rx, Tx, GND 선 연결
    • 아두이노는 USB로 연결할 경우, 하드웨어는 따로 생각할 필요없습니다. 준비 끝!
    • 아두이노 내부에 칩이 있습니다. 그래서 USB만 연결해도 시리얼 통신을 할 수 있습니다.
  • 보레이트 (Baudrate) 설정
    • 보레이트는 시리얼 통신의 속도를 말합니다.
    • 아두이노와 라즈베리파이 모두 같은 보레이트로 설정해야합니다.
    • 9600 bps, 19200 bps, 38400 bps, 115200 bps 등이 있습니다.
    • bps 는 bit per second로 1초에 보낼수 있는 비트 수를 의미합니다.
    • 9600bps는 1초에 9600 bit를 보낼 수 있습니다.
  • 데이터 포맷
    • 한 번 데이터를 보낼 때, 아래 그림의 데이터 포맷과 같이 8bit씩 보냅니다.
    • 만약 “hello”라는 텍스트를 시리얼 통신을 통해 전송하면 ‘h’, ‘e’, ‘l’, ‘l’, ‘o’로 하나씩 전송됩니다.

사진 <시리얼 데이터 포맷>  – http://nptel.ac.in/courses/Webcourse-contents/IIT-KANPUR/microcontrollers/micro/ui/Course_home2_11.htm


J-bot은 시리얼 통신을 어떻게 활용하는가?

 

J-bot은 아래와 같이 아두이노와 라즈베리파이를 활용합니다.

아두이노

  • 내부적으로는 서보모터를 제어하고 그리고 초음파 센서의 거리값을 수집
  • 1초에 10번 모터의 각도와 거리값을 라즈베리파이에게 전송합니다.
  • 라즈베리파이에서 모터를 몇 도로 동작하라는 신호를 받으면 모터 제어

라즈베리파이

  • 아두이노로부터 받는 데이터를 활용하여 여러 동작 수행
  • 라즈베리파이에서 아두이노로 원할 때 명령을 내릴 수 있습니다.

 


코드를 보면서 이야기 합시다.

먼저 아두이노에서 송수신을 어떻게 하는지 보겠습니다.

아두이노에서 라즈베리파이로 센서 데이터를 보내는 코드는 아래와 같습니다.

아두이노에서 라즈베리파이로 보내는 센서 데이터는 아래의 형식으로 표현합니다.

초음파 거리 (cm) * 서보 모터 각도 (deg)

50 * 40

위와 같은 데이터라면 거리 50cm, 각도 40도라는 의미입니다.

위에는 제가 단순하게 데이터 포맷을 정한 것입니다.

(필요하다면 데이터 길이, 데이터, 데이터 검증 byte 등으로 구성하여 보내기도 합니다.)

아두이노가 라즈베리파이로부터 데이터를 받아 처리하는 코드는 아래와 같습니다.

위 코드는 라즈베리파이가 ‘모터를 몇도로 회전하라’ 라는 데이터를 보내는데, 그 데이터를 받는 부분입니다.

위의 코드에서 매 루프마다 serial.read를 통해 입력되는 문자가 있는지 체크합니다.

문자가 있을 경우, inputString이라는 문자열에 추가합니다.

만약 입력된 문자가 ‘*’일 경우, 문자열이 끝나는 것으로 생각합니다.

그리고 * 앞의 데이터를 추출하고, goal_servo_val에 넣습니다.


라즈베리파이에서 아두이노로부터 센서 데이터를 받는 코드는 아래와 같습니다.

SerialComm은 시리얼 통신을위한 모듈입니다. 초기화, 읽기, 쓰기 함수를 만들었습니다.

init함수에서 먼저 아두이노와 연결되는 드라이버를 초기화합니다.

그리고 read 함수는 아두이노에서 보낸 데이터에서 거리와 각도값을 추출합니다.

*을 구분자로 활용하여 첫번째 데이터가 거리, 두번째 데이터가 각도라는것을 알 수 있고 변수에 저장합니다.

motorcontrol 함수는 아두이노에게 회전할 각도를 전송하는 함수입니다.

main에서는 serial_comm의 객체를 만들고

쓰레드를 하나 만들어서 serial.read를 반복적으로 호출합니다.


#### 결론

라즈베리파이 하나만으로 시스템을 구성하는게 아니라 두개를 같이 쓴 이유는

두개의 역할이 다르며, 각자의 역할을 하는게 효율적이기 때문입니다.

라즈베리파이는 통신, 영상처리, 음성처리 등을 하고

아두이노는 반복적이고 실시간으로 수행해야하는 작업 ( 모터를 제어하는 것이나 10hz로 센서 데이터를 수집)을 하고요!

여기까지해서 시리얼 통신에 대해 적어봤는데요.

읽어주셔서 감사합니다.

유토피안 글 쓰기

utopian 글 작성에 주의해야할 것

1. 이미지, 코드 등 올리는 모든 것에 대해서는 저작권, 라이센스 체크해야한다.

Images and videos used must be distributed under the Creative Commons license and content source must be cited (when applicable).

Inclusion of licensed or commercial materials may lead to a downvote and/or temporary or permanent ban from Utopian services.

이미지나 동영상은 고화질

Images and videos used in contribution submissions should be of high resolution. Low resolution images and videos may lead to a lower score of your contribution.

2. 깃헙 관련 문제

The Github repository linked to the submission post must contain the project’s source code, a readme file with usage and install instructions and an appropriate open source license, or be directly connected to such a repository.

3. Contribution 관련 문제

In order to be considered for a reward, the contribution must add value to the Open Source project. Submissions that offer little to no added value to the project will not be eligible for potential reward.


참고 자료

글 쓰기 참고자료

https://docs.google.com/viewerng/viewer?url=https://owl.english.purdue.edu/media/ppt/20120820094902_656.ppt

마크다운 참고자료

https://guides.github.com/features/mastering-markdown/

https://steemit.com/utopian-io/@espoem/make-your-posts-look-great-in-steemit-and-busy

개발 관련 contributor

https://github.com/utopian-io/editor-templates/blob/master/development

Submissions to the development category include (1) Bug Fixes; (2) New Features and (3) Contributor’s Own Projects.

Category Tag: development

  • 적절한 코드 설명, 이미지, 실제로 한 일
  • https://github.com/utopian-io/editor-templates/blob/master/development