NVIDIA Jetson Nano B01 安装Ubuntu 18.04.3 LTS

几乎完美安装! NVIDIA Jetson Nano B01 Ubuntu 18.04.3 LTS 的 ROS 安装和菜鸟的踩坑记录

  • NVIDIA Jetson Nano B01技术规格
  • Ubuntu 定制系统的安装
    • 烧录时的踩坑记录
      • SD卡格式
      • SD卡安全信息
      • 烧录过程中的注意事项
  • 开始安装Ubuntu
  • 进入Ubuntu系统之后的一通折腾
  • SSH的配置
    • SSH的服务端配置
    • SSH的客户端连接(Mac)
    • SSH客户端的连接(IBM兼容机)
  • ROS的安装教程与若干问题的解决方法
    • 初步认识 ROS
    • 开始安装ROS
    • 安装ROS时我踩过的坑
      • 1.换源问题
      • 2.ROS的初始化
      • 3.是否要一次性安装完成
      • 4.网络环境
  • 测试ROS
  • 感慨

NVIDIA Jetson Nano B01技术规格

在这里插入图片描述

GPU:128 核心 Maxwell
CPU:4 Core ARM A57 @1.43 GHz
RAM:4 GB LPDDR4
储存:Micro SD 至少16GB (我使用的是32GB TF卡)
接口:MIPI CSI-2 DPHY x2;千兆以太网接口;M.2 Key E(我这里用于安装无线网卡);
显示:HDMI和DP
USB:USB 3.0 x4;USB 2.0 Micro-USB x1
GPIO接口


Ubuntu 定制系统的安装

先下载Ubuntu 18.04.3 LTS 操作系统
操作系统下载地址:百度网盘链接 密码: tun3
烧录工具下载地址:百度网盘链接 密码: qhll

下载完成之后,解压,是一个img文件解压完的镜像
使用下载完的烧录工具:win32diskimager 一路确定就好,等待安装完成之后,从开始菜单打开即可。

软件界面
打开软件之后,在映像文件那一栏选择你解压过后的镜像文件,右侧设备选择你要烧录镜像的SD卡。SD卡的命名务必是英文命名,我第一次烧录的时候就因为是中文命名而烧录失败。在这之后选择完成之后,就可以点击写入了。

烧录时的踩坑记录

SD卡格式

这个时候就要注意了,有的人可以直接开始烧录,而有的人就不能开始烧录,出现这个问题,很有可能就是你的SD卡的文件格式不正确,是默认的FAT格式。这个时候你就需要将SD格式化为exFAT格式,格式化完成之后你就可以尝试烧录了。

SD卡安全信息

注意!!!这一点非常重要!!!你所选择的这个磁盘会被完全抹掉,请在烧录之前一定要备份该SD卡内的全部文件!!!

烧录过程中的注意事项

这一点也很重要!!!在烧录的过程中,请不要向电脑插入任何新的外接设备也千万不要拔出任何的外接设备!!!否则会导致烧录失败!!!


开始安装Ubuntu

在这里插入图片描述
将SD卡片插入到NVIDIA的卡槽中,在操作这步之前一定要断电操作!!!(我第一次烧录失败后,重新烧录完,装卡片的时候没有断电,结果机子的灯突然不亮了,吓死我了【恐怖脸】,立马断电,还好断电及时,不然我新买的板子就没了,笑)
SD卡插入之后,插电,开机,五安大电牛(不是)

屏幕顺利点亮!我当场老泪纵横。

顺利进安装界面了。我这里没拍下来这一历史性时刻,简直是一个遗憾,我后面再装系统的时候一定要拍下来(笑)

人生就在于玩命折腾 ——鲁迅
鲁迅:不,我不知道,我没说过,不要问我

安装的时候和正常的Ubuntu安装几乎一致,就那样安装就可以了。整个过程不会超过10分钟。
这里要提示一点,我安装的时候中间有一个要选择应用大小的那个界面(我没拍下来,总之就是选最大的那个就好了,应该是默认的那个)

太棒了,安装完成了!小伙伴们一定要记住自己的用户名和密码哦。阿拉,还有设置密码的时候一定要注意大小写哟~


进入Ubuntu系统之后的一通折腾

首先,我个人明确表示不想在这个定制的Ubuntu里面装中文输入法和中文界面,不是我不想装,是太烦了!!!为了装这个中文输入法和中文界面,我重装了两次系统,希望有大佬在评论区能帮我解答一下这个问题。

再其次,我非常不推荐接分辨率低于1280x720的屏幕,因为有的窗口显示不全,甚至无法打开,所以在这里我想跟各位朋友说一下,如果你想使用树莓派的屏幕,我直接建议你放弃,最好是买一块新的屏幕,这一点对于后续的开发非常友好。

默认的NVIDIA的桌面非常酷,但是太花哨了,我就给换了个我喜欢的山水背景。

切记,一定要把屏幕自动休眠给关掉!!!不然就会像我好不容易装完了ROS要测试的时候,提示我需要让屏幕点亮,应该是这个提示,总之就一定要把屏幕自动休眠关掉啦~

另外,要是想接VNC的话,我目前只在有线网的环境下连接成功过,希望有大佬能帮我解决这个问题!!!


SSH的配置

可能有人要问了,为嘛不直接在Jetson Nano上安装,非得搞一个SSH?

答案很简单,我T*D是在受不了那种无法愉快地复制粘贴的感觉,我在Mac里面可以直接从terminal里面愉快的复制粘贴代码,同时还能看《辉夜》(手动狗头)

SSH的服务端配置

首先,得要安装服务端

sudo apt-get install openssh-server
  • 1

接着,你得看看你的这个服务端有没有工作

ps -e | grep ssh
  • 1

如果出现了如下这种sshd,就说明:恭喜,你安装成功了!!!

在这里插入图片描述
什么鬼??我这咋这么多sshd?????不管了,反正能用(哼)

好啦好啦,还差最后一步就完成啦

sudo apt install openssh-client
  • 1

这步之后就OK了!

来看看你的主机能不能连接到Jetson 开发板吧!
我这里使用的是macOS Big Sur Beta操作系统 (苹果你还我编译器!!!还我虚拟机!!!)

SSH的客户端连接(Mac)

第一步,在launchpad里面输入terminal并打开在这里插入图片描述
在这里插入图片描述
第二步,在terminal里面输入

ssh User_Name@target-computer-IP
  • 1

我这里是:

ssh william@192.168.0.109
  • 1

各位小伙伴们,这个User_Name是你开发板上Ubuntu系统用户的用户名,这个target-computer-IP是你开发板的IP地址

什么??你说你不知道你的开发板的IP地址???放心,这也好办,在你的开发板上打开terminal(前提是你的开发板有一个能够正常显示内容的屏幕)在terminal里面输入

ifconfig
  • 1

我这里偷个懒,直接在ssh里面输入查询了
在这里插入图片描述
大家可以看到这个wlan0这一栏,显示的是192.168.0.109,这个就是我的开发板的IP地址了,同理你也可以查询到你的开发板的IP地址了。

这里建议大家,登录路由器的后台,把你的这个开发板的IP地址给固定下来,这样子就避免了每次SSH链接之前要查询一遍IP的痛苦了。(我反正觉得挺欢乐的,笑)

SSH客户端的连接(IBM兼容机)

由于我手头没有IBM兼容机,所以我这(zhei第四音)里转发了一下我认为还不错的其他博主的连接教程(请多多包涵啦)

https://www.cnblogs.com/tansuoxinweilai/p/11617797.html


ROS的安装教程与若干问题的解决方法

初步认识 ROS

ROS是嘛呢?我替你们百度了一下:

ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。

ROS设计者将ROS表述为“ROS = Plumbing + Tools + Capabilities + Ecosystem”,即ROS是通讯机制、工具软件包、机器人高层技能以及机器人生态系统的集合体

ROS 各版本对应支持的Ubuntu版本:
在这里插入图片描述
各位安装的时候千万别装错了!!!没事,装错了也没关系,反正装不上(哭,我这里装了不下十次,各位千万千万要看对版本!!!少走弯路!!!)


开始安装ROS

我是在Mac上用SSH连接开发板来安装的。连接方法在上面^^

第一步,更换默认源(这个不是必须的,看你的网络情况,我本人就没换,用的热点(哭))

在更换之前,你需要备份你的source.list文件,当然了,我头铁,没备份就上了,各位千万别学我。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak    
#为防止误操作后无法恢复,先备份原文件sources.list
  • 1
  • 2

之后使用vim来对文件进行编辑,删掉原先的内容,再把下面的文件复制进去

sudo vim /etc/apt/sources.list
  • 1

复制进去如下内容,记得保存啊,vim的这个保存方法自己查咯

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

接着,在terminal里面更新一下

sudo apt-get update
  • 1

就好了

如果在update这里遇见类似这样的情况

Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
  • 1
  • 2
  • 3

可以使用下面的这种方法应该就可以解决无法update的问题了,造成这个问题的原因可能是由于上一个更新被强行终止但是后台还保留了进程,所以kill掉所有的相关进程就可以了

sudo killall apt
sudo killall apt-get
sudo killall synaptic
  • 1
  • 2
  • 3

如果没有问题,之后,添加源

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
  • 1

添加密钥

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
  • 1

接着,再在terminal里面更新一下

sudo apt-get update
  • 1

非常重要的一步,正式安装ROS!!!

sudo apt install ros-melodic-desktop-full
  • 1

这个过程极其漫长,具体的时间取决于你的网络质量,如果能科学上网的话,应该能快许多

ROS 初始化

sudo rosdep init
rosdep update
  • 1
  • 2

如果这个时候未能初始化,或者说是安装失败,推荐你看看下面这个文档,我是按照这个文档解决的:

https://blog.csdn.net/qq_42127861/article/details/106998969?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf

或者我根据我遇到的问题给转载一下(没问题的直接跳过这段):

第一步

sudo vim /etc/resolv.conf
  • 1

第二步,将原有的nameserver注释掉,并添加如下两行

nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器
  • 1
  • 2

第三步,保存,执行如下命令:

sudo  apt-get update
  • 1

第四步,执行如下命令

rosdep update
  • 1

就OK了

这个时候再ROS 初始化尝试一下,应该就能解决了

sudo rosdep init
rosdep update
  • 1
  • 2

假若还未解决,那还请Google一下咯

这里假装已经初始化完成
(没问题的跳到这儿)紧接着执行如下命令:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • 1
  • 2

最后,再执行如下命令:

sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
  • 1

安装ROS时我踩过的坑

1.换源问题

我相信有很多的朋友在安装各种各样的东西时,都遇到过换源的问题,很多人都说要换到国内的源,这个因人而异,也因网而异。我个人感觉,在联通的网络环境下,不用换源也没啥问题,我就是用联通网的(我没打广告!!!我也没恰饭!!!),感觉还不错,但也是偶尔抽风。

要是非得换成国内的源的话,我还是首推清华的,毕竟速度啥的都还不错,就是依赖问题没办法解决。
备用的源的话,像是腾讯还有阿里的源也都还不错,网易的也还凑合。这个看个人的喜好吧。

2.ROS的初始化

假如说,你都按照我的步骤安装,没啥问题,就是初始化死活都不行,第一先考虑是不是源的问题;第二,再考虑一下是不是版本没对上,具体的版本之间的兼容问题,看上文的介绍。

3.是否要一次性安装完成

必须一次性安装完成!!!切忌安装一半,说我想出去玩玩,关机休眠啥的,等回来再接着安装。千万不要这样做,等于前功尽弃。特别的要命,我第三次重装系统就是这个问题导致的(可能是这个问题导致的),就是安装到一半,回宿舍了,然后接着搞,结果不行,那就重头安装吧,装一半,您才怎着?熄灯断电!(倒吸一口气并流下了悔恨的泪水)结果第二天系统崩了,就重装了(哭)。
一定要一次性装完!!!

4.网络环境

你所处的网络环境一定要稳定,这里的稳定是指内网的稳定,不然会出现装一半的时候SSH掉线的这种状态,那个时候真就没地方哭去了。

我记起来的就这些坑,对于各位大佬来讲,我犯的这些都是些非常低级的错误,但是对于新入手NVIDIA Jetson Nano的朋友或者是刚刚接触Ubuntu/Linux的朋友,兴许能帮的上忙。如果大家有啥踩坑经历,一定要在评论区留言交流哦,没准你的经历就能够帮助在Ubuntu中迷失方向的一位朋友找到前进的方向(好多定语啊…)


测试ROS

前面费了这么大劲,咋样才能知道有没有安装成功了呢?
测试一下呗
最简单的就是小乌龟程序,我相信很多人在初学Python的时候,一定都接触过小乌龟程序吧

首先,不管你是使用SSH还是直接在开发板上运行,都要先打开一个terminal来启动ROS的核心程序

roscore 
  • 1

记住,这个terminal不要关,打开一个新的terminal,运行如下程序,你会发现一个可爱的乌龟在屏幕中央(记住,这一步必须有屏幕连接着开发板,不然会报错,vnc我试过不行,如果有不连屏幕就能显示小乌龟的方法的话,请在评论区帮帮我这个孩子吧哈哈哈哈(泣极而喜,不是))

rosrun turtlesim turtlesim_node 
  • 1

记住,这个terminal也不要关,咱再开一个terminal,运行如下命令

rosrun turtlesim turtle_teleop_key 
  • 1

您再猜猜怎着,你可以用方向键来控制小乌龟移动了!!!如果不能移动的话,就请将这个命令行窗口保持在最前端,再试试就好了。(啊我好了)

玩了一会儿乌龟画线之后,再再再再新开一个terminal
运行如下命令

rosrun rqt_graph rqt_graph 
  • 1

就能看到ROS的图形化界面了,在这里你可以看到各个节点之间的关系了。这个感觉简直爱了。就仿佛看到了网恋女友的真面容一样(咱可是面向对象编程啊,笑)

任何程序错误,以及技术疑问或需要解答的,请添加

 

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

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

相关文章

Spring Boot(十)Logback和Log4j2集成与日志发展史

一、简介 Java知名的日志有很多,比如:JUL、Log4j、JCL、SLF4J、Logback、Log4j2,那么这些日志框架之间有着怎样的关系?诞生的原因又是解决什么问题?下面一起来看。 1.1 JUL Java有自己的日志框架JUL(Java…

Zabbix配置模板监控指定服务器主机

一、Zabbix监控指定服务器 第一里程:在指定服务器上安装zabbix客户端,即zabbix-agent 访问清华镜像站,找到zabbix-agent镜像 第一步 第二步 第三步 第四步 第五步 第六步 第七步 第八步:鼠标点击右键选择复…

Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

一、简介 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API,Redis也是技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」首字母缩写,也就…

统计在从1到n的正整数中1出现的次数

问题: 给定一个十进制正整数N,写下从1开始,到N的所有整数,然后数一下其中出现的所有“1”的个数。 例如:N 2,写下1,2。这样只出现了1个“1”。 N 12,我们会写下1, 2, 3, 4, 5, 6, 7,…

Spark Streaming源码分析 – DStream

A Discretized Stream (DStream), the basic abstraction in Spark Streaming, is a continuous sequence of RDDs (of the same type) representing a continuous stream of data.Dstream本质就是离散化的stream,将stream离散化成一组RDD的list,所以基本…

PowerShell遍历文件夹下的子文件夹和文件

PowerShell遍历文件夹下的子文件夹和文件是一件很容易的事儿。Get-ChildItem这个cmdlet就有一个recurse参数是用于遍历文件夹的。 PowerShell中,使用Get-ChildItem来获取文件夹下面的子文件夹和文件(当然,它的功能不仅于此)。然后…

Spring Boot(十三)RabbitMQ安装与集成

一、前言 RabbitMQ是一个开源的消息代理软件(面向消息的中间件),它的核心作用就是创建消息队列,异步接收和发送消息,MQ的全程是:Message Queue中文的意思是消息队列。 1.1 使用场景 削峰填谷:用…

C++ DNN Opencv3.4 实现人脸计数和人脸检测

前言 OpenCV 3.3正式发布后,对深度学习(dnn模块)提供了更好的支持,dnn模块目前支持Caffe、TensorFlow、Torch、PyTorch等深度学习框架。 另外,新版本中使用预训练深度学习模型的API同时兼容C和Python,让系…

C++ SVM Opencv3.4实现人脸检测

很通俗的来说,haar算法计算特征就是用一块区域内黑色的值减去白色的值。但是一张图片像素点是非常多的,如果用普通的方法去计算一块区域的值,效率相当低下。这里有一种加速计算的方法--积分图:定义如下:(维…

Spring Boot(十四)RabbitMQ延迟队列

一、前言 延迟队列的使用场景:1.未按时支付的订单,30分钟过期之后取消订单;2.给活跃度比较低的用户间隔N天之后推送消息,提高活跃度;3.过1分钟给新注册会员的用户,发送注册邮件等。 实现延迟队列的方式有…

三、Win10 64位PyCharm下打包.py程序为可执行exe文件且兼容32位和64位

WIN10 64位下Pycharm打包.py程序为可执行文件exe 上面衔接WIN10 64位下Pycharm打包.py程序为可执行文件exe,存在不兼容32位和64位的情况。 下面Win10 64位PyCharm下打包.py程序为可执行exe文件且兼容32位和64位说明: 前提条件 python3.8.2 32 位;注意:原来有 64 位 Pyth…

Java核心(一)线程Thread详解

一、概述 在开始学习Thread之前,我们先来了解一下 线程和进程之间的关系: 线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。 线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。 线…

Jetson Nano配置与使用(5)cuda测试及tensorflow gpu安装

Jetson Nano利用官方镜像进行安装后,系统已经安装好了JetPack,cuda,cudaa,OpenCV等组件,不过需要修改下环境变量才可以使用。 1.修改环境变量 利用vim打开 ~ 路径下.bashrc文件: sudo vi ~./bashrc文件的…

Java核心(二)深入理解线程池ThreadPool

本文你将获得以下信息: 线程池源码解读线程池执行流程分析带返回值的线程池实现延迟线程池实现 为了方便读者理解,本文会由浅入深,先从线程池的使用开始再延伸到源码解读和源码分析等高级内容,读者可根据自己的情况自主选择阅读…

Jetson Nano安装pytorch 基于torch1.6和torchvision0.7

需要注意的是,博主使用的是win10主机,通过局域网连接的jetson nano, 其中jetson nano的预制CUDA版本为10.2 Jetpack 4.1.1 分别执行以下命令,即可查看自己的jetson nano 预搭载的CUDA版本 sudo pip3 install jetson-stats sudo …

【Jetson-Nano】2.Tensorflow和Pytorch的安装

文章目录 1、Tensorflow多版本安装 1.1 Protobuf 安装1.2 安装依赖包及tensorflow1.151.3 安装其它常用库1.4 测试python包是否安装成功1.5 TensorRT和Opencv的安装1.6 pycuda和onnx安装1.7 Tensorflow2.3安装2、Pytorch安装 2.1 安装pytroch和torchvision2.2 安装环境验证参考…

Spring Boot 终极清单

一、Spring Boot 终极清单诞生原因我上学那会主要学的是 Java 和 .Net 两种语言,当时对于语言分类这事儿没什么概念,恰好在2009年毕业那会阴差阳错的先找到了 .Net 的工作,此后就开始了漫长的 .Net 编程之旅,说实话最初的“编程思…

简单的喷淋实验--嵌入式实训

目录 喷淋实验--嵌入式实训 1.MQTT通信原理 2.MQTT库的移植 3.代码流程 运行视频如下: 喷淋实验--嵌入式实训 1.MQTT通信原理 MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅消息传输协议,旨在提供可靠、高效的通信…

Yolov5系列AI常见数据集(1)车辆,行人,自动驾驶,人脸,烟雾

下述所有数据可在下方二维码公众号回复: 数据大礼包 获得!!! Fashion-MNIST图像数据集(200.4MB) 每个训练和测试样本都按照以下类别进行了标注: 标注编号描述0T-shirt/top(T恤&…

Java核心(四)你不知道的数据集合

导读:Map竟然不属于Java集合框架的子集?队列也和List一样属于集合的三大子集之一?更有队列的正确使用姿势,一起来看吧! Java中的集合通常指的是Collection下的三个集合框架List、Set、Queue和Map集合,Map并…