Jetson nano B01学习笔记 -- 系统环境配置以及ROS安装

news/2024/5/4 3:08:00/文章来源:https://blog.csdn.net/m0_55202222/article/details/129911562

文章目录

  • 一、Jetson nano 简介
  • 二、 系统环境配置
    • 1、系统镜像烧录
    • 2、CUDA环境配置
  • 三、 ROS安装和环境配置
  • 总结


一、Jetson nano 简介

在这里插入图片描述
Jetson Nano是一款体积小巧、功能强大的人工智能嵌入式开发板,于2019年3月由英伟达推出。它预装Ubuntu 18.04LTS系统,搭载英伟达研发的128核Maxwell GPU,可以快速将AI技术落地并应用于各种智能设备。相比于Jetson之前的几款产品(Jetson TK1、Jetson TX1、Jetson TX2、Jetson Xavier),Jetson Nano大幅减少了人工智能终端的研发成本。因此,一经推出,便受到了广泛的关注。

Jetson nano 的几点优势

(1) 体型小巧,性能强大,价格实惠,整体采用类似树莓派的硬件设计,支持一系列流行的AI框架,并且英伟达投入了大量的研发精力为其打造了与之配套的Jetpack SDK开发包,通过该开发包可以使学习和开发AI产品变得更加简单和便捷。

(2) 专为AI而设计,性能相比树莓派更强大,搭载四核Cortex-A57处理器,128核Maxwell GPU及4GB LPDDR内存,可为机器人终端、工业视觉终端带来足够的AI算力。

(3) 可提供472 GFLOP算力,支持高分辨率传感器,可以并行处理多个传感器,并可在每个传感器流上运行多个现代神经网络。

(4) 支持英伟达的NVIDIA JetPack组件包,其中包括用于深度学习、计算机视觉、GPU计算、多媒体处理等的板级支持包,CUDA,cuDNN和TensorRT软件库。

(5) 支持一系列流行的AI框架和算法,比如TensorFlow,PyTorch,Caffe / Caffe2,Keras,MXNet等,使得开发人员能够简单快速的将AI模型和框架集成到产品中,轻松实现图像识别,目标检测,姿势估计,语义分割,视频增强和智能分析等强大功能。

二、 系统环境配置

1、系统镜像烧录

首先先点击链接下载适配 Jetson nano 的官方镜像文件

https://developer.nvidia.com/jetson-nano-sd-card-image-r3221

准备好SD卡和读卡器来烧录系统镜像,使用SD卡格式化工具对SD进行格式化情况, 注意如果是国产版的Jetson nano开发套件要先给emmc系统刷固件,才能将为SD卡作为系统启动盘,固件记得问卖家要

SD Card Formatter工具下载

在这里插入图片描述

打开SD Card Formatter软件,选择对应的SD卡盘符,选择Quick format 模式直接格式化SD卡,格式化好后下载balenaEtcher烧录工具准备烧录系统镜像

balenaEtcher烧录工具下载

在这里插入图片描述

选择对应的系统镜像文件,选择对应的SD卡盘符,然后点击flash进行烧录。烧录完后弹出读卡器和SD卡,将SD卡插入Jetson nano的卡槽,给Jetson nano上电,最好用5V4A的电源适配器给Jetson nano供电

2、CUDA环境配置

Nvidia官方的系统镜像提供的Ubuntu18.04LTS,成功烧录系统镜像并启动成功会进入下面界面,这是在外接显示屏的情况下

在这里插入图片描述
首先按照惯例更新一下软件源并升级,这里不建议换源后更新,因为国内几个镜像源适配都没有官方源好,可能会报一些奇奇怪怪的错

sudo apt-get update
sudo apt-get upgrade

安装一些常用的工具

sudo apt install curl
sudo apt install nano

安装 jtop 来查看系统的运行信息,在终端输入 jtop 命令即可查看系统信息

sudo pip3 install jetson-stats
jtop

Jetson-nano 中已经安装了 CUDA10.2 版本

nvcc -V 

此时如果运行不会成功的话,需要你把 CUDA 的路径写入环境变量中,/.bashrc是用于配置Ubuntu系统环境变量的脚本

ls /usr/local/cuda/bin
sudo vim ~/.bashrc 

我们通过Ubuntu自带的文本编辑器 vim 来编写,将下面两行添加到最后

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_

通过 Esc 退出到命令模式后,通过按下:开始输入命令,wq 为保存并退出,q 为退出,q!为强制退出,然后需要 source 一下脚本使环境变量生效

Jetson-nano 中已经安装了 OpenCV4.1.1 版本,使用命令检查 OpenCV 是否安装就绪

pkg-config opencv4 --modversion

