【ROS2 自动驾驶学习】02-安装ROS2及其配套工具

目录

一、设置语言环境

二、添加存储库

三、添加软件源

四、安装ROS2

五、配置环境

六、测试ROS2

七、安装一些工具

7.1 terminator

7.2 colcon工具 

7.3 tf工具 

7.4 joint-state-publisher工具

7.5 urdf

八、安装三方库

8.1 Eigen

8.2 yaml-cpp

8.3 matplotlib

8.4 osqp和osqp-eigen


一、设置语言环境

检查本地语言环境是否支持UTF-8编码,在控制台输入如下命令检查

locale

如下图,每1条都含有“UTF-8”就表示支持UTF-8编码

如果没有上图的输出,就需要输入如下指令使得系统支持UTF-8编码

二、添加存储库

打开“软件和更新”,勾选“社区维护的自由和开源软件”

三、添加软件源

1. 在控制台中输入如下指令,更新软件源

sudo apt update

2. 输入如下指令来利用apt工具从 Ubuntu 的官方软件源中下载并安装curl软件包

sudo apt install curl -y

3. 输入如下指令来安全地从 ROS 官方 GitHub 仓库获取 GPG 密钥,并将其保存到系统的密钥环目录中。

sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

4. 输入如下指令,将ROS2的阿里云镜像源配置添加到系统的软件源列表中,同时指定架构、密钥验证和当前 Ubuntu 版本代号,确保后续apt命令能从正确的源下载适合当前系统的 ROS 2 软件包

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
https://mirrors.aliyun.com/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | \
sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

输入上面的命令后可以在“/etc/apt/sources.list.d/”中找到“ros2.list”

打开“ros2.list”可以看到ROS2下载的源已经设置了

四、安装ROS2

输入如下3个指令,从已配置的软件源(之前添加的阿里云 ROS 2 镜像源)中下载并安装ROS2 Humble版本的桌面完整版

sudo apt update
sudo apt upgrade
sudo apt install ros-humble-desktop

五、配置环境

输入如下指令,可以帮助让用户在打开终端后,把ROS2的环境会自动配置好,用户可以直接使用ros2命令以及相关工具

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

输入如下指令,Bash 会重新读取并执行.bashrc文件中的所有命令 ,可以使修改立即生效

source ~/.bashrc

执行后可以在主页按下Ctrl+H显示主页隐藏的文件夹,然后打开“.bashrc”

可以看到已经进行了配置。这样每次打开新的终端窗口时,系统自动执行“.bashrc”中的每一条命令,也就把"source /opt/ros/humble/setup.bash"一起执行了。

六、测试ROS2

输入如下指令,运行turtlesim软件包中的turtlesim_node节点,从而启动海龟仿真器。这个仿真器会创建一个图形界面,界面中有一只海龟,用户可以通过发布指令控制海龟在画布上移动。

ros2 run turtlesim turtlesim_node 

如下图,表示我们已经成功安装了ROS2 

此时我们再重新打开一个终端窗口,输入如下指令,就可以通过键盘的前后左右键来控制小乌龟移动了。

ros2 run turtlesim turtle_teleop_key 

七、安装一些工具

7.1 terminator

输入如下指令来安装terminator

sudo apt install terminator

安装terminator后,再次打开终端后,我们就可以对终端进行水平、垂直分割,方便看到多个窗口的内容。

水平和垂直分割后如下所示。

7.2 colcon工具 

输入如下指令来安装colcon工具。colcon 是 ROS 2 中官方推荐的构建工具,用于编译和管理 ROS 2 工作空间中的软件包。它集成了 CMake 和 Python 的构建系统,提供了更高效、更灵活的工作流。

sudo apt install python3 && sudo apt install python3-colcon-common-extensions

7.3 tf工具 

