【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
英文地址,請注明出處:http://en.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…