Jetson Orin Nano 快速安装 ROS2 Foxy详解

news2024/11/29 2:45:49

        大家好,我是虎哥,入手一块Jeston Orin nano 8G模块,这个模块因为是英伟达未来5年左右主推的模块,所以我逐步会将之前所有的应用都在这个模块环境上做适配,本章内容,我将主要围绕安装ROS2 Foxy版本为主展开。

        在Ubuntu-20.4下。当前流行的版本:1)rolling 2)humble 3)Galactic 4)Foxy,其中Foxy是比较好的,表现在包比较全;通过跑多个项目比较,Foxy是支持最稳定的,最差的是rolling版。本文主要介绍在Jeston Orin Nnao 8G版本模块,JetPack5.1.1环境,对应也就是Ubuntu-20.4安装Foxy的方法和步骤。

目录

一、ROS2简单介绍

二、Jeston Orin Nnao -JetPack5.1.1常用工具安装

2.1 系统版本:

2.2Jtop 可视化管理工具安装

2.3 nomachine Jeston端安装

1、将nomachine deb包拷贝的Jeston系统中

2、使用命令行安装

3、重启系统,链接测试

2.4 gparted分区工具安装

三、Jeston Orin Nnao -JetPack5.1.1安装ROS2 FOXY版本

3.1 配置系统软件源

3.2 添加密钥

3.3 设置软件源

3.4 安装ROS2

3.5 安装自动补全工具

3.6 设置环境变量

3.7 官方demo测试安装

3.8 小海龟测试

四、总结:


一、ROS2简单介绍

        ROS2的前身是ROS,ROS即机器人操作系统(Robot Operating System)。但是ROS本身并不是一个操作系统,而是一个软件库和工具集。Ros的出现解决了机器人各个组件的通信问题,后来越来越多的机器人算法也集成到了ROS中,ROS2继承了ROS,相比ROS更强大更优秀。

        ROS的设计目的:简化在各种机器人平台上创建复杂而强大的机器人行为的任务即不重复造造论子,即实现某一个功能时,可以直接使用现成或者进行改造。 在ROS之前,让机器人的各个部分协调通信起来是一件非常复杂的事情。例如一个简单的机器人包含感知(深度相机及传感器等)、决策(算法部分)、控制(硬件驱动)三大部分。ROS使上面几个部分合理的连接在了一起。 下图是ROS2的部分版本历史。

        ROS和ROS2对比 ROS为简化机器人开发设计了一整套通信机制(话题、服务、参数、动作)。通过这套机制可以将机器人的各个组件连接起来。这套机制设计了一个叫做Ros Master的节点,其他所有组件的通信必须经过该主节点,一旦主节点挂掉,将会导致整个机器人系统通信崩溃!所以不能利用Ros的不稳定性不能用来做一些类似于自动驾驶等一些高风险的机器人。此外还有以下缺点: 1、基于TCP实现的通信、实时性差,系统开销大 2、对python3支持不友好 3、消息机制不兼容 4、无加密机制,安全性不高

        [最直观感受]ROS2首先去掉了ROS中存在的主节点。去掉主节点之后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,可以实现一对一、一对多、多对多进行互相通信。采用DDS进行通信之后,可靠性和稳定性都有了增强。

二、Jeston Orin Nnao -JetPack5.1.1常用工具安装

2.1 系统版本:

在你自己的开发套件输入命令后可以看到

nvidia@nvidia-desktop:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.6 LTS
Release:    20.04
Codename:   focal

2.2Jtop 可视化管理工具安装

使用Xshell走SSH协议链接Jeston系统。

  需要系统可以上网:

执行安装命令:用户名:nvidia 密码:nvidia

#python3安装,已经有了就不要重复安装
sudo apt-get install python3-pip
sudo -H pip3 install -U jetson-stats

 安装完毕需要重启系统。