输入如下指令。

        第1条指令用于安装tf工具。TF2 是 ROS 2 中用于管理和处理坐标系变换的核心框架,它能够跟踪机器人各部分(如传感器、关节、末端执行器等)之间的空间关系,并在不同坐标系之间进行实时转换。TF2 在机器人导航、定位、运动规划等任务中起着至关重要的作用。

        第2条指令用于安装pip。通过python3-pip,用户可以方便地管理 Python 包,为后续开发或使用 Python 应用程序奠定基础。

        第3条指令用于安装transform3d。这是一个专注于三维空间变换的 Python 库,提供了各种坐标变换、旋转矩阵、四元数等计算功能。

sudo apt install ros-humble-tf2-tools ros-humble-tf-transformations
sudo apt install python3-pip
pip3 install transforms3d

7.4 joint-state-publisher工具

输入如下指令来安装“joint-state-publisher”和“joint-state-publisher-gui”软件包。

joint-state-publisher:

        自动生成机器人各关节的控制值(如角度)。

        通过/joint_states话题发布这些值,供其他节点(如 RViz、控制器)使用。

        适用于没有真实硬件的仿真环境,或需要手动控制关节的场景。

joint-state-publisher-gui是joint-state-publisher的图形化扩展,提供:

        滑块界面:通过拖动滑块实时调整关节角度。

        关节分组:可折叠 / 展开不同部位的关节(如手臂、腿部)。

        自动生成:基于机器人模型自动识别可活动关节,并创建对应的控制滑块。

sudo apt install ros-humble-joint-state-publisher
sudo apt install ros-humble-joint-state-publisher-gui

7.5 urdf

输入如下指令来安装urdf。Xacro 是 ROS 中用于简化机器人模型描述的工具,它基于 XML 语法,允许使用变量、宏定义、条件语句等编程元素来创建更简洁、更易维护的机器人模型文件。Xacro 文件通常具有.xacro.urdf.xacro扩展名,最终会被编译成标准的 URDF(Unified Robot Description Format)文件。

sudo apt install ros-humble-xacro

八、安装三方库

8.1 Eigen

访问“https://eigen.tuxfamily.org/”,点击“Eigen 3.4.0 released!

点击链接

这里下载第1个

在Windows系统下载该压缩包后,这里通过共享文件夹的方式将压缩包共享到Ubuntu中。

提取压缩包

在“/home/chaochao/下载/”中打开终端窗口,然后输入如下指令将提取后文件夹移动到系统软件安装的位置“/usr/local/include/”

sudo mv eigen-3.4.0/ /usr/local/include/

8.2 yaml-cpp

可以通过访问https://github.com/jbeder/yaml-cpp下载源码。或通过输入如下指令安装:

sudo apt update
sudo apt install libyaml-cpp-dev

8.3 matplotlib

可以通过访问官网“Matplotlib — Visualization with Python”下载。或通过如下指令下载:

# 方式1:(apt安装)
sudo apt update
sudo apt install python3-matplotlib# 方式2:(pip安装)
pip3 install matplotlib

8.4 osqp和osqp-eigen

通过如下指令先确认gcc和cmake已经安装了。

gcc --version
cmake --version

在“主目录”中打开终端窗口,输入如下指令来安装git

sudo apt install git

再通过git克隆V1.0.0的osqp 

git clone -b v1.0.0 https://github.com/osqp/osqp.git

通过git克隆V0.10.0的osqp-eigen

git clone -b v0.10.0 https://github.com/robotology/osqp-eigen.git

此时可以看到主目录中已经有“osqp”和“osqp-eigen”

输入如下指令 进入“osqp”目录并创建“build”文件夹再进入“build”

cd osqp && mkdir build && cd build

输入如下指令。通过该指令开发者可以将项目的源代码转换为可编译的构建文件,为后续的编译和安装步骤做好准备。

cmake ..

输入如下指令,该指令用于加速编译过程的命令,它通过(nproc)获取系统可用CPU核心数,并利用make -j 选项开启并行编译,让编译器同时执行多个任务,显著缩短项目的构建时间。

make -j$(nproc)

编译后可以看到build目录中包含很多文件

输入如下指令,该指令会依据 Makefile 中的规则将程序文件、库文件和配置文件复制到指定的系统目录( /usr/local/

sudo make install

执行后可以看到在“/usr/local/include/osqp/”中包含如下头文件

在 “/usr/local/lib/”中包含库“libosqp.so”

输入如下指令来更新库的链接关系

sudo ldconfig

再输入“source ~/.bashrc”

此时“osqp”就安装完成了。下面同样的步骤安装“osqp-eigen”。

退回主目录

依次输入如下指令

cd osqp-eigen && mkdir build && cd build
cmake .. make -j$(nproc)
sudo make install
sudo ldconfig
source ~/.bashrc

 

安装后可以检查一下

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

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

相关文章

系统学习Python——并发模型和异步编程:基础知识

分类目录:《系统学习Python》总目录 并行是并发的一种特殊情况。**所有并行系统都是并发的,但不是所有并发系统都是并行的。**在21世纪初,我们可以使用单核设备在GNU Linux上同时处理100个进程。一台拥有4个CPU核的现代笔记本计算机&#xff…

睿尔曼系列机器人——以创新驱动未来,重塑智能协作新生态(下)

在智能制造与人工智能深度融合的当下,机器人技术正经历从 “功能替代” 到 “价值共创” 的深刻跃迁。睿尔曼,作为全球超轻量仿人机械臂领域的先行者,始终秉持 “让机器人触手可及” 的使命,凭借底层技术的突破性进展,…

表征工程(Representation Engineering, RepE)

表征工程(Representation Engineering, RepE) 近年来,表征工程(Representation Engineering, RepE)在提升AI系统透明度和可控性方面取得了显著进展。 一、大模型可解释性与可控性的突破 核心论文:《Representation Engineering: A Top-Down Approach to AI Transparen…

国产ARM+FPGA工业开发平台——GM-3568JHF

一、引言 随着物联网和国产替代需求的快速发展,嵌入式系统面临计算性能与硬件灵活性的双重挑战。GM-3568JHF开发板基于国产“ARMFPGA”异构架构,结合瑞芯微RK3568J处理器与紫光同创Logos-2 FPGA芯片,支持国产自主操作系统,满足通…

RISCV Linux 虚拟内存精讲系列一 Sv39

笔者认为,Linux 操作系统(Operating System)最核心的机制是虚拟内存(Virtual Memory)。因为,操作系统主要作用是将硬件环境抽象起来,给在其中运行的应用(Applications)提…

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

这行代码的作用是将 Flutter 的 Gradle 构建脚本集成到 Android 项目中,具体细节如下:作用解析:引入 Flutter 构建逻辑 flutter.gradle 是 Flutter SDK 的核心构建脚本,它负责: 编译 Dart 代码为原生二进制文件&#x…

深入理解JavaScript设计模式之命令模式

深入理解JavaScript设计模式之命令模式 文章目录深入理解JavaScript设计模式之命令模式定义简单命令模式组合命令模式使用命令模式实现文本编辑器目标关键类说明实现的效果交互逻辑流程所有代码:总结定义 命令模式也是设计模式种相对于变焦简单容易理解的一种设计模…

CSS 网页布局:从基础到进阶

CSS 网页布局:从基础到进阶 引言 随着互联网的飞速发展,网页设计已经成为了一个不可或缺的领域。CSS(层叠样式表)作为网页设计中的关键工具,用于控制网页元素的样式和布局。本文将为您全面解析CSS网页布局,…

【人工智能】大语言模型(LLM) NLP

大语言模型(LLM)& NLP1.大语言模型(LLM)1.1 一句话解释1.2 更形象的比喻1.3 为什么叫 “大” 模型1.4 它能做什么1.5 现实中的例子2.对比 NLP2.1 用 “汽车进化” 比喻 NLP → LLM2.2 为什么说 LLM 属于 NLP2.3 LLM 的 “革命…

Unity HDRP + Azure IoT 的 Python 后端实现与集成方案

Unity HDRP Azure IoT 的 Python 后端实现与集成方案 虽然Unity HDRP本身使用C#开发,但我们可以构建Python后端服务支持物联网系统,并与Unity引擎深度集成。以下是完整的实现方案: 系统架构 #mermaid-svg-qCDb0g9Ik287Cg8X {font-family:&qu…

小黑黑日常积累大模型prompt句式2:【以段落的形式输出,不分点列举】【如果没有相关内容则不输出】【可读性强】【输出格式规范】

以段落的形式输出,不分点列举 每个标题下直接接续段落内容,不编号、不分点。......标题下直接接续段落内容,不继续进行分点列举。如果没有相关内容则不输出 若某一部分无法从原文中提取有效信息,则跳过该部分内容,不做…

React Native 基础组件详解<一>

一、Text组件 1)numberOfLines:显示行数 2)ellipsizeMode:超出隐藏的位置 clip->裁掉 head/middle/ tail->点的位置 3)selectable: 是否可以选中 4)selectionColor:选中后的颜色 5&#…

异步编程(Promise/Generator/async)

1、Promise 2、Generator 3、async/await

【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring

《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring 一、跨集群镜像的场景与价值 多区域低延迟访问 将业务数据从主集群实时复制到多个地理区域的集群,缩短消费者跨区读取延迟。 灾备切换 当主集群出现故障时,可快速将消…

「Windows/Mac OS」AIGC图片生成视频 ,webui + stable-diffusion环境部署教程

stable-diffusion webui 环境搭建目录 一、Windows 环境部署 stable-diffusion-webui1、准备条件2、安装Python 3.10.X(**较新版本的 Python 不支持 torch**)3、安装Git 教程4、使用Git 下载 stable-diffusion-webui 存储库,4.1、显示报错 5…

【深度学习】 深度学习训练配置参数详解

深度学习训练配置参数详解 1. 启动初始化参数说明CUDA_VISIBLE_DEVICES指定使用的GPU设备编号("0"表示单卡)seed随机种子(1777777),保证实验可复现性cuda是否启用GPU加速(True)benchm…

期望,积分,均值,求和的关系

1. 回顾期望的定义 对于连续性随机变量 X X X,期望为: E X ∼ f ( x ) [ X ] ∫ Ω x f ( x ) d x E_{X\sim f(x)}[X] \int_{\Omega}xf(x)dx EX∼f(x)​[X]∫Ω​xf(x)dx 其中 f ( x ) f(x) f(x)为概率密度函数, Ω \Omega Ω为概率密度函…

1.如何对多个控件进行高效的绑定 C#例子 WPF例子

使用ObservableCollection高效为多个控件绑定数据在WPF开发中,数据绑定是一个非常重要的功能,它允许我们将UI控件与数据源进行绑定,从而实现数据的自动更新。当需要为多个控件绑定数据时,使用ObservableCollection可以大大提高开发…

JSONLines和JSON数据格式使用教程

文章目录 一、核心区别二、JSONLines 的优势三、Python 中使用 JSONLines1. 写入 JSONLines 文件2. 读取 JSONLines 文件3. 处理大文件示例四、常见工具支持1. 命令行工具2. 编程语言库五、适用场景选择六、注意事项总结JSONLines(简称 jsonl 或 jl)和传统 JSON 都是用于存储…

链表算法之【反转链表】

目录 LeetCode-206题 LeetCode-206题 给定一个单链表的头节点,请反转链表,并返回反转后的链表 class Solution {public ListNode reverseList(ListNode head) {// checkif (head null || head.next null)return head;// 双指针ListNode p1 head;Li…