能否在NVIDIA Jetson平台上使用ROS Kinetic?
ROS Kinetic在Jetson Nano(Ubuntu 18.04)上的可行部署方案
以下是三种经过验证的可行方案,按实施优先级排序:
方案1:使用Docker容器部署(最推荐,不破坏宿主系统)
该方案风险最低,不需要修改宿主系统的依赖配置,同时可以正常调用Jetson Nano的硬件加速能力:
- 首先安装Jetson适配的Docker runtime:执行
sudo apt install nvidia-docker2,安装完成后重启Docker服务sudo systemctl restart docker - 可以直接用第三方适配好的ARM架构ROS Kinetic镜像,也可以自行构建Dockerfile,基础镜像选择
arm64v8/ubuntu:16.04,在容器内按照官方流程安装ROS Kinetic即可 - 运行容器时增加硬件映射参数,即可直接访问Jetson的GPIO、CSI相机、CUDA组件,和原生运行体验无明显差异
注意:容器和宿主系统的ROS节点可以通过配置ROS_MASTER_URI直接通信,不需要额外做网络适配
方案2:源码编译ROS Kinetic到Ubuntu 18.04(原生运行)
如果不想使用容器,可以尝试手动源码编译,需要自行处理部分依赖冲突:
- 先添加ROS源:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list',添加密钥后执行sudo apt update - 安装编译依赖:
sudo apt install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential,执行sudo rosdep init && rosdep update - 使用rosinstall_generator拉取Kinetic的核心源码包,手动屏蔽和Ubuntu 18.04系统库冲突的包(比如boost、opencv相关依赖,优先用系统自带的18.04版本)
- 执行编译安装,整个编译过程大概1-2小时,编译完成后配置环境变量即可使用
注意:部分第三方ROS功能包可能出现依赖不兼容的情况,需要单独编译适配
方案3:迁移到ROS Melodic(长期稳定方案)
ROS Melodic是官方适配Ubuntu 18.04的LTS版本,和Kinetic的API兼容性超过95%,大部分Kinetic下的功能包只需要重新编译即可运行,是长期使用的最优选择:
- 按照官方流程直接安装ROS Melodic到Jetson Nano的Ubuntu 18.04系统
- 将现有Kinetic工作空间的源码拷贝到Melodic工作空间下,执行
catkin_make编译即可,少量有API变动的包只需要做极小的代码调整即可运行
注意:如果没有强依赖Kinetic独有功能包的场景,优先选择该方案,后续维护成本最低
内容的提问来源于stack exchange,提问作者zahid hasan Rakib
相关产品推荐
相关产品推荐

