網頁

2019年6月30日 星期日

Xavier OpenAI Gym

使用PyTorch,OpenAI Gym和Gazebo機器人模擬器爲NVIDIA Jetson深度強化學習GPU庫
PyTorch Install problem (Solved)
Robot Operating System (ROS) on NVIDIA Jetson AGX Xavier Developer Kit
TX2 - Jetson Reinforcement - cmake -- configuring incomplete
Install Gazebo using Ubuntu packages
NVIDIA Xavier - Deep Learning - Deep Learning Tutorials - Jetson Reinforcement
Ubuntu gazebo package
nvidia@jetson-0423418048807:~$ apt-cache madison gazebo9
   gazebo9 | 9.8.0-1~bionic | http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic/main arm64 Packages
   gazebo9 | 9.0.0+dfsg5-3ubuntu1 | http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 Packages
    gazebo | 9.0.0+dfsg5-3ubuntu1 | http://ports.ubuntu.com/ubuntu-ports bionic/universe Sources
nvidia@jetson-0423418048807:~$
nvidia@jetson-0423418048807:~$ apt-cache madison libgazebo9-dev
libgazebo9-dev | 9.8.0-1~bionic | http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic/main arm64 Packages
libgazebo9-dev | 9.0.0+dfsg5-3ubuntu1 | http://ports.ubuntu.com/ubuntu-ports bionic/universe arm64 Packages
    gazebo | 9.0.0+dfsg5-3ubuntu1 | http://ports.ubuntu.com/ubuntu-ports bionic/universe Sources
nvidia@jetson-0423418048807:~$
nvidia@jetson-0423418048807:~$ sudo apt-get install gazebo9=9.0.0+dfsg5-3ubuntu1
nvidia@jetson-0423418048807:~$ sudo apt-get install libgazebo9-dev=9.0.0+dfsg5-3ubuntu1
Getting Started with Gym
Errors during install sklearn.
How to install opencv-python for python3.6
Installing everything
GitHub atari_py
python3 setup.py build
python3 setup.py install
pip3 install cffi
sudo apt install libffi-dev

2019年6月25日 星期二

Nvidia Jetson AGX Xavier Build tensorflow 1.13

參考 Building Tensorflow 1.13 on Jetson Xavier

安裝 bazel
nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ wget https://github.com/bazelbuild/bazel/releases/download/0.19.2/bazel-0.19.2-dist.zip
nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ mkdir bazel
nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ cd bazel
nvidia@jetson-0423418048807:~/XavierSSD/Downloads/bazel$ unzip bazel-0.19.2-dist.zip
nvidia@jetson-0423418048807:~/XavierSSD/Downloads/bazel$ env EXTRA_BAZEL_ARGS="--host_javabase=@local_jdk//:jdk" bash ./compile.sh
nvidia@jetson-0423418048807:~/XavierSSD/Downloads/bazel$ cd ..
nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ mv bazel ~/XavierSSD
nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ cd ../bazel/
nvidia@jetson-0423418048807:~/XavierSSD/bazel$ vi ~/.bashrc
加入下一行到檔案底部,並且也執行一遍
export PATH=~/XavierSSD/bazel/output${PATH:+:${PATH}}

下載 tensorflow
nvidia@jetson-0423418048807:~/XavierSSD/bazel$ cd ..
nvidia@jetson-0423418048807:~/XavierSSD$ git clone https://github.com/tensorflow/tensorflow.git
nvidia@jetson-0423418048807:~/XavierSSD$ cd tensorflow/

設定 git 環境,取得 r1.13 版
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git config --global user.email "name@yahoo.com.tw"
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git config --global user.name "name"
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git checkout r1.13

為 Nvidia Jetson AGX Xavier 修改
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ vi tensorflow/lite/kernels/internal/BUILD
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git add tensorflow/lite/kernels/internal/BUILD
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git commit -m "Update 1"
[r1.13 982e077b2a] Update 1
 1 file changed, 3 deletions(-)
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git log
commit 982e077b2a4e2123f7a299dbaf95d97383303d17 (HEAD -> r1.13)
Author: name <name@yahoo.com.tw>
Date:   Mon Jun 24 14:49:30 2019 +0800

    Update 1

