NVIDIA 下 基于Ubuntun20.04下 使用腳本安裝 ros2-foxy 和 使用docker安裝 ros2-foxy

一、前提介紹:

本文主要采用兩種方式在NVIDIA 下基于 Ubuntun20.04安裝 ros2-foxy。
使用環境:
NVIDIA 為 Jetson 系列下 Jetson Xavier NX;
Ubuntun版本:20.04

二、安裝方法:

1、使用腳本編譯方式:

使用執行下列腳本進行安裝:

#!/bin/bash
# 
# Copyright (c) 2021 Jetsonhacks 
# MIT License# Roughly follows the 'Install ROS From Source' procedures from:
#   https://index.ros.org/doc/ros2/Installation/Foxy/Linux-Development-Setup/
# mostly from: 
#   Dockerfile.ros.foxy
#   https://github.com/dusty-nv/jetson-containers
# ROS_PKG=ros_base
ROS_DISTRO=foxy
# Core ROS2 workspace - the "underlay"
ROS_BUILD_ROOT=/opt/ros/${ROS_DISTRO}-src
ROS_INSTALL_ROOT=/opt/ros/${ROS_DISTRO}locale  # check for UTF-8sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8# Add the ROS 2 apt repository
sudo apt-get update
sudo apt-get install -y --no-install-recommends \curl \wget \ gnupg2 \lsb-release
sudo rm -rf /var/lib/apt/lists/*wget --no-check-certificate https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc 
sudo apt-key add ros.asc
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'# install development packages
sudo apt-get update
sudo apt-get install -y --no-install-recommends \build-essential \cmake \git \libbullet-dev \libpython3-dev \python3-colcon-common-extensions \python3-flake8 \python3-pip \python3-pytest-cov \python3-rosdep \python3-setuptools \python3-vcstool \python3-rosinstall-generator \libasio-dev \libtinyxml2-dev \libcunit1-dev
sudo rm -rf /var/lib/apt/lists/*# install some pip packages needed for testing
python3 -m pip install -U \argcomplete \flake8-blind-except \flake8-builtins \flake8-class-newline \flake8-comprehensions \flake8-deprecated \flake8-docstrings \flake8-import-order \flake8-quotes \pytest-repeat \pytest-rerunfailures \pytest# compile yaml-cpp-0.6, which some ROS packages may use (but is not in the 18.04 apt repo)
git clone --branch yaml-cpp-0.6.0 https://github.com/jbeder/yaml-cpp yaml-cpp-0.6 && \cd yaml-cpp-0.6 && \mkdir build && \cd build && \cmake -DBUILD_SHARED_LIBS=ON .. && \make -j$(nproc) && \sudo cp libyaml-cpp.so.0.6.0 /usr/lib/aarch64-linux-gnu/ && \sudo ln -s /usr/lib/aarch64-linux-gnu/libyaml-cpp.so.0.6.0 /usr/lib/aarch64-linux-gnu/libyaml-cpp.so.0.6# https://answers.ros.org/question/325245/minimal-ros2-installation/?answer=325249#post-id-325249
sudo mkdir -p ${ROS_BUILD_ROOT}/src && \cd ${ROS_BUILD_ROOT}
sudo sh -c "rosinstall_generator --deps --rosdistro ${ROS_DISTRO} ${ROS_PKG} launch_xml launch_yaml example_interfaces > ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall && \
cat ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall && \vcs import src < ros2.${ROS_DISTRO}.${ROS_PKG}.rosinstall"# download unreleased packages     
sudo sh -c "git clone --branch ros2 https://github.com/Kukanani/vision_msgs ${ROS_BUILD_ROOT}/src/vision_msgs && \git clone --branch ${ROS_DISTRO} https://github.com/ros2/demos demos && \cp -r demos/demo_nodes_cpp ${ROS_BUILD_ROOT}/src && \cp -r demos/demo_nodes_py ${ROS_BUILD_ROOT}/src && \rm -r -f demos"# install dependencies using rosdep
sudo apt-get updatecd ${ROS_BUILD_ROOT} 
sudo rosdep init  rosdep update && \rosdep install --from-paths src --ignore-src --rosdistro ${ROS_DISTRO} -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers qt_gui" && \sudo rm -rf /var/lib/apt/lists/*# build it!
sudo mkdir -p ${ROS_INSTALL_ROOT}
# sudo required to write build logs
sudo colcon build --merge-install --install-base ${ROS_INSTALL_ROOT}
# We do this twice to make sure everything gets built
# For some reason, this has been an issue
sudo colcon build --merge-install --install-base ${ROS_INSTALL_ROOT}# Using " expands environment variable immediately
echo "source $ROS_INSTALL_ROOT/setup.bash" >> ~/.bashrc 
echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=~/ros2_install" >> ~/.bashrc

腳本安裝完畢后,默認會在在/opt/ros/目錄下,生成foxy和foxy-src文件夾,foxy為編譯后的程序;

使用source 將對應 foxy文件夾里面加載到環境變量中:

source /opt/ros/foxy/setup.bash

然后 運行 ros2 --help 如果不報錯就代表安裝成功。

2、使用docker安裝ros2-foxy

2.1 安裝docker命令

依次執行下列命令:

sudo apt-get update  # 更新軟件列表
sudo apt-get install -y docker.io 	#安裝docker
systemctl start docker #配置開機啟動
systemctl enable docker
sudo docker --version #檢測是否安裝成功

2.2 下載啟動 ros鏡像

執行下列命令:


docker pull aigrobv/ros-foxy:ci@sha256:035df49e8f307946a10b73d307ac2c35ce0c08ea2da5a824dbdaa4952fcf06ed
#sudo docker pull osrf/ros:foxy-desktop //下載ROS鏡像,如果需要arm架構,可以修改對應鏡像 
# https://hub.docker.com/layers/aigrobv/ros-foxy/ci/images/sha256-146d88b0137f260f442d1c0b77b749237b392358d44476074829ff880f705e6e
sudo docker images   #查看鏡像信息
sudo docker run -it osrf/ros:foxy-desktop #啟動鏡像
ros2 -h  #查看ROS2的幫助信息,如不報錯則代表安裝成功

三、總結:

本文在NVIDIA 使用了 Ubuntun20.04環境下 腳本編譯安裝 ros2-foxy 和 使用docker安裝 ros-foxy的兩種方式,相對來說,docker方式簡單一點,推薦docker方式安裝。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66396.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

wx030基于springboot+vue+uniapp的養老院系統小程序

開發語言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服務器&#xff1a;tomcat7數據庫&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;數據庫工具&#xff1a;Navicat11開發軟件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

【人工智能】Python中的自動化機器學習(AutoML):如何使用TPOT優化模型選擇

《Python OpenCV從菜鳥到高手》帶你進入圖像處理與計算機視覺的大門&#xff01; 解鎖Python編程的無限可能&#xff1a;《奇妙的Python》帶你漫游代碼世界 隨著機器學習在各行業的廣泛應用&#xff0c;模型選擇和優化成為了數據科學家面臨的主要挑戰之一。自動化機器學習&am…

計算機網絡常見協議

目錄 OSPF(Open Shortest Path First) NAT(Network Address Translation) ICMP (Internet Control Message Protocol) HTTPS&#xff08;SSL/TLS加密&#xff09; HTTPS協議 1. 對稱加密 2. 非對稱加密 3. 證書驗證 4. 回顧https協議傳輸流程 HTTP TCP UDP 1. TCP&a…

1.7 ChatGPT:引領AI對話革命的致勝之道

ChatGPT:引領AI對話革命的致勝之道 隨著人工智能(AI)技術的迅猛發展,特別是在自然語言處理(NLP)領域,OpenAI 的 ChatGPT 已經成為了舉世矚目的技術突破。從普通的自動化客服到深入的創作與協作,ChatGPT 通過其卓越的語言理解和生成能力,改變了人們與計算機交互的方式…

靜態綜合路由實驗

實驗拓撲 實驗要求 1.除R5的環回地址外&#xff0c;整個其他所有網段基于192.168.1.0/24進行合理的IP地址劃分 2.R1-R4每個路由器存在兩個環回接口&#xff0c;用于模擬pc網段&#xff1b;地址也在192.168.1.0/24這個網絡范圍內 3.R1-R4上不能直接編寫到達5.5.5.0/24的靜態路由…

腳本工具:PYTHON

Python 是一種高級編程語言&#xff0c;以其簡潔清晰的語法和強大的功能被廣泛應用于各種領域&#xff0c;包括自動化腳本編寫、數據分析、機器學習、Web開發等。以下是一些關于使用 Python 編寫腳本工具的基本介紹、常用庫以及一些實用技巧總結。 這里寫目錄標題 基礎知識安裝…

左神算法基礎提升--4

文章目錄 樹形dp問題Morris遍歷 樹形dp問題 求解這個問題需要用到我們在基礎班上學到的從節點的左子樹和右子樹上拿信息的方法。 求最大距離主要分為兩種情況&#xff1a;1.當前節點參與最大距離的求解&#xff1b;2.當前節點不參與最大距離的求解&#xff1b; 1.當前節點參與最…

nuiapp在APP中的.nvue頁面中使用webview展示空白的問題

在打包的APP中發現webview打開顯示空白 最后發現是高度問題 最后給style設置動態高度&#xff1a; <web-view ref"webview" :style"viewStyle" allow :fullscreen"true" :webview-styles"webviewStyles" :src"UrlLink"…

[計算機網絡]一. 計算機網絡概論第一部分

作者申明&#xff1a;作者所有文章借助了各個渠道的圖片視頻以及資料&#xff0c;在此致謝。作者所有文章不用于盈利&#xff0c;只是用于個人學習。 1.0推薦動畫 【網絡】半小時看懂<計算機網絡>_嗶哩嗶哩_bilibili 1.1計算機網絡在信息時代的作用 在當今信息時代&…

神經網絡常見操作(卷積)輸入輸出

卷積 dimd的tensor可以進行torch.nn.Convnd(in_channels,out_channels),其中nd-1,d-2對于torch.nn.Convnd(in_channels,out_channels)&#xff0c;改變的是tensor的倒數n1維的大小 全連接 使用torch.nn.Linear(in_features,out_features,bias)實現YXWT b,其中X 的形狀為 (ba…

【C++】如何從源代碼編譯紅色警戒2地圖編輯器

【C】如何從源代碼編譯紅色警戒2地圖編輯器 操作視頻視頻中的代碼不需要下載三方庫&#xff0c;已經包含三方庫。 一、運行效果&#xff1a;二、源代碼來源及編程語言&#xff1a;三、環境搭建&#xff1a;安裝紅警2安裝VS2022下載代碼&#xff0c;源代碼其實不太多&#xff0c…

SSM課設-酒店管理系統功能設計

【課設者】SSM課設-酒店管理系統 分為用戶端管理員端 技術棧: 后端: Spring Spring MVC MyBatis Mysql JSP 前端: HtmlCssJavaScriptAjax 功能: 用戶端主要功能包括&#xff1a; 登錄注冊 客房預訂 客房評論 首頁 管理員端主要功能包括&#xff1a; 會員信息管理 客房信息…

Redis 數據存儲類型

Redis 支持多種類型的數據存儲&#xff0c;每種類型都可以用于不同的場景和需求。下面是 Redis 支持的主要數據存儲類型&#xff1a; 1. String&#xff08;字符串&#xff09; 類型簡介&#xff1a;字符串是 Redis 中最簡單的數據類型&#xff0c;可以包含任何數據&#xff…

游戲引擎學習第80天

Blackboard&#xff1a;增強碰撞循環&#xff0c;循環遍歷兩種類型的 t 值 計劃對現有的碰撞檢測循環進行修改&#xff0c;以便實現一些新的功能。具體來說&#xff0c;是希望處理在游戲中定義可行走區域和地面的一些實體。盡管這是一個2D游戲&#xff0c;目標是構建一些更豐富…

cuda從零開始手搓PB神經網絡

cuda實現PB神經網絡 基于上一篇的矩陣點乘&#xff0c;實現了矩陣的加減乘除、函數調用等。并且復用之前元編程里面寫的梯度下降、Adam、NAdam優化方法。實現PB神經網絡如下&#xff1a; #ifndef __BP_NETWORK_HPP__ #define __BP_NETWORK_HPP__ #include "matrix.hpp&quo…

Next.js 實戰 (八):使用 Lodash 打包構建產生的“坑”?

前言 最近一直在折騰 Nextjs15 &#xff0c;也在斷斷續續地寫《Next.js15 實戰系列》的文章&#xff0c;后來總感覺文章如果沒有線上效果預覽差點意思&#xff0c;所以就想著先把目前做的項目先部署上線&#xff0c;后續再慢慢添加新功能。 因為之前沒有部署過 Nextjs15 工程…

我的世界-與門、或門、非門等基本門電路實現

一、紅石比較器 (1) 紅石比較器結構 紅石比較器有前端單火把、后端雙火把以及兩個側端 其中后端和側端是輸入信號,前端是輸出信號 (2) 紅石比較器的兩種模式 比較模式 前端火把未點亮時處于比較模式 側端>后端 → 0 當任一側端強度大于后端強度時,輸出…

項目開發實踐——基于SpringBoot+Vue3實現的在線考試系統(七)

文章目錄 一、題庫管理模塊實現1、新增題目功能實現1.1 頁面設計1.2 前端功能實現1.3 后端功能實現1.4 效果展示2、題目列表功能實現2.1 頁面設計2.2 前端功能實現2.3 后端功能實現2.3.1 后端查詢題目列表接口實現2.3.2 后端編輯試題接口實現2.4 效果展示二、代碼下載一、題庫管…

打破編程“鄙視鏈”:探索行業發展新路徑

前言&#xff1a;哈嘍&#xff0c;大家好&#xff0c;今天給大家分享一篇文章&#xff01;并提供具體代碼幫助大家深入理解&#xff0c;徹底掌握&#xff01;創作不易&#xff0c;如果能幫助到大家或者給大家一些靈感和啟發&#xff0c;歡迎收藏關注哦 &#x1f495; 目錄 打破…

【統計的思想】假設檢驗(一)

假設檢驗是統計學里的重要方法&#xff0c;同時也是一種“在理想與現實之間觀察求索”的測試活動。假設檢驗從概率的角度去考察理想與現實之間的關系&#xff0c;籍此來緩解測試可信性問題。 我們先來看一個例子。民航旅客服務系統&#xff0c;簡稱PSS系統&#xff0c;有一種業…