Jetson-nano 中已经安装好了 cuDNN,并有例子可供运行,我们运行一下例子,也正好验证上面的 CUDA。首先进入到/usr/src/cudnn_samples_v8/mnistCUDNN路径下的例子目录,然后编译一下

cd /usr/src/cudnn_samples_v8/mnistCUDNN
sudo chmod +777 mnistCUDNN
sudo make

三、 ROS安装和环境配置

ROS是适用于机器人的开源元操作系统,ROS集成了大量的工具,库,协议,提供类似OS所提供的功能,简化对机器人的控制,还提供了用于在多台计算机上获取,构建,编写和运行代码的工具和库,ROS在某些方面类似于“机器人框架”,ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体

在这里插入图片描述
首先备份软件源的list文件,然后更换成清华源。这部分主要加快软件包的下载更新速度,实测不会出现问题,当然你害怕出错也可以直接用官方源

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list

将软件源配置文件内容删除,将下面的内容复制到文件中

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe

换源后再更新一下软件包

sudo apt-get update

添加ROS软件源并添加密钥

sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

换源后又更新一下软件包

sudo apt-get update

安装ROS,我们这里安装的是ROS的melodic版本,官方推荐的ROS版本有:noetic 、melodic 、 kinetic

sudo apt install ros-melodic-desktop-full

首先安装构建ROS依赖的相关工具,这些python工具包会用于后续系统框架的搭建

sudo apt install python3-rosdep python3-rosinstall python3-rosinstall-generator python3-wstool build-essential

ROS中使用许多工具前,要求先要安装rosdep软件包

sudo apt install python3-rosdep

然后初始化rosdep

sudo rosdep init
rosdep update

这里如果不科学上网的话可能会报错,如果没有科学上网工具的小伙伴可以参考下面这篇文章的修改方法

rosdep init 和 rosdep update 失败的解决方法

安装一下ROS对应版本的软件工具包

sudo apt-get install ros-melodic-turtlesim

配置好ROS的环境变量,以后可以让Ubuntu系统找到它,比如说你需要用ROS的命令时

echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc
source ~/.bashrc

分别打开三个终端,一个运行ROS的核心master,一个运行ROS的节点Turtlesim,一个打开ROS小乌龟的键盘控制页面

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

如果小乌龟成功跑起来说明基本上安装成功
在这里插入图片描述


总结

以上就是Jetson nano安装Ubuntu系统并配置环境,同时安装ROS的学习笔记。博主在暑假就试过在虚拟机Ubuntu上安装ROS2的humble版本,相对来说ROS的安装比较轻松。因为项目开发的需求,博主近期都在学习嵌入式AI技术的部署和ROS实现机器人小车的导航和建图,需要学习Slam相关的技术栈来实现。机器人技术是未来科技的高峰,等待着热爱机器人技术的小伙伴去征服。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102336.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeafLet加载自定义Legend的设计与实现

背景 众所周知,在GIS的世界里,图例和地图永远是一对一起出现的对象。在地图上表示地理环境各要素,比如山脉、河流、城市、铁路等所用的符号叫做图例。这些符号所表示的意义,常注明在地图的边角上。图例是表达地图内容的基本形式和…

小六壬学习笔记

小六壬学习笔记 简介前置知识:十二地支和十二时辰适用范围起课:月令日时卦象 疑问:遇到闰月怎么办?禁忌数字起课法手机计算器取余数 简单解卦 简介 马前课,又名:小六壬。 小六壬历史渊源:https://m.sohu.c…

统信UOS 20 安装达梦数据库V8

统信UOS 20 安装达梦数据库V8 1、安装教程2、启动数据库实例服务失败解决方法3、使用dm管理工具连接数据库 1、安装教程 https://blog.csdn.net/OceanWaves1993/article/details/129936878 此教程进行到启动数据库实例步骤时 使用下面命令启动数据库实例服务时,报…

大数据技术之集群数据迁移

在大数据集群数据迁移的项目中涉及到很多技术细节,本博客记录了迁移的大致的操作步骤。 迁移借用Hadoop自带的插件:distcp。 一、Hadoop集群数据迁移 **DistCp(分布式拷贝)**是用于大规模集群内部和集群之间拷贝的工具。它使用M…

DHCP笔记

目录 DHCP动态主机配置协议——UDP67/68端口 DHCP获取IP地址 客户端首次获取IP地址 客户端再次获取IP地址 租期/续租 DHCP的工作报文 DHCP的配置 案例 DHCP动态主机配置协议——UDP67/68端口 DHCP是应用层协议,采用C/S服务模式,只能在一个广播域…

数据科学与机器学习在软件开发中的应用

数据科学和机器学习是现代软件开发的重要组成部分,可以帮助开发人员更好地理解和分析数据,从而提高软件的质量和性能。在本篇博客中,我将深入探讨数据科学和机器学习在软件开发中的应用,并讨论它们如何帮助我们创建更好的软件。 …