commit 93dd14dce2e8751bcaab0a0eb363d55eb0cc5813 (origin/r1.13)
Author: Mihai Maruseac <mihaimaruseac@google.com>
Date:   Tue May 21 10:08:18 2019 -0700

    Update png_archive version to 1.6.37

    PiperOrigin-RevId: 249272809

nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git diff 93dd1 982e0
diff --git a/tensorflow/lite/kernels/internal/BUILD b/tensorflow/lite/kernels/internal/BUILD
index 4be3226938..7226f96fdf 100644
--- a/tensorflow/lite/kernels/internal/BUILD
+++ b/tensorflow/lite/kernels/internal/BUILD
@@ -22,15 +22,12 @@ HARD_FP_FLAGS_IF_APPLICABLE = select({
 NEON_FLAGS_IF_APPLICABLE = select({
     ":arm": [
         "-O3",
-        "-mfpu=neon",
     ],
     ":armeabi-v7a": [
         "-O3",
-        "-mfpu=neon",
     ],
     ":armv7a": [
         "-O3",
-        "-mfpu=neon",
     ],
     "//conditions:default": [
         "-O3",
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ vi third_party/aws/BUILD.bazel
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git add third_party/aws/BUILD.bazel
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git commit -m "Update 2"
[r1.13 a3d6ea2fce] Update 2
 1 file changed, 1 insertion(+), 1 deletion(-)
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git log
commit a3d6ea2fce8fff7bcf74ee52cd77074416d24bf2 (HEAD -> r1.13)
Author: mark <ingrenn@yahoo.com.tw>
Date:   Mon Jun 24 14:56:09 2019 +0800

    Update 2

commit 982e077b2a4e2123f7a299dbaf95d97383303d17
Author: mark <ingrenn@yahoo.com.tw>
Date:   Mon Jun 24 14:49:30 2019 +0800

    Update 1

nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git diff 982e0 a3d6ea
diff --git a/third_party/aws/BUILD.bazel b/third_party/aws/BUILD.bazel
index 5426f79e46..e08f8fc108 100644
--- a/third_party/aws/BUILD.bazel
+++ b/third_party/aws/BUILD.bazel
@@ -24,7 +24,7 @@ cc_library(
         "@org_tensorflow//tensorflow:raspberry_pi_armeabi": glob([
             "aws-cpp-sdk-core/source/platform/linux-shared/*.cpp",
         ]),
-        "//conditions:default": [],
+        "//conditions:default": glob(["aws-cpp-sdk-core/source/platform/linux-shared/*.cpp",]),
     }) + glob([
         "aws-cpp-sdk-core/include/**/*.h",
         "aws-cpp-sdk-core/source/*.cpp",
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ vi third_party/gpus/crosstool/BUILD.tpl
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git add third_party/gpus/cro
sstool/BUILD.tpl
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git commit -m "Update 3"
[r1.13 65ad3b64e5] Update 3
 1 file changed, 1 insertion(+)
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git log
commit 65ad3b64e5f16b3496628bee800fabf825a7c1ce (HEAD -> r1.13)
Author: mark <ingrenn@yahoo.com.tw>
Date:   Mon Jun 24 15:04:22 2019 +0800

    Update 3

commit a3d6ea2fce8fff7bcf74ee52cd77074416d24bf2
Author: mark <ingrenn@yahoo.com.tw>
Date:   Mon Jun 24 14:56:09 2019 +0800

    Update 2

commit 982e077b2a4e2123f7a299dbaf95d97383303d17
Author: mark <ingrenn@yahoo.com.tw>
Date:   Mon Jun 24 14:49:30 2019 +0800

    Update 1

commit 93dd14dce2e8751bcaab0a0eb363d55eb0cc5813 (origin/r1.13)
Author: Mihai Maruseac <mihaimaruseac@google.com>
Date:   Tue May 21 10:08:18 2019 -0700

    Update png_archive version to 1.6.37
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ git diff a3d6ea 65ad3
diff --git a/third_party/gpus/crosstool/BUILD.tpl b/third_party/gpus/crosstool/BUILD.tpl
index db76306ffb..184cd35b87 100644
--- a/third_party/gpus/crosstool/BUILD.tpl
+++ b/third_party/gpus/crosstool/BUILD.tpl
@@ -24,6 +24,7 @@ cc_toolchain_suite(
         "x64_windows|msvc-cl": ":cc-compiler-windows",
         "x64_windows": ":cc-compiler-windows",
         "arm": ":cc-compiler-local",
+        "aarch64": ":cc-compiler-local",
         "k8": ":cc-compiler-local",
         "piii": ":cc-compiler-local",
         "ppc": ":cc-compiler-local",
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
修改完成

安裝所需版本的 g++ 和 gcc
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ sudo apt-get install g++-5
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ sudo apt-get install gcc-5

設定編譯環境
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ ./configure
Extracting Bazel installation...
WARNING: --batch mode is deprecated. Please instead explicitly shut down your Bazel server using the command "bazel shutdown".
You have bazel 0.19.2- (@non-git) installed.
Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python3


Found possible Python library paths:
  /usr/lib/python3.6/dist-packages
  /usr/lib/python3/dist-packages
  /usr/local/lib/python3.6/dist-packages
Please input the desired Python library path to use.  Default is [/usr/lib/python3.6/dist-packages]

Do you wish to build TensorFlow with XLA JIT support? [Y/n]: n
No XLA JIT support will be enabled for TensorFlow.

Do you wish to build TensorFlow with OpenCL SYCL support? [y/N]: n
No OpenCL SYCL support will be enabled for TensorFlow.

Do you wish to build TensorFlow with ROCm support? [y/N]: n
No ROCm support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: y
CUDA support will be enabled for TensorFlow.

Please specify the CUDA SDK version you want to use. [Leave empty to default to CUDA 10.0]:


Please specify the location where CUDA 10.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: /usr/local/cuda-10.0


Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7]: 7.3


Please specify the location where cuDNN 7 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda-10.0]: /usr/lib/aarch64-linux-gnu


Do you wish to build TensorFlow with TensorRT support? [y/N]: y
TensorRT support will be enabled for TensorFlow.

Please specify the location where TensorRT is installed. [Default is /usr/lib/aarch64-linux-gnu]:


Please specify the locally installed NCCL version you want to use. [Default is to use https://github.com/nvidia/nccl]:


Please specify a list of comma-separated Cuda compute capabilities you want to build with.
You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus.
Please note that each additional compute capability significantly increases your build time and binary size. [Default is: 3.5,7.0]: 7.2


Do you want to use clang as CUDA compiler? [y/N]: n
nvcc will be used as CUDA compiler.

Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: /usr/bin/gcc-5


Do you wish to build TensorFlow with MPI support? [y/N]: n
No MPI support will be enabled for TensorFlow.

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native -Wno-sign-compare]:


Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n
Not configuring the WORKSPACE for Android builds.

Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details.
        --config=mkl            # Build with MKL support.
        --config=monolithic     # Config for mostly static monolithic build.
        --config=gdr            # Build with GDR support.
        --config=verbs          # Build with libverbs support.
        --config=ngraph         # Build with Intel nGraph support.
        --config=dynamic_kernels        # (Experimental) Build kernels into separate shared objects.
Preconfigured Bazel build configs to DISABLE default on features:
        --config=noaws          # Disable AWS S3 filesystem support.
        --config=nogcp          # Disable GCP support.
        --config=nohdfs         # Disable HDFS support.
        --config=noignite       # Disable Apacha Ignite support.
        --config=nokafka        # Disable Apache Kafka support.
        --config=nonccl         # Disable NVIDIA NCCL support.
Configuration finished
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$

建立 tensorflow 安裝資料
此處會執行很久,甚至會報錯,如找不到 numpy 等
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ bazel build --config=opt --config=nonccl //tensorflow/tools/pip_package:build_pip_package --incompatible_remove_native_http_archive=false --verbose_failures --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
產生 tensorflow-1.13.1-cp36-cp36m-linux_aarch64.whl
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ sudo bazel-bin/tensorflow/tools/pip_package/build_pip_package ../


移除舊的 tensorflow,並安裝新的
nvidia@jetson-0423418048807:~$ source XavierSSD/envs/tensorflow/bin/activate
(tensorflow) nvidia@jetson-0423418048807:~$ cd XavierSSD/tensorflow/
((tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ pip3 uninstall tensorflow-gpu
(tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ pip3 install ../tensorflow-1.13.1-cp36-cp36m-linux_aarch64.whl
(tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ deactivate
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$

建立 tensorflow c++ 的 shared library libtensorflow_cc.so
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ bazel build --config=opt --config=nonccl //tensorflow:libtensorflow_cc.so --incompatible_remove_native_http_archive=false --verbose_failures --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ ls -al bazel-bin/tensorflow/
libtensorflow_cc.so
-r-xr-xr-x 1 nvidia nvidia 303026864 Jun 25 12:22 bazel-bin/tensorflow/libtensorflow_cc.so
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$

nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ mkdir tensorflow/cc/example
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ vi tensorflow/cc/example/example.cc

// tensorflow/cc/example/example.cc

#include "tensorflow/cc/client/client_session.h"
#include "tensorflow/cc/ops/standard_ops.h"
#include "tensorflow/core/framework/tensor.h"

int main() {
  using namespace tensorflow;
  using namespace tensorflow::ops;
  Scope root = Scope::NewRootScope();
  // Matrix A = [3 2; -1 0]
  auto A = Const(root, { {3.f, 2.f}, {-1.f, 0.f} });
  // Vector b = [3 5]
  auto b = Const(root, { {3.f, 5.f} });
  // v = Ab^T
  auto v = MatMul(root.WithOpName("v"), A, b, MatMul::TransposeB(true));
  std::vector<Tensor> outputs;
  ClientSession session(root);
  // Run and fetch v
  TF_CHECK_OK(session.Run({v}, &outputs));
  // Expect outputs[0] == [19; -3]
  LOG(INFO) << outputs[0].matrix<float>();
  return 0;
}
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ vi tensorflow/cc/example/BUILD

load("//tensorflow:tensorflow.bzl", "tf_cc_binary")

tf_cc_binary(
    name = "example",
    srcs = ["example.cc"],
    deps = [
        "//tensorflow/cc:cc_ops",
        "//tensorflow/cc:client_session",
        "//tensorflow/core:tensorflow",
    ],
)
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$

編譯範例 example.cc
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ bazel build -c opt //tensorflow/cc/example:example
跑了好久,測試執行
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$ bazel-bin/tensorflow/cc/exam
ple/example
2019-06-25 16:10:03.922559: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:965] ARM64 does not support NUMA - returning NUMA node zero
2019-06-25 16:10:03.922959: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1433] Found device 0 with properties:
name: Xavier major: 7 minor: 2 memoryClockRate(GHz): 1.5
pciBusID: 0000:00:00.0
totalMemory: 15.45GiB freeMemory: 8.57GiB
2019-06-25 16:10:03.923054: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1512] Adding visible gpu devices: 0
2019-06-25 16:10:03.924346: I tensorflow/core/common_runtime/gpu/gpu_device.cc:984] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-06-25 16:10:03.924409: I tensorflow/core/common_runtime/gpu/gpu_device.cc:990]      0
2019-06-25 16:10:03.924452: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1003] 0:   N
2019-06-25 16:10:03.925152: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 8340 MB memory) -> physical GPU (device: 0, name: Xavier, pci bus id: 0000:00:00.0, compute capability: 7.2)
2019-06-25 16:10:07.582973: I tensorflow/cc/example/example.cc:22] 19
-3
nvidia@jetson-0423418048807:~/XavierSSD/tensorflow$


nvidia@jetson-0423418048807:~/XavierSSD$ git clone https://github.com/bitbionic/
keras-to-tensorflow.git
Cloning into 'keras-to-tensorflow'...
remote: Enumerating objects: 3719, done.
remote: Total 3719 (delta 0), reused 0 (delta 0), pack-reused 3719
Receiving objects: 100% (3719/3719), 227.81 MiB | 786.00 KiB/s, done.
Resolving deltas: 100% (7/7), done.
Checking out files: 100% (3688/3688), done.
nvidia@jetson-0423418048807:~/XavierSSD$
nvidia@jetson-0423418048807:~/XavierSSD$ cd keras-to-tensorflow
nvidia@jetson-0423418048807:~/XavierSSD/keras-to-tensorflow$ vi main.c
因為編譯時會有兩種錯誤
data.ToString(); 改成 std::string(data);
tensorflow::StringPiece(file_name).ends_with(".png")
改成
tensorflow::str_util::EndsWith(file_name, ".png")

nvidia@jetson-0423418048807:~/XavierSSD/keras-to-tensorflow$
nvidia@jetson-0423418048807:~/XavierSSD/keras-to-tensorflow$ g++-5 -std=gnu++11 -c ./main.cpp -D_GLIBCXX_USE_CXX11_ABI=0     -I../tensorflow     -I../tensorflow/bazel-tensorflow/external/eigen_archive     -I../tensorflow/bazel-tensorflow/external/protobuf_archive/src     -I../tensorflow/bazel-tensorflow/external/com_google_absl     -I../tensorflow/bazel-genfiles




2019年6月24日 星期一

Ubuntu 鍵盤 滑鼠大小設定

因為買了 Mircosoft 的小鍵盤,在鍵盤上找不到 Home End 和 PtrSc 鍵

修改功能鍵
System Settings/Keyboard/Shortcuts

還原方法
執行 dconf Editor
/org/gnome/settings-deamon/plugins/media-keys
點選修改過的功能
按下 Use default value

但是最後發現
Home = Ctrl + ← 或  Fn + ←
End = Ctrl + → 或 Fn + →
Print Screen (full screen): Fn + Windows Key + Space
Print Screen (current window) :Fn + Alt + Space


設定滑鼠大小
$ gsettings get org.gnome.desktop.interface cursor-size
24
$ gsettings set org.gnome.desktop.interface cursor-size 48
重新開機

nvidia@jetson-0423418048807:~$ cat cursor.sh
(sleep 10; gsettings set org.gnome.desktop.interface cursor-size 48)&
nvidia@jetson-0423418048807:~$

開始/Startup Applications/Add
cursor.sh








2019年6月22日 星期六

Nvidia Jetson AGX Xavier 安裝 tensorflow

安裝虛擬環境
nvidia@jetson-0423418048807:~/XavierSSD$ sudo apt-get install python3-pip
nvidia@jetson-0423418048807:~/XavierSSD$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev
nvidia@jetson-0423418048807:~/XavierSSD$ sudo apt-get install python3-venv
nvidia@jetson-0423418048807:~/XavierSSD$ mkdir envs
nvidia@jetson-0423418048807:~/XavierSSD$ cd envs
nvidia@jetson-0423418048807:~/XavierSSD/envs$ python3 -m venv tensorflow
nvidia@jetson-0423418048807:~/XavierSSD/envs$ cd
啟動虛擬環境
nvidia@jetson-0423418048807:~$ source ~/XavierSSD/envs/tensorflow/bin/activate
(tensorflow) nvidia@jetson-0423418048807:~$ 

設定 OpenCV
(tensorflow) nvidia@jetson-0423418048807:~$ sudo find / -name "cv2*"
find: ‘/run/user/1001/gvfs’: Permission denied
/usr/lib/python2.7/dist-packages/cv2.so
/usr/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so
(tensorflow) nvidia@jetson-0423418048807:~$ cd XavierSSD/envs/tensorflow/lib/python3.6/site-packages/
(tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/envs/tensorflow/lib/python3.6/site-packages$ ln -s /usr/lib/python3.6/dist-packages/cv2.cpython-36m-aarch64-linux-gnu.so

測試 OpenCV
(tensorflow) nvidia@jetson-0423418048807:~$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> print(cv2.__version__)
3.3.1
>>> exit()

大部份的安裝說明文件,第一步都是要你先安裝 JetPack 或 NVIDIA SDK Manager
其實都已經安裝完,參考 Nvidia Jetson AGX Xavier 安裝

$ sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev zlib1g-dev zip libjpeg8-dev
$ pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker six mock requests gast h5py astor termcolor protobuf keras-applications keras-preprocessing wrapt google-pasta

直接下載安裝
(tensorflow) nvidia@jetson-0423418048807:~$ pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu --ignore-installed

若是因為網路下載失敗
用網頁開啟 https://developer.download.nvidia.com/compute/redist/jp/v42/tensorflow-gpu/
下載 https://developer.download.nvidia.com/compute/redist/jp/v42/tensorflow-gpu/

(tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ pip3 install tensorflow_gpu-1.13.1+nv19.5-cp36-cp36m-linux_aarch64.whl 

測試 tensorflow
(tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> hello = tf.constant('Hello Tensorflow')
>>> sess = tf.Session()
>>> print(sess.run(hello))
b'Hello Tensorflow'
>>> exit()
(tensorflow) nvidia@jetson-0423418048807:~/XavierSSD/Downloads$ 


Nvidia Jetson AGX Xavier 之 darknet 安裝

nvidia@jetson-0423418048807:~/XavierSSD$ export PATH=${PATH}:/usr/local/cuda/bin
nvidia@jetson-0423418048807:~/XavierSSD$ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64
nvidia@jetson-0423418048807:~/XavierSSD$ git clone https://github.com/pjreddie/darknet
nvidia@jetson-0423418048807:~/XavierSSD$ cd darknet/
nvidia@jetson-0423418048807:~/XavierSSD/darknet$ vi Makefile 修改下列三行
GPU=1
CUDNN=1
OPENCV=1

nvidia@jetson-0423418048807:~/XavierSSD$ make


Nvidia Jetson AGX Xavier 測試

測試 CUDA
nvidia@jetson-0423418048807:~$ cd NVIDIA_CUDA-10.0_Samples/
nvidia@jetson-0423418048807:~/NVIDIA_CUDA-10.0_Samples$ cd bin/aarch64/linux/release/

nvidia@jetson-0423418048807:~/NVIDIA_CUDA-10.0_Samples/bin/aarch64/linux/release$ ./oceanFFT

nvidia@jetson-0423418048807:~/NVIDIA_CUDA-10.0_Samples/bin/aarch64/linux/release$ ./nbody -fullscreen -numbodies=16384


測試 tegra
nvidia@jetson-0423418048807:~$ cd tegra_multimedia_api/samples/backend/
nvidia@jetson-0423418048807:~/tegra_multimedia_api/samples/backend$
nvidia@jetson-0423418048807:~/tegra_multimedia_api/samples/backend$ ./backend 1 ../../data/Video/sample_outdoor_car_1080p_10fps.h264 H264 --trt-deployfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.prototxt --trt-modelfile ../../data/Model/GoogleNet_one_class/GoogleNet_modified_oneClass_halfHD.caffemodel --trt-mode 1 --trt-proc-interval 1 -fps 10
這裡會等很久

安裝 VisionWorks-1.6-Samples
nvidia@jetson-0423418048807:~$ /usr/share/visionworks/sources/install-samples.sh ~/
Creating the /home/nvidia//VisionWorks-1.6-Samples directory...
Copying VisionWorks samples to /home/nvidia//VisionWorks-1.6-Samples...
Finished copying VisionWorks samples
nvidia@jetson-0423418048807:~$ cd VisionWorks-1.6-Samples/
nvidia@jetson-0423418048807:~/VisionWorks-1.6-Samples$ make -j8

測試 VisionWorks-1.6-Samples
nvidia@jetson-0423418048807:~/VisionWorks-1.6-Samples/bin/aarch64/linux/release$ ls
nvx_demo_feature_tracker        nvx_sample_nvgstcamera_capture
nvx_demo_feature_tracker_nvxcu  nvx_sample_object_tracker_nvxcu
nvx_demo_hough_transform        nvx_sample_opencv_npp_interop
nvx_demo_motion_estimation      nvx_sample_opengl_interop
nvx_demo_stereo_matching        nvx_sample_player
nvx_demo_video_stabilizer


2019年6月21日 星期五

Nvidia Jetson AGX Xavier 運作模式,溫度,風扇

參考 NVPModel – NVIDIA Jetson AGX Xavier Developer Kit

sudo nvpmodel -q
查詢目前模式

sudo nvpmodel -m 0
設定成全力運行模式

0: 全力運行
1: 10W
2: 15W
3: 30W

sudo ./jetson_clocks.sh -show
顯示目前運作狀態

sudo ./jetson_clocks.sh
全力運作


0: 全力運作
1: 10W
2: 15W 預設值
3: 30W

sudo apt-get install lm-sensors
sudo sensors-detect 千萬不能執行,會當機
sensors 察看目前溫度

圖形介面的 sensor
sudo apt-get install psensor
psensor

專門為 NVIDIA jetson 準備的工具
Basic scripts and function to improve the performance in your NVIDIA Jetson
sudo apt-get install python3-pip
sudo -H pip3 install jetson-stats
jtop 即是 top for jetson
執行時使用 sudo jtop
其中第一個頁籤 1 ALL,中的 Sensor PMIC 一直是 100.00C,不知為何?
第三頁籤 3 CTRL,用 "+"、"-" 控制 NVP model

jetson-release 查詢 NVIDIA jetson 資訊

開機啟動風扇
sudo vi /etc/rc.local
#!/bin/bash
sleep 10
sudo sh -c 'echo 100 > /sys/devices/pwm-fan/target_pwm'

sudo chmod u+x /etc/rc.local



Nvidia Jetson AGX Xavier 之 WOL

poweroff 無法喚醒
sudo systemctl suspend
才可以喚醒,據說功耗 1.5-2W


sudo apt-get install ethtool

vi wol.sh
sudo ethtool -s wth0 wol g
sudo systemctl suspend


sudo ethtool eth0 (顯示 eth0 的設定)
Supports Wake-on: g (支援 wol)
Wake-on: d (wol 未啟動)
Wake-on: g (wol 啟動)

Nvidia Jetson AGX Xavier 安裝中文輸入法

參考 Ubuntu 類似微軟注音的輸入法 - hime 詞音輸入法

Ctrl+Space 啟動中文輸入
Shift 中英文切換
Ctrl+Alt+4 符號表

nvidia@jetson-0423418048807:~$ sudo apt-get install ibus-chewing

重新開機

System Settings/Language Support
Install / Remove Languages...
Add Chinese (traditional)
Keyboard input method system: ibus

在 Ubuntu 18.04 中新增新酷音輸入法

How can I use chewing(zhuyin) input method?
ubuntu 英文版中安裝新酷音輸入法
讓 Linux 下的中文輸入法更接近微軟新注音使用體驗
Ubuntu: fcitx + chewing 新酷音輸入法

Nvidia Jetson AGX Xavier 安裝 SSD

參考 Install NVMe SSD on NVIDIA Jetson AGX Developer Kit
硬體安裝完成後,開機制桌面,執行 Disks
右上角選項按鈕,Format Disk, 使用 GPT
按 + Create Partition
輸入 Volume Name
選擇 Ext4
按設定按鈕,選擇 Edit Mount Options
User Session Defaults 選擇 OFF
輸入 Mount Point


參考 Creating a Swap file
free 命令可以查詢 swap 狀況
sudo apt-get install gparted
sudo vi /etc/fstab
加入一行
/dev/nvme0n1p2 none swap sw 0 0
sudo swapon -a


Nvidia Jetson AGX Xavier 設定 VNC

有兩種 VNC 設定成功,x11vnc 和 vino
但是都必須先用 ssh 連上 xavier,啟動 service

此處談及的 VNC,不是 x-win 登入,是直接使用 console 的桌面

至於開機自己啟動的方式,一直沒有成功

x11vnc 設定方式,參考
VNC 連線小記 - Windows & Ubuntu Linux by x11vnc and tigervnc
sudo apt-get install x11vnc -y
sudo x11vnc -storepasswd
密碼存放於 ~/.vnc/passwd
sudo chmod 644 ~/.vnc/passwd
vi x11vnc.sh
DISPLAY=:0 x11vnc -rfbport 5900 -rfbauth /home/nvidia/.vnc/passwd

vino 設定方式,參考
Nvidia AGX Xavier/Jetson Nano遠端登入remote by VNC
sudo apt-get install dconf-editor
執行 dconf-editor,開啟設定畫面
至 /org/gnome/desktop/remote-access/vnc-passwd
notify-on-connect ON
prompt-enabled OFF
require-encryption OFF

sudo vi /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml
在最後的 </schema> 之前補上


    <key name="enabled" type="b">
      <summary>Enable remote access to the desktop</summary>
      <description>
        If true, allows remote access to the desktop via the RFB
        protocol. Users on remote machines may then connect to the
        desktop using a VNC viewer.
      </description>
      <default>false</default>
    </key>
    
sudo glib-compile-schemas /usr/share/glib-2.0/schemas
vi vino.sh
DISPLAY=:0 /usr/lib/vino/vino-server

Nvidia Jetson AGX Xavier 安裝


xavier 安裝,需要準備一台 ubuntu 18.04 的機器
當然不可能有這麼多的資源,使用虛擬機器
使用 64-bit 的虛擬機器,需要進入實體機器的 BIOS
開啟CPU設定中的,虛擬化技術
intel virtualization technology (vt-x) 或 AMD Virtualization(amd-v)
VisualBox 要安裝 Extension Pack 才能使用 USB2.0, 3.0
因為找不到最新版的 Extension Pack, 所以安裝了 5.1 版的 VisualBox
但在安裝的過程中也出了問題
,決定改用 VMware player 15.1.0
參照 VMware Workstation Player Install and Network Configuration
使用 Bridged 網路(其實 NAT 也可以成功,只是要指定 IP)
硬碟空間不能太小,以免卡關(建議40G)

到 Jetson Download Center 下載 JetPack 4.1.1
mark@Ubuntu64:~/Downloads$ chmod +x JetPack-L4T-4.1.1-linux-x64_b57.run 
mark@Ubuntu64:~/Downloads$ ./JetPack-L4T-4.1.1-linux-x64_b57.run 


請注意,要將 Compile CUDA Samples 設為 install
否則會找不到 ~/NVIDIA_CUDA-10.0_Samples
將 xavier 電源指示燈旁的 USB 連接至虛擬機器
不要看下一張圖的說明,它描述了如何啟動 xavier 進入工程模式
但它是錯的,正確的是
關機後同時按壓電源鍵(Power)與工程模式鍵(Recovery)兩秒後放開進入工程模式

偵測到USB連線,選擇虛擬機器
此時若是使用 Bridged 網路,它會自動往下跑
若是使用 NAT 網路,它會找不到 xavier
需要輸入 IP
到了下圖的畫面,直接關掉 terminal,完成
xavier 預設帳號密碼:nvidia/nvidia