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環境の終了
デュアルブートのメモ(windows10とubuntu18.04)
参考にしたサイト
kledgeb.blogspot.com
・ubuntuのLiveUSBはFATで作る。
・ubuntuとEFIのパーティションを作る。EFIにについてhttps://wa3.i-3-i.info/word12797.html
EFIは200MBにした。
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をコマンドプロンプトに読み込ませる。
ファイルの場所を開くを押す。
デスクトップにショートカットを作成する。
デスクトップにあるコマンドプロンプトを右クリックしてプロパティを開く。
リンク先に「%windir%\system32\cmd.exe /k "doskey /macrofile=C:\Users\ユーザー名\Macros.txt"」を入力する。
4.コマンドプロンプトからrebootができれば成功です。
注意点
3で作ったアイコンでしかrebootは機能しません。Windosキーからcmdを入力して起動したコマンドプロンプトではrebootが使えないので気をつけてください。
3で作ったアイコンをタスクバーに設定すると便利です。
Jetson nanoでSSH接続(wifi & 有線LAN)
今回はwifiによるSSH接続とWifiなしでも使えるLANケーブルによるSSH接続を紹介します。
wifiによるSSH接続
Jetson nanoには無線モジュールがないためWifiもBluetoothも使えません。そこで以下のモジュールとアンテナを買いました。これら以外にもUSBタイプの無線子機も使えますがubuntuに対応していない種類があります。使う前にubuntu対応のドライバがあるか確認が必要です。
NGFF M.2 ネットワーク カード用 6dBi RP-SMA アンテナ U.FL ピグテール ケーブル
- メディア: エレクトロニクス
モジュールの取り付け方は↓ここを参照してください
www.jetsonhacks.com
Jetsonに無線モジュールを取り付けwifiに接続できたらIPアドレスを設定します。
設定から接続しているWifiの歯車マークをクリック。
IPアドレスを自由に設定したい場合はメソッドを手動にして、アドレスとネットマスクを設定します。ネットマスクがわからない人は↓を参照してください。設定完了後は再起動です。
https://wa3.i-3-i.info/word11975.html
例)
アドレス:172.18.12.100
ネットマスク:255.255.255.0
再起動後はターミナルに ip a を入力してinetの後ろが設定したアドレスに変更されているか確認してください。
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でもできます。
tmux始め方(ubuntu18.04)
screenを使っていたが原因不明のフリーズが頻繁に起きてtmuxに乗り換えました。
- tmuxをインストール。
- homeディレクトリに.tmux.confをtouchコマンドで作成。
- https://qiita.com/succi0303/items/cb396704493476373edf←ここに書かれた .tmux.confを2.で作成した.tmux.confにコピペする。
- tmuxを起動させる。新しくターミナルを立ち上げてtmuxと入力する。
- 3.の設定変更を反映させるために tmux source-file ~/.tmux.conf と入力する。
- これで設定完了に思ってしまいますが tmux kill-server でtmuxを一度オフにしてから tmuxでもう一度起動させると [exited] と表示されて起動できません。https://qiita.com/takc923/items/018733112963b69b408b←こちらを参考にしてset-option -g default-command "" と書き換えて、tmux source-file ~/.tmux.conf で変更を反映させると無事起動します。
- ここまでの設定で十分使えるらしいですが私は使いにくかったので、
## 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
下の画像が出力されたら成功です。
ROS Melodicの環境構築
こちらを参考にしています。
プロキシに引っかからない環境でお試しください。
- sudo apt-get install curl
- sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
- sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
- curl -sSL 'http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654' | sudo apt-key add -
- sudo apt update
- sudo apt install ros-melodic-desktop-full
- sudo apt install python-rosdep
- sudo rosdep init
- rosdep update
- echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
- source ~/.bashrc
- source /opt/ros/melodic/setup.bash
- sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential