xavier nx + docker
1. 使用 SDK Manager 刷机到 nvme
硬件连接
usb 连接主机, 连接显示屏
选择 nvme 即可。
开机 esc 进入设置 boot 启动顺序即可。
2. 输入法谷歌拼音
https://blog.csdn.net/kids_budong_c/article/details/122071350
ctrl + 空格
切换输入法
3. docker 相关
https://www.cnblogs.com/odesey/p/18262624
https://www.cnblogs.com/odesey/p/17537758.html
https://www.cnblogs.com/odesey/p/18233348
docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-jetpack:r35.4.1
失败:
docker: Error response from daemon: unknown or invalid runtime name: nvidia.
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list apt-get update apt-get install -y nvidia-container-toolkit
sudo vim /etc/docker/daemon.json
加入:
{ "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } } } docker pull nvcr.io/nvidia/l4t-jetpack:r35.4.1 docker run -it --rm --net=host --runtime nvidia -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix nvcr.io/nvidia/l4t-jetpack:r35.4.1 docker run -it --net=host --runtime nvidia -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix -v /ssd/workspace:/workspace nvcr.io/nvidia/l4t-jetpack:r35.4.1
xavier nx 宿主机中安装 jtop
:
sudo apt-get update sudo apt-get install -y python3-pip sudo -H pip3 install --no-cache-dir jetson-stats sudo jtop
--
1. 配置 容器运行环境
容器内:
安装 cmake
https://www.cnblogs.com/odesey/p/18104392
安装 eigen3
apt-get install libeigen3-dev
安装路径:/usr/include/eigen3
编译安装 ceres-solver-1.14.0:(需要上一步的 eigen3)
apt-get install liblapack-dev libsuitesparse-dev libgflags-dev libgoogle-glog-dev libgtest-dev libcxsparse3 -y wget ceres-solver.org/ceres-solver-1.14.0.tar.gz tar -zxvf ceres-solver-1.14.0.tar.gz cd ceres-solver-1.14.0 mkdir build && cd build cmake .. make install -j4
安装 ROS 系统
参考:https://www.cnblogs.com/odesey/p/17968034
apt-get install lsb-release sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' apt install curl -y curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - apt update apt install ros-noetic-desktop-full -y echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc cat ~/.bashrc # 查看下是否将路径添加成功 source /opt/ros/noetic/setup.bash source ~/.bashrc
安装 jetson ncnn:
https://github.com/Tencent/ncnn/wiki/how-to-build#nvidia-jetson
git clone https://github.com/Tencent/ncnn.git cd ncnn mkdir build && cd build git submodule update --init cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../toolchains/jetson.toolchain.cmake -DNCNN_VULKAN=ON -DNCNN_BUILD_EXAMPLES=ON .. make -j$(nproc) make install # ncnn 的文件都安装在 build 下的 install 里面 # 验证 cd ../examples ../build/examples/squeezenet ../images/256-ncnn.png # 得到输出 532 = 0.165951 920 = 0.094098 716 = 0.062193
为了运行 let-net 的 vins-fusion 我们直接将 其升级为 适应 opencv4 和 ubuntu 20.04。
补充材料
1. --runtime nvidia 和 --gpus all 啥区别?
--runtime nvidia
和 --gpus all
是用于 Docker 容器运行时的两个不同选项,用于控制如何访问 GPU 资源。以下是它们之间的主要区别:
--runtime nvidia
- 目的: 指定 Docker 使用 NVIDIA 的容器运行时来支持 GPU 加速。
- 用法: 需要在 Docker 守护进程的配置中定义 NVIDIA 运行时,并且确保安装了 NVIDIA Container Toolkit。
- 功能: 使 Docker 容器能够使用 NVIDIA GPU,但它只是指定了容器使用哪个运行时,而不涉及具体的 GPU 配置。
--gpus all
- 目的: 在容器中请求和配置 GPU 资源。
- 用法: 需要 Docker 版本 19.03 及以上,并且 NVIDIA Container Toolkit 需要正确配置。
- 功能: 直接指定容器需要访问所有可用的 GPU 或特定数量的 GPU。这是一个较新的特性,用于替代
--runtime nvidia
选项,提供了更细粒度的 GPU 资源控制。
总结
--runtime nvidia
: 用于指定 Docker 使用 NVIDIA 运行时。这是在 Docker 19.03 之前的做法,现主要用于指定运行时环境。--gpus all
: 用于直接请求和分配 GPU 资源。建议在 Docker 19.03 及以上版本中使用,因为它提供了更简便的方式来配置 GPU 资源。
一般情况下,推荐使用 --gpus all
,因为它更现代、更简洁,能够更直接地控制 GPU 资源。
但是对于这个容器,我们无法使用 --gpus all
。
2. ros-noetic-desktop-full
和其他的版本有什么区别?
ros-noetic-desktop-full
是 ROS Noetic 的一个安装包,提供了完整的 ROS 桌面功能,包括基本的 ROS 库、工具和多数常用的 ROS 包。下面是一些关于 ros-noetic-desktop-full
版本和区别的详细说明:
- 版本说明
ros-noetic-desktop-full
本身是 ROS Noetic 的一个特定版本,没有其他子版本。它代表的是一个完整的安装,包括 ROS 的核心功能和所有官方包,通常与 ROS 的其他发行版(如 ros-noetic-desktop
, ros-noetic-base
)一起发布。
- 主要区别
a. 版本和组件
-
ros-noetic-desktop-full
: 包含 ROS Noetic 的所有核心功能和额外的功能包,如可视化工具、仿真工具等。它包括:- 基本的 ROS 工具和库
- 机器人操作系统 (ROS) 的大多数标准包
- 强大的可视化工具(如 RViz)
- 机器人仿真工具(如 Gazebo)
- 其他有用的库和工具(如 MoveIt!、OpenNI、PCL 等)
-
ros-noetic-desktop
: 包含核心 ROS 工具和库,但不包括所有的附加包。适用于需要一些功能但不需要所有附加包的用户。 -
ros-noetic-base
: 仅包含 ROS 的基础库和工具,适用于需要最小安装和定制化用户。
b. 安装和资源
ros-noetic-desktop-full
: 安装包较大,包含更多的功能包和工具,适合需要完整功能的开发环境。ros-noetic-desktop
: 相比desktop-full
更轻量,适用于对工具要求较低的环境。ros-noetic-base
: 最小安装包,仅包括基本的 ROS 库,适用于需要最小化安装并手动安装额外包的用户。
如何选择
选择哪个版本取决于你的需求:
- 如果你需要一个功能齐全的开发环境,包含所有标准工具和库,选择
ros-noetic-desktop-full
。 - 如果你只需要核心功能和部分工具,选择
ros-noetic-desktop
。 - 如果你需要最小化安装,并计划根据需要手动添加额外的功能包,选择
ros-noetic-base
。
ros-noetic-desktop-full
是 ROS Noetic 的全面安装选项,包括所有核心功能和附加包。如果你对功能包有特殊需求或希望保持系统的轻量,可以选择 ros-noetic-desktop
或 ros-noetic-base
。
3. nvidia L4T 是什么意思
NVIDIA L4T (Linux for Tegra) 是 NVIDIA 为其 Tegra 系列嵌入式处理器提供的嵌入式 Linux 发行版。L4T 是基于 Ubuntu 系统的定制操作系统,包含了为 Tegra 硬件优化的 Linux 内核、驱动程序、库和工具,特别适用于 NVIDIA Jetson 系列开发板,如 Jetson Nano、Jetson Xavier NX、Jetson TX2 和 Jetson AGX Xavier。
L4T 允许开发者在这些嵌入式平台上运行 Linux 系统,同时利用 NVIDIA CUDA 和 TensorRT 等加速库进行 AI 推理和机器学习任务的加速开发。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现