xavier nx + docker

 


1. 使用 SDK Manager 刷机到 nvme

硬件连接

usb 连接主机, 连接显示屏

image

image

选择 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

xhost + 设置

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.

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt

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 版本和区别的详细说明:

  1. 版本说明

ros-noetic-desktop-full 本身是 ROS Noetic 的一个特定版本,没有其他子版本。它代表的是一个完整的安装,包括 ROS 的核心功能和所有官方包,通常与 ROS 的其他发行版(如 ros-noetic-desktop, ros-noetic-base)一起发布。

  1. 主要区别

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-desktopros-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 推理和机器学习任务的加速开发。

posted @   Zenith_Hugh  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现

喜欢请打赏

扫描二维码打赏

微信打赏

点击右上角即可分享
微信分享提示