minicondaでtensorflow&keras&OpenAIGymの環境構築

仮想環境の作成

conda create -n <仮想環境名> python=3.6 anaconda

仮想環境の有効化

conda activate <仮想環境名>

仮想環境の一覧

conda info -e

仮想環境の持つパッケージ一覧

conda list


tensorflowのインストール

conda install tensorflow

tensorflowの動作確認&バージョン確認

# python3.6 バージョン確認
import sys
print(sys.version)
# TF2.xの読み込み
import tensorflow as tf
# バージョンの確認
print('TensorFlow version: {}'.format(tf.__version__))


kerasのインストール

conda install keras


OpenAIGymのインストール

pip install gym
pip install atari_py

OpenAIGymの動作確認

import gym

env = gym.make("CartPole-v0")                           # GUI環境の開始(***)

for episode in range(20):
  observation = env.reset()                             # 環境の初期化
  for _ in range(100):
    env.render()                                        # レンダリング(画面の描画)
    action = env.action_space.sample()                  # 行動の決定
    observation, reward, done, info = env.step(action)  # 行動による次の状態の決定
    print("=" * 10)
    print("action=",action)
    print("observation=",observation)
    print("reward=",reward)
    print("done=",done)
    print("info=",info)

env.close()                                             # GUI環境の終了


参考サイト
note.com
deepblue-ts.co.jp
qiita.com

windows10でもrebootがしたい

Linuxではrebootで再起動できますが、windowsの再起動コマンドはshutdown -r -t 0と長い。そこで名前をrebootに変えてみました。


1. C:\Users\ユーザー名の中にMacros.txtを作成する。
2.Macros.txtを編集する。

reboot=shutdown -r -t 0

3.Macros.txtをコマンドプロンプトに読み込ませる。
ファイルの場所を開くを押す。
f:id:rerereren:20200326114910j:plain
デスクトップにショートカットを作成する。
f:id:rerereren:20200326115342j:plain
デスクトップにあるコマンドプロンプトを右クリックしてプロパティを開く。
リンク先に「%windir%\system32\cmd.exe /k "doskey /macrofile=C:\Users\ユーザー名\Macros.txt"」を入力する。
f:id:rerereren:20200326120007p:plain
4.コマンドプロンプトからrebootができれば成功です。


注意点
3で作ったアイコンでしかrebootは機能しません。Windosキーからcmdを入力して起動したコマンドプロンプトではrebootが使えないので気をつけてください。
3で作ったアイコンをタスクバーに設定すると便利です。

Jetson nanoでSSH接続(wifi & 有線LAN)

今回はwifiによるSSH接続Wifiなしでも使えるLANケーブルによるSSH接続を紹介します。

wifiによるSSH接続

Jetson nanoには無線モジュールがないためWifiBluetoothも使えません。そこで以下のモジュールとアンテナを買いました。これら以外にもUSBタイプの無線子機も使えますがubuntuに対応していない種類があります。使う前にubuntu対応のドライバがあるか確認が必要です。

モジュールの取り付け方は↓ここを参照してください
www.jetsonhacks.com


Jetsonに無線モジュールを取り付けwifiに接続できたらIPアドレスを設定します。
設定から接続しているWifiの歯車マークをクリック。
f:id:rerereren:20200305183001p:plain


IPアドレスを自由に設定したい場合はメソッドを手動にして、アドレスとネットマスクを設定します。ネットマスクがわからない人は↓を参照してください。設定完了後は再起動です。
https://wa3.i-3-i.info/word11975.html
例)
アドレス:172.18.12.100
ネットマスク:255.255.255.0
f:id:rerereren:20200305183500p:plain


再起動後はターミナルに ip a を入力してinetの後ろが設定したアドレスに変更されているか確認してください。
f:id:rerereren:20200305185158p:plain


IPアドレスが設定できたらJetsonに接続したいPCのターミナルに ssh ???@???.??.??.??? と入力してください。(???の部分はJetsonの名前、???.??.??.???の部分はJetsonのIPアドレスを入力します。)
ここで気をつけることはJetsonに接続するPCのIPアドレスとJetsonのIPアドレスのネットワーク部を一致させることです。私は最初これに気づかずかなり悩みました。
例えばJetsonのIPアドレスが172.18.12.100でネットマスク:255.255.255.0の場合、接続するPCのIPアドレスは172.18.12.???でネットマスク:255.255.255.0にしなくてはいけません。
ssh ???@???.??.??.???で接続する事ができたら成功です。接続するPCはJetsonとネットワーク部が一致さえしていればWindowsでもubuntuでもできます。

LANケーブルによるSSH接続

Wifiが使えない環境ではLANケーブルを使ってSSH接続ができます。手順はwifiでのSSH接続と全く同じです。

tmux始め方(ubuntu18.04)

screenを使っていたが原因不明のフリーズが頻繁に起きてtmuxに乗り換えました。

  1. tmuxをインストール。
  2. homeディレクトリに.tmux.confをtouchコマンドで作成。
  3. https://qiita.com/succi0303/items/cb396704493476373edf←ここに書かれた .tmux.confを2.で作成した.tmux.confにコピペする。
  4. tmuxを起動させる。新しくターミナルを立ち上げてtmuxと入力する。
  5. 3.の設定変更を反映させるために tmux source-file ~/.tmux.conf と入力する。
  6. これで設定完了に思ってしまいますが tmux kill-server でtmuxを一度オフにしてから tmuxでもう一度起動させると [exited] と表示されて起動できません。https://qiita.com/takc923/items/018733112963b69b408b←こちらを参考にしてset-option -g default-command "" と書き換えて、tmux source-file ~/.tmux.conf で変更を反映させると無事起動します。
  7. ここまでの設定で十分使えるらしいですが私は使いにくかったので、
    ## viのキーバインドを使用する
    setw -g mode-keys vi
    ## クリップボード共有を有効にする
    set-option -g default-command "reattach-to-user-namespace -l zsh"
    ## コピーモードの操作をvi風に設定する
    bind-key -T copy-mode-vi v send-keys -X begin-selection
    bind-key -T copy-mode-vi y send-keys copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"
    unbind -T copy-mode-vi Enter
    bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "reattach-to-user-namespace pbcopy"