Xshell中的基本命令

whoami 当我们刚登录上Xshell的时候,我们应该做什么呢?? 我们上次说了如何增加使用者,和删除使用者,今天我们说一下其他的基本命令。 我们刚开始登录的时候可以用root登录 那么我们怎么看自己事谁呢? …

Android 一个获取网址时间的Demo

Android 一个获取网址时间的Demo 文章目录 Android 一个获取网址时间的Demo通过一个网址获取时间的代码关于Android NTP 时间Android 同步时间代码 前段时间有个客户想用局域网同步Android 设备的时间,开发后把这个demo分享一下。 效果: 这里也获取了阿…

VUE3子组件-业务代码优化

Vue3子组件 1.简介 Vue 3组件的主要优势之一就是它们可以帮助你将你的应用程序分解成可维护和可重用的部分。当你在应用程序中多次使用相同的代码时,你可以将它们抽象成一个组件,然后在应用程序中的多个地方使用该组件,而不必每次都编写相同…

User Diverse Preference Modeling by Multimodal Attentive Metric Learning

BACKGROUND 现有模型通常采用一个固定向量去表示用户偏好,在假设——特征向量每一个维度都代表了用户的一种特性或者一个方面,这种方式似乎不妥,因为用户对于不同物品的偏好是不一样的,例如因演员喜欢一部电影,而因特…

Linux 静态库的制作与使用

目录 静态库1、 什么是库2、 静态库的制作2.1 命名规则与制作规则 3、 静态库的使用 静态库 1、 什么是库 库文件是计算机上的一类文件,可以简单的把库文件看成一种代码仓库,它提供使用者可以直接拿来用的变量、函数或类。库是一种特殊的程序&#xff…

多兴趣推荐召回模型:ComiRec

前言 多兴趣向量召回系列: 通过Youtube DNN推荐模型来理解推荐流程 多兴趣召回模型:MIND 推荐系统可以表达为序列推荐问题的形式,序列推荐任务是通过用户的历史行为来预测用户下一个感兴趣的item,这也与真实场景的推荐场景是符…

ERROR org.springframework.web.context.ContextLoader

项目启动时报错: ERROR org.springframework.web.context.ContextLoader - Context initialization failed java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache() 原因分析 这个错误的原因可能是因为 Spring 的不同…

Go 语言进阶与依赖管理

作者:非妃是公主 专栏:《Golang》 博客主页:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录 一、语言进阶1. 并发和并行2. 协程(Goroutine…

Ubuntu20.04软件安装大全

目录 Ubuntu20.04 软件安装大全前言1. Windows和Ubuntu双系统安装1.1 下载Ubuntu系统镜像1.2 磁盘分区1.3 GPT分区安装Ubuntu1.4 系统完成后的一些设置1.5 遇到的一些小bug 2. 换源2.1 apt换源2.2 pip换源 3. 显卡驱动安装3.1 卸载显卡驱动3.2 准备工作3.3 驱动安装3.4 验证 4.…

Python自动发送消息小脚本,可用于各种聊天框~

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,YOLO,活动领域博主爱笑的男孩。擅长深度学习,YOLO,活动,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typecollect 个…

2023-04-23 算法面试中常见的动态规划问题

动态规划 1 什么是动态规划 以菲波那切数列求和为例,通过 1.普通的递归2.引入记忆数组memo3.自下而上地解决问题,即动态规划 动态规划的定义 dynamic programming (also known as dynamic optimization) is a method for solving a complex problem by…

C嘎嘎~~ 【初识C++ 下篇】

初识C 下篇 1.引用1.1引用的概念1.2引用的特点1.3常引用1.4引用使用的场景1.5引用和指针的区别 2.指针空值 --- nullptr3.内联函数3.1 内联函数的概念3.2内联函数的使用场景3.3内联函数的特性 1.引用 1.1引用的概念 相信大家小时候, 肯定有小名、绰号、亲朋好友的昵…

Zuul源码解析(二)

Zuul 的自动配置 ZuulProxyAutoConfiguration 如何触发 如上图,在 spring.factory 中配置 ZuulProxyAutoConfiguration 自动配置了,直接点进去 如上图所示,发现这有个条件注解,需要有 org.springframework.cloud.netflix.zuul.Zu…

“支付+SaaS”赋能传统产业数字化转型

易观:传统支付业务利润空间在政策监管和市场竞争下不断被压缩,多家上市支付机构逐步将业务经营重点转移切入到企业交易环节,为企业提供包括SaaS服务、行业解决方案、营销服务及金融科技服务等在内的企业服务收入成为新的增长点。 伴随着“十四…