买的是国产的开发套件,开发板初始已经装好了ubuntu系统
组装好之后,就插上电源,自动开机了。开机后进行简单系统初始语言、时区等配置。
,这一步是为了提高数据读取速度,首先打开菜单,搜索Disks,点击Disks启动磁盘应用程序,可以看到显示的固态硬盘大小,如下图:
单击右上角三条横项选项,选择格式化(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 挂载成功
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
解决方案:
sudo vim ~/.bashrc
# 输入i进入编辑模式,添加以下语句在最后一行
export PATH=/bin:/usr/bin:$PATH
# 输入 :wq 写入并退出(这里有个冒号哈)
参考: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
代码来源: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("打开摄像头失败")
进入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,然后又不报错了。