↑の部分をhttps://qiita.com/purutane/items/1d1dc4818013bbbaead4←こちらを参考にして書き換えました。
ubuntuにはデフォルトでxselがないのでxselをインストールしてからお試しください。

sudo apt install xsel


完全版

# fixキーをC-aに変更する
set -g prefix C-a

# C-bのキーバインドを解除する
unbind C-b

# キーストロークのディレイを減らす
set -sg escape-time 1

# ウィンドウのインデックスを1から始める
set -g base-index 1

# ペインのインデックスを1から始める
setw -g pane-base-index 1

# 設定ファイルをリロードする
bind r source-file ~/.tmux.conf \; display "Reloaded!"

# C-a*2でtmux内のプログラムにC-aを送る
bind C-a send-prefix

# | でペインを縦に分割する
bind | split-window -h

# - でペインを横に分割する
bind - split-window -v

# Vimのキーバインドでペインを移動する
bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R
bind -r C-h select-window -t :-
bind -r C-l select-window -t :+

# Vimのキーバインドでペインをリサイズする
bind -r H resize-pane -L 5
bind -r J resize-pane -D 5
bind -r K resize-pane -U 5
bind -r L resize-pane -R 5

# マウス操作を有効にする
setw -g mouse on

# 256色端末を使用する
set -g default-terminal "screen-256color"

# ステータスバーの色を設定する
set -g status-fg white
set -g status-bg black

# ウィンドウリストの色を設定する
setw -g window-status-fg cyan
setw -g window-status-bg default
setw -g window-status-attr dim
# アクティブなウィンドウを目立たせる
setw -g window-status-current-fg white
setw -g window-status-current-bg red
setw -g window-status-current-attr bright

# ペインボーダーの色を設定する
set -g pane-border-fg green
set -g pane-border-bg black
# アクティブなペインを目立たせる
set -g pane-active-border-fg white
set -g pane-active-border-bg yellow

# コマンドラインの色を設定する
set -g message-fg white
set -g message-bg black
set -g message-attr bright

# ステータスバーを設定する
## 左パネルを設定する
set -g status-left-length 40
set -g status-left "#[fg=green]Session: #S #[fg=yellow]#I #[fg=cyan]#P"
## 右パネルを設定する
set -g status-right "#[fg=cyan][%Y-%m-%d(%a) %H:%M]"
## リフレッシュの間隔を設定する(デフォルト 15秒)
set -g status-interval 60
## ウィンドウリストの位置を中心寄せにする
set -g status-justify centre
## ヴィジュアルノーティフィケーションを有効にする
setw -g monitor-activity on
set -g visual-activity on
## ステータスバーを上部に表示する
set -g status-position top

# コピーモードを設定する
set-window-option -g mode-keys vi

bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xsel -bi"
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xsel -bi"

  

 

ROS_melodicでOpenCV(C++)を使う

OpenCVは画像処理のライブラリです。
ros-melodic-desktop-fullをインストールしていれば、OpenCVが既にROSに入っています。
今回はfullをインストールしていることが前提です。


1.catkin_create_pkgでOpenCVを使うパッケージを作成します。
例)パッケージ名をhogeにした場合

cd ~/catskin_ws/src
catkin_create_pkg hoge roscpp rospy std_msgs

2.main.cppをいじる

#include <stdio.h>
#include <ros/ros.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char **argv)
{
    Mat img = Mat::zeros(500, 500, CV_8UC3);
    Point p;
    p.x = 300;
    p.y = 150;
    printf("OpenCV\n");
    circle(img, p, 100, Scalar(0,0,255), 5, 4);
    imshow("output", img);
    waitKey(0);
    return 0;
}

3.CMakeLists.txtをいじる
hogeの部分は例です。catkin_create_pkg で決めたパッケージ名を入力してください。
 piyoの部分は例です。好きな名前を入力してください。

cmake_minimum_required(VERSION 2.8.3)
project(hoge)

find_package(catkin REQUIRED COMPONENTS
    roscpp
    rospy
    std_msgs
)

find_package(OpenCV REQUIRED)

catkin_package()

include_directories(    
    ${catkin_INCLUDE_DIRS}
    ${OpenCV_INCLUDE_DIRS}
)

add_executable(
    piyo
    src/main.cpp
)

target_link_libraries(
    piyo
    ${catkin_LIBRARIES}
    ${OpenCV_LIBRARIES}
)

4.実行

rosrun hoge piyo

下の画像が出力されたら成功です。
f:id:rerereren:20200220143528p:plain

ROS Melodicの環境構築

こちらを参考にしています。

wiki.ros.org

プロキシに引っかからない環境でお試しください。

 

  1. sudo apt-get install curl
  2. sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  3. sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  4. curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
  5. sudo apt update
  6. sudo apt install ros-melodic-desktop-full
  7. sudo apt install python-rosdep
  8. sudo rosdep init
  9. rosdep update
  10. echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
  11. source ~/.bashrc
  12. source /opt/ros/melodic/setup.bash
  13. sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential