ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

几乎完美安装! NVIDIA Jetson Nano B01 Ubuntu 18.04.3 LTS 的 ROS 安装和小白的踩坑记录【会继续完善】

2022-02-23 02:04:09  阅读:299  来源: 互联网

标签:LTS 烧录 18.04 sudo apt Ubuntu 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

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

ps -e | grep ssh

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

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

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

sudo apt install openssh-client

这步之后就OK了!

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

SSH的客户端连接(Mac)

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

ssh User_Name@target-computer-IP

我这里是:

ssh william@192.168.0.109

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

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

ifconfig

我这里偷个懒,直接在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

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

sudo vim /etc/apt/sources.list

复制进去如下内容,记得保存啊,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

接着,在terminal里面更新一下

sudo apt-get update

就好了

如果在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/

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

sudo killall apt
sudo killall apt-get
sudo killall synaptic

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

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-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

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

sudo apt-get update

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

sudo apt install ros-melodic-desktop-full

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

ROS 初始化

sudo rosdep init
rosdep update

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

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

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

nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器

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

sudo  apt-get update

第四步,执行如下命令

rosdep update

就OK了

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

sudo rosdep init
rosdep update

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

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

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

最后,再执行如下命令:

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

安装ROS时我踩过的坑

1.换源问题

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

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

2.ROS的初始化

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

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

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

4.网络环境

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

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


测试ROS

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

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

roscore 

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

rosrun turtlesim turtlesim_node 

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

rosrun turtlesim turtle_teleop_key 

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

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

rosrun rqt_graph rqt_graph 

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

感慨

那么,至此,你的ROS就安装完了,要再安装其他的模组的话网上查查咯。Ubuntu对于我这种从初中就开始使用Mac的人来讲,还算是非常有好的,毕竟操作方式都差不多,能够很快适应。这个很快适应也跟我从初中开始就在各种折腾系统有关系。对于常年使用IBM兼容机的朋友来说,可能上手的困难不少,毕竟操作方式、图形界面以及各种软件的安装方式全和Windows不同,所以建议大家买一本书看看,了解了解这个操作系统。当有了初步的了解与实践之后,你会发现macOS还有Linux及其发行版使用起来要比Windows简单的多。

所以,写到这,我希望我的个人的安装以及踩坑经历能够帮助到你。

如果我有步骤写错了或者是我解释的地方说错了,请直接在评论区尖锐的指出,毕竟我的这个安装经历能用下图解释:
在这里插入图片描述
哈哈哈,码了一天的字,找资料,回忆安装过程,还是挺费精力的,希望能帮到你喔。
搞程序的人真的是可爱啊(笑)

标签:LTS,烧录,18.04,sudo,apt,Ubuntu,ROS,安装
来源: https://www.cnblogs.com/kd-mercury/p/15925655.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有