2.3 nomachine Jeston端安装

        你需要到官方网站:NoMachine - Free Remote Desktop for Everybody中找到ARM对应的安装包,我们选择nomachine_8.2.3_3_arm64.deb版本下载,你注意选择对应的版本。

1、将nomachine deb包拷贝的Jeston系统中

      使用Xshell走SSH协议链接Jeston系统。此处继续这么操作,登录后,采用Xshell自带的Xftp工具传文件。

 单击后弹出窗口:

将主机侧文件拖动到Jeston侧,就可以完成传输。

 完成传输后,既可以关闭Xftp窗口。

2、使用命令行安装

回到Xshell 终端:

进入文件所在目录,执行安装命令:

#如果需要输入密码,一般为nvidia
sudo dpkg -i nomachine_8.5.3_1_arm64.deb

 安装完毕。

3、重启系统,链接测试

sudo reboot

将模块和你的电脑接到一个路由器下,在一个局域网,就可以链接了。

IP:192.168.0.114
用户名:nvidia
密码:nvidia

 这样我们的WIN下就可以登录到TX1模块的远程桌面了,就像有一个显示器一样的使用模块

2.4 gparted分区工具安装

sudo apt-get install gparted -y

安装完毕后直接可以启动,需要显示器支持

sudo  gparted

三、Jeston Orin Nnao -JetPack5.1.1安装ROS2 FOXY版本

3.1 配置系统软件源

        打开“软件和更新”,进入到“Ubuntu软件“页面,允许universe、restricted、multiverse三项,即勾选这三项,如下图所示。安装完ubuntu系统后这三项是默认允许的,但还是检查一下比较好。

 

3.2 添加密钥

打开终端,输入以下指令添加密钥:

#安装支持
sudo apt install curl gnupg2 -y 
curl -s https://gitee.com/ohhuo/rosdistro/raw/master/ros.asc | sudo apt-key add -

3.3 设置软件源

输入以下指令将存储库添加到源列表中:

sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'

3.4 安装ROS2

使用如下命令确保软件索引是最新的:

sudo apt update

使用如下命令安装foxy桌面版:

sudo apt install ros-foxy-desktop 

 安装过程中很可能因为网络原因而安装失败,要多尝试几次,或者连接手机热点继续安装。安装过程如下所示:

 安装完毕

3.5 安装自动补全工具

输入以下指令进行安装,其中-y表示当执行该命令后,出现需要选择确认或取消的时候(即选择y/n的时候),自动选择y

sudo apt install python3-argcomplete -y

3.6 设置环境变量

在使用之前还要对环境变量进行配置,在终端输入如下指令:

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

到此,安装过程已经完成啦,可以在终端输入以下指令查看环境变量,包括ROS_VERSION和ROS_DISTRO等

printenv | grep -i ROS

3.7 官方demo测试安装

新打开两个终端,分别输入以下两行指令,第一行指令用于发布话题消息,第二行订阅消息

ros2 run demo_nodes_cpp talker

 新打开一个终端输入:

ros2 run demo_nodes_cpp listener

 上面两行指令的程序是C++写的,也可以测试Python写的:

ros2 run demo_nodes_py talker
ros2 run demo_nodes_py listener

 当然,你要是想多尝试一下,可以一个用C++的节点开,一个用python的节点开。

3.8 小海龟测试

用nomachine 登录,或者接好你的显示器,需要显示支持。

打开一个终端,输入命令:可以看到小乌龟的仿真界面已经打开了。

ros2 run turtlesim turtlesim_node

 再打开一个新终端输入指令:可以通过键盘的方向键控制小乌龟在界面中移动,如下图所示:

ros2 run turtlesim turtle_teleop_key

         从以上两个测试中可以发现,一开始没有运行roscore指令,即ROS2取消了master主节点。去中心化后,各个节点之间可以通过DDS的节点相互发现。

四、总结:

        ROS2 Foxy版本在Jeston Orin Nnao -JetPack5.1.1环境下安装很顺利,按照以上步骤,我没有任何反复,一气呵成就完成了,也希望你可以按照这个步骤一步到位完成。让我们愉快的开始ROS2的旅程。

