Nvidia Jetson NX开发记录

1.开机历程

买的是国产的开发套件,开发板初始已经装好了ubuntu系统

1.组装:

Nvidia Jetson NX开发记录_第1张图片
组装好之后,就插上电源,自动开机了。开机后进行简单系统初始语言、时区等配置。

2.设置SSD启动

,这一步是为了提高数据读取速度,首先打开菜单,搜索Disks,点击Disks启动磁盘应用程序,可以看到显示的固态硬盘大小,如下图:
Nvidia Jetson NX开发记录_第2张图片
单击右上角三条横项选项,选择格式化(Format Disk),选择预设的 GPT,确认要格式(Format),接着输入系统密码,授权进行格式化。然后再点击下面的加号,设置主分区(Partition Size)大小,我设置了112G,一直点下一步就好了。
然后打开终端,输入以下指令,将source从eMMC复制到SSD:

git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe
./copy-rootfs-ssd.sh
./setup-service.sh 
# 然后重新启动系统
# 重启后桌面左侧列表出现红色 SD 文件夹表示 SSD 挂载成功
3.CUDA环境安装配置
sudo apt update
sudo apt install nvidia- jetpack
# Jetson Xavier NX 中已经安装了 CUDA 版本,但是运行 nvcc -V 查看版本是不会显示的,需要把 CUDA 的路径写入环境变量中。
sudo vim ~/.bashrc #使用 Vim 编辑环境变量,i进入编辑模式
# 添加如下两行
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# :wq 写入并退出
source ~/.bashrc
# 安装 pip3
sudo apt install python3-pip python3-dev
python3 -m pip install --upgrade pip #升级 pip
sudo -H pip3 install jetson-stats  # 用于查看设备硬件运行情况
sudo jtop

2.报错记录

1.执行apt-get和sudo vim ~/.bashrc后,python终端指令提示command not found.

解决方案:

sudo vim ~/.bashrc
# 输入i进入编辑模式,添加以下语句在最后一行
export PATH=/bin:/usr/bin:$PATH
# 输入 :wq 写入并退出(这里有个冒号哈)
2.安装Pycharm

参考:https://blog.csdn.net/FL1623863129/article/details/126004013

# 重要指令 
sudo apt-get install openjdk-11-jdk
java --version # 
sudo vim ~/.bashrc
# 写入如下4行
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-arm64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source ~/.bashrc
3.获取CSI图像数据(python)

代码来源:https://blog.csdn.net/m0_51004308/article/details/116541877
在运行过程中遇到opencv安装的问题,系统中自带的有python版本的opencv,从终端使用指令python3 CSItest.py,可以获取到图像,但在pycharm中报错process finished with exit code 132(interrupted by signal 4: SIGILL),网上查了下很多都说是环境问题,我试着降低了numpy版本,报了别的错。所以干脆把系统自带的opencv复制到当前的环境目录下。
这里遇到了很多问题,比如一装anaconda或者miniforce等虚拟环境管理工具,则无法再通过一下代码调用摄像头。必须使用基础环境的python才行。这一部分还要研究,谨慎参考。

#找到系统opencv地址
python3
import cv2
print(cv2.__file__)
# /usr/lib/python3.6/dist-package/cv2/python3.6...............
# 找到显示的路径,把cv2整个目录复制到当前环境的lib/set-package/下
# OK了
# CSItest.py
import cv2
 
# 设置gstreamer管道参数
def gstreamer_pipeline(
    capture_width=1280, #摄像头预捕获的图像宽度
    capture_height=720, #摄像头预捕获的图像高度
    display_width=1280, #窗口显示的图像宽度
    display_height=720, #窗口显示的图像高度
    framerate=60,       #捕获帧率
    flip_method=0,      #是否旋转图像
):
    return (
        "nvarguscamerasrc ! "
        "video/x-raw(memory:NVMM), "
        "width=(int)%d, height=(int)%d, "
        "format=(string)NV12, framerate=(fraction)%d/1 ! "
        "nvvidconv flip-method=%d ! "
        "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! "
        "videoconvert ! "
        "video/x-raw, format=(string)BGR ! appsink"
        % (
            capture_width,
            capture_height,
            framerate,
            flip_method,
            display_width,
            display_height,
        )
    )
 
 
if __name__ == "__main__":
    capture_width = 1280
    capture_height = 720
    display_width = 1280
    display_height = 720
    framerate = 60
    flip_method = 0
 
    # 创建管道
    print(gstreamer_pipeline(capture_width,capture_height,display_width,display_height,framerate,flip_method))
 
    #管道与视频流绑定
    cap = cv2.VideoCapture(gstreamer_pipeline(flip_method=0), cv2.CAP_GSTREAMER)
 
    if cap.isOpened():
        window_handle = cv2.namedWindow("CSI Camera", cv2.WINDOW_AUTOSIZE)
        
        # 逐帧显示
        while cv2.getWindowProperty("CSI Camera", 0) >= 0:
            ret_val, img = cap.read()
            cv2.imshow("CSI Camera", img)
 
            keyCode = cv2.waitKey(30) & 0xFF         
            if keyCode == 27:# ESC键退出
                break
 
        cap.release()
        cv2.destroyAllWindows()
    else:
        print("打开摄像头失败")
安装pytorch后报错:lib/libgomp-d22c30c5.so.1

进入https://pytorch.org/get-started/locally/,根据自己板子情况,选择安装版本。这里可以使用sudo jtop查看板子信息。
安装完成后跑代码,报错

torch/lib/libgomp-d22c30c5.so.1: cannot allocate memory in static TLS blocktorch/lib/libgomp-d22c30c5.so.1

原因是无法在静态 TLS 块中分配内存,反正就是占用什么内存了,解决方案:在.bashrc中添加如下内容,根据自己上面报错的pytorch地址修改

export LD_PRELOAD=<parent path to python3.8>/python3.8/site-packages/torch/lib/libgomp-d22c30c5.so.1

后来选择用miniforge配置虚拟环境,在卸载原来的torch之后报错,/torch/lib//libgomp-d22c30c5.so.1 from ld_preload cannot be preloaded,然后想到前面添加过这个,找到这个报错地址发现已经卸载了,我就又把.bashrc上面添加的那句删除之后source ~./bashrc,然后又不报错了。

你可能感兴趣的:(ubuntu,linux,运维,python)