以上就是我今天要分享的内容。纠错,疑问,交流: 911946883@qq.com

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

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

相关文章

探索Java面向对象编程的奇妙世界(四)

⭐ 变量的分类和作用域⭐ 包机制(package、import)⭐ 面向对象三大特征——继承⭐ 继承的作用⭐ 继承的实现⭐ instanceof 运算符⭐ 继承使用要点⭐ 方法重写 override⭐ final 关键字⭐ 继承和组合 ⭐ 变量的分类和作用域 变量有三种类型:局部变量、成员变量(也称为…

Diffusion Model 深入剖析

Diffusion Model 深入剖析 最近AI生成艺术领域非常火热,从 Midjourney 到 Stable Diffusion,不管你是绘画高手还是艺术小白,只要输入想要绘制内容的描述或者基础图像,就可以生成富有艺术感的画作! 这些风格各异、以假…

CodeForces..构建美丽数组.[简单].[情况判断].[特殊条件下的最小值奇偶问题]

题目描述&#xff1a; 题目解读&#xff1a; 给定数组a[n]&#xff0c;ai>0&#xff0c;问能否得到一个数组b[n]&#xff0c;数组b中的元素都大于0且全奇or全偶。 数组b中的元素biai or ai-aj&#xff08;1<j<n&#xff09;。 解题思路&#xff1a; 数组b中的元素都…

IDEA代码替换

IDEA代码替换 快捷键 当前文件内容 C t r l R CtrlR CtrlR 全局替换 C t r l S h i f t R CtrlShiftR CtrlShiftR 使用 第一行输入栏&#xff1a;输入被替换内容 第二行输入栏&#xff1a;输入替换内容 详细使用 第一行输入栏后第一个图标&#xff1a;换行 第一行输…

数论专题(3)逆元

目录 初步认识 逆元 定义 应用 费马小定理 好久没有更新我们的数论专题板块了&#xff0c;今天&#xff0c;我们就来探究一下新知——逆元。 初步认识 在数据非常大的情景下&#xff0c;我们通常会对数据先进行取模运算&#xff0c;来计算在一定的范围内进行处理。而运算…

SpringBoot启动扩展应用:干预优化+加快启动时间

目录 一、SpringBoot启动配置原理简述 二、SpringBoot启动过程干预 &#xff08;一&#xff09;ApplicationContextInitializer扩展 修改Spring Boot默认的environment属性 添加自定义的PropertySource 注册自定义bean &#xff08;二&#xff09;SpringApplicationRunL…

【计算思维题】少儿编程 蓝桥杯青少组计算思维真题及详细解析第6套

少儿编程 蓝桥杯青少组计算思维真题及详细解析第6套 1、兰兰有一些数字卡片,从 1 到 100 的数字都有,她拿出几张数字卡片按照一定顺序摆放。想一想,第 5 张卡片应该是 A、11 B、12 C、13 D、14 答案:C 考点分析:主要考查小朋友们的观察能力和数学推理能力,从给定的图…

[Nacos] Nacos Server处理心跳请求 (八)

文章目录 1.InstanceController#beat()1.1 serviceManager.registerInstance()1.2 serviceManager.getService()1.3 处理本次心跳 1.InstanceController#beat() CanDistroPutMapping("/beat")Secured(parser NamingResourceParser.class, action ActionTypes.WRITE…

面了个字节出来的00后,我见识到了什么叫“自动化测试+性能测试”

前两天看到字节一个老哥写的帖子&#xff0c;提到高阶测试工程师必须掌握的技能&#xff0c;其中他明确提出了“精通性能测试”。 为啥性能测试对测试工程师如此重要&#xff1f; 性能测试是指在特定的负载情况下&#xff0c;测试目标系统的响应时间、吞吐量、并发用户数、资源…

Eclipse 教程Ⅳ

Eclipse 工作空间(Workspace) eclipse 工作空间包含以下资源&#xff1a; 项目文件文件夹 项目启动时一般可以设置工作空间&#xff0c;你可以将其设置为默认工作空间&#xff0c;下次启动后无需再配置&#xff1a; 工作空间(Workspace)有明显的层次结构。 项目在最顶级&…

HTML 教程1

HTML文档的后缀名 .html.htm 以上两种后缀名没有区别&#xff0c;都可以使用。 HTML 实例 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>菜鸟教程(runoob.com)</title> </head> <body><h1&g…

QTableWidget加载大文件数据

由于最近在项目中需要加载几GB的文件&#xff0c;并且需要在QTableWidget中进行显示&#xff1b;粗略估计可能得有几千万行&#xff0c;如果使用常规的方法&#xff0c;直接在QTableWidget中进行全部显示&#xff0c;会比较卡。所以查找相关资料&#xff0c;最终想到了一个比较…

算法基础学习笔记——⑧堆\哈希表

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨堆 &#x1f353;堆模板&#xff1a; ✨哈希表 &#x1f353;一般哈希模板&#xff1a; &#x1f353;字符串哈希模板&#xff1a; 前言&#xff1a;算法学习笔记记录日常分享&#xff0c;需要的看哈O(…

【是C++,不是C艹】 类与对象 | 认识面向对象 | 访问限定符 | 封装 | this指针

&#x1f49e;&#x1f49e;欢迎来到 Claffic 的博客&#x1f49e;&#x1f49e; &#x1f449; 专栏&#xff1a;《是C&#xff0c;不是C艹》&#x1f448; 前言&#xff1a; 在C入门之后&#xff0c;就要进入C的第一个核心&#xff1a;类与对象&#xff0c;这期带大家认识认识…

Multichain跨链无法到账,DApp真去中心化or伪去中心化?

团队出问题&#xff0c;DApp就用不了&#xff0c;multichain被不少人质疑伪去中心化&#xff0c;甚至更有人开始质疑web3&#xff0c;那么这到底是怎么回事呢&#xff1f; 跨链桥问题让DApp的去中心化引发质疑 事情是这样的&#xff0c;5月24下午0xscope发推称与multichain有关…

leetcode 11.盛最多水的容器

题目描述 跳转到leetocde题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff…

RabbitMQ手动ACK与死信队列

为了保证消息从队列可靠的达到消费者&#xff0c;RabbitMQ 提供了消息确认机制&#xff08;Message Acknowledgement&#xff09;。 默认情况下RabbitMQ在消息发出后就立即将这条消息删除,而不管消费端是否接收到,是否处理完,导致消费端消息丢失时RabbitMQ自己又没有这条消息了…

spring-Bean管理-springboot原理-Maven高级

spring-Bean管理-springboot原理-Maven高级 配置优先级Bean管理1.获取bean2.bean作用域3.第三方bean SpringBoot原理Maven高级1.分模块设计与开发2.继承与聚合3.私服1.介绍2.资源上传与下载 配置优先级 优先级(低→高) application.yaml&#xff08;忽略) application.yml appl…

利用Servlet编写第一个“hello world“(续)

利用Servlet编写第一个“hello world“ &#x1f50e;通过插件 Smart Tomcat 简化 打包代码 与 部署 操作下载Smart Tomcat配置Smart Tomcat &#x1f50e;Servlet 中的常见错误404(Not Found)&#x1f36d;请求路径出错&#x1f36d;war 包未被正确加载 405(Method Not Allowe…

【Android-JetpackCompose】13、实战在线课程 App

文章目录 一、BottomNavigation 底部导航1.1 底部导航栏的布局、点击1.2 设置 bottomBar 的颜色1.3 设置顶部 actionBar 的颜色 二、主页 StudyScreen2.1 顶部状态栏2.2 一、BottomNavigation 底部导航 1.1 底部导航栏的布局、点击 首先&#xff0c;构造 NavigationItem 的 d…