ros_note02

note02

節點

ROS2中每一個節點只負責一個單獨的模塊化功能

如:一個節點負責控制車輪轉動,一個節點負責從激光雷達獲取數據,一個節點負責定位

通信方式:

  1. 話題:topic
  2. 服務:services
  3. 動作:Action
  4. 參數:parameters

節點相關的CLI(command-Line Interface)

  1. 列出所有節點:ros2 node list
  2. 查看節點的詳細信息:ros2 node info <node_name>
  3. 列出所有Toic:ros2 topic list
  4. 運行節點:ros2 run <package_name> <executable_name>

工作空間

一個工作空間下有多個功能包,一個功能包可以有多個節點

ros2 run <功能包名字> <可執行文件>

工作空間:ROS2 工作空間是一個包含所有項目文件的目錄結構,用于組織和管理ROS2項目

創建c++功能包:

ros2 pkg create my_cpp_package --build-type ament_cmake --dependencies rclcpp std_msgs
  1. --build-type: 指定構建類型,ament_cmake 用于C++,ament_python 用于Python
  2. --dependencies: 指定功能包的依賴項(如 rclcpprclpystd_msgs 等)

列出功能包可執行文件:

ros2 pkg executableseg:
ros2 pkg executables turtlesim

列出所有的包:

ros2 pkg list

編譯功能包:

cd ~/ros2_ws
colcon build --packages-select my_robot_package

手動編譯:

eg:

my_package/
├── CMakeLists.txt
├── package.xml
└── src/└── my_node.cpp

CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.5)
project(my_package)find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)add_executable(my_node src/my_node.cpp)
ament_target_dependencies(my_node rclcpp std_msgs)install(TARGETSmy_nodeDESTINATION lib/${PROJECT_NAME})ament_package()

package.xml 文件

<package format="3"><name>my_package</name><version>0.0.0</version><description>A simple ROS2 package</description><maintainer email="user@todo.todo">user</maintainer><license>TODO</license><depend>rclcpp</depend><depend>std_msgs</depend>
</package>

my_node.cpp 文件

#include "rclcpp/rclcpp.hpp"int main(int argc, char *argv[]) {rclcpp::init(argc, argv);auto node = std::make_shared<rclcpp::Node>("my_node");RCLCPP_INFO(node->get_logger(), "Hello, ROS2!");rclcpp::spin(node);rclcpp::shutdown();return 0;
}

手動編譯命令

# 創建工作空間
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src# 添加功能包
cp -r /path/to/my_package .# 安裝依賴
sudo apt install ros-<ros2-distro>-rclcpp ros-<ros2-distro>-std-msgs# 配置環境
cd ~/ros2_ws
source /opt/ros/<ros2-distro>/setup.bash# 配置構建
mkdir -p build/my_package
cd build/my_package
cmake ../../src/my_package -DCMAKE_INSTALL_PREFIX=../../install/my_package# 編譯
make# 安裝
make install# 運行節點
source ../../install/my_package/setup.bash
ros2 run my_package my_node

colcon 是 ROS2 中用于構建和管理工作空間的工具,它自動化了許多編譯和安裝的步驟


域的概念來源于 ROS2 底層使用的 DDS(Data Distribution Service) 通信中間件

DDS中,不同邏輯網絡共享物理網絡的主義機制稱為Domain_ID

  1. 同一域上的ROS2節點可以自由地相互發現并發送消息,不同域則不能
  2. ROS2節點默認使用域ID為0

端口、進程和ROS2節點:

  1. DDS參與者
    1. 每個 ROS2 節點在啟動時,會創建一個 DDS 參與者
    2. 每個 DDS 參與者需要占用兩個端口(一個用于單播,一個用于多播)
  2. 端口分配:
    1. 隨著 ROS2 節點數量的增加,占用的端口數量也會增加
    2. 如果端口耗盡,新的節點將無法分配端口,導致通信失敗
  3. 進程與端口
    1. 每個 ROS2 節點通常運行在一個獨立的進程中
    2. 每個進程(即每個節點)需要占用兩個端口

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

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

相關文章

使用治療前MR圖像預測腦膜瘤Ki-67的多模態深度學習模型

大家好&#xff0c;我是帶我去滑雪&#xff01; 腦膜瘤是一種常見的腦部腫瘤&#xff0c;Ki-67作為腫瘤細胞增殖的標志物&#xff0c;對于評估腫瘤的生物學行為、預后以及治療方案的制定具有至關重要的作用。然而&#xff0c;傳統的Ki-67檢測依賴于組織學切片和免疫組化染色等方…

【大模型系列篇】深度研究智能體技術演進:從DeepResearch到DeepResearcher,如何重構AI研究范式

DeepResearch 的概念與功能最早由 Google 在 Gemini 系列產品中推出&#xff0c;用于自動化生成結構化研究報告&#xff0c;近期底層依賴模型Gemini升級到了2.5 Pro。而我們常規認知的DeepResearch是由OpenAI推出的一款由優化版的 o3 模型驅動專注于深度研究和分析的AI智能體產…

PostgreSQL 如何查看端口號

PostgreSQL 如何查看端口號 PostgreSQL大多數情況下&#xff0c;默認端口是5432&#xff0c;但某些環境中可能配置為其它端口。 一 基本查詢方法 1.1 psql 命令行工具查詢 -- 方法1&#xff1a;查看當前連接信息&#xff08;包含端口&#xff09; \conninfo-- 方法2&#x…

淘寶大數據接口解析:商品類目 / 價格 / 銷量多維數據采集與存儲方案

一、引言 在電商領域&#xff0c;淘寶擁有海量的商品數據&#xff0c;這些數據對于商家的市場分析、營銷策略制定以及消費者的購物決策都具有重要價值。本文將詳細介紹如何通過淘寶大數據接口采集商品的類目、價格、銷量等多維數據&#xff0c;并提供數據存儲的方案&#xff0…

分庫分表,分庫策略是什么?

在Java面試中,分庫分表是解決數據庫性能瓶頸和擴展性問題的常見方案。分庫策略主要關注如何將數據水平拆分到多個數據庫實例中,以下是詳細的分庫策略解析: 一、分庫策略的核心目標 負載均衡:分散數據存儲和查詢壓力,避免單庫成為性能瓶頸。擴展性:支持業務增長,通過增加…

STM32 HAL庫SPI讀寫W25Q128(軟件模擬+硬件spi)

1. 引言 在嵌入式系統開發中&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff09;總線是一種常用的串行通信協議&#xff0c;用于在微控制器和外部設備之間進行高速數據傳輸。W25Q128 是一款常見的 SPI Flash 芯片&#xff0c;具有 128Mbit&#xff08;16MB&a…

系統的安全及應用

倉庫做了哪些優化 倉庫源換成國內源不使用root用戶登錄將不必要的開機啟動項關閉內核的調優 系統做了哪些安全加固 禁止使用root禁止使用弱命令將常見的 遠程連接端口換掉 系統安全及應用 Cpu負載高 java程序 運行異常中病毒&#xff1f; ps aux - - sort %cpu %mem Cpu …

Java Lambda 表達式詳解:發展史、語法、使用場景及代碼示例

Java Lambda 表達式詳解&#xff1a;發展史、語法、使用場景及代碼示例 1. Lambda 表達式的發展史 背景與動機 JDK 7 前&#xff1a;Java的匿名內部類雖強大&#xff0c;但代碼冗余&#xff08;如事件監聽器、集合遍歷&#xff09;。JDK 8&#xff08;2014&#xff09;&#…

Linux 命令全解析:從零開始掌握 Linux 命令行

Linux 作為一款強大的開源操作系統&#xff0c;廣泛應用于服務器、嵌入式系統以及超級計算機領域。掌握 Linux 命令行技能&#xff0c;是每一位開發者和系統管理員的必備能力。本文將從基礎開始&#xff0c;為你詳細介紹常用的 Linux 命令&#xff0c;以及它們的使用場景和示例…

【已更新完畢】2025泰迪杯數據挖掘競賽C題數學建模思路代碼文章教學:競賽智能客服機器人構建

完整內容請看文末最后的推廣群 基于大模型的競賽智能客服機器人構建 摘要 隨著國內學科和技能競賽的增多&#xff0c;參賽者對競賽相關信息的需求不斷上升&#xff0c;但傳統人工客服存在效率低、成本高、服務不穩定和用戶體驗差的問題。因此&#xff0c;設計一款智能客服機器…

關于汽車輔助駕駛不同等級、技術對比、傳感器差異及未來發展方向的詳細分析

以下是關于汽車輔助駕駛不同等級、技術對比、傳感器差異及未來發展方向的詳細分析&#xff1a; 一、汽車輔助駕駛等級詳解 根據SAE&#xff08;國際自動機工程師學會&#xff09;的標準&#xff0c;自動駕駛分為 L0到L5 六個等級&#xff1a; 1. L0&#xff08;無自動化&…

神經網絡如何表示數據

神經網絡是如何工作的&#xff1f;這是一個讓新手和專家都感到困惑的問題。麻省理工學院計算機科學和人工智能實驗室&#xff08;CSAIL&#xff09;的一個團隊表示&#xff0c;理解這些表示&#xff0c;以及它們如何為神經網絡從數據中學習的方式提供信息&#xff0c;對于提高深…

網絡復習二(TCP【3】)

一、為什么TIME_WAIT等待的時間是2MSL&#xff1f; MSL&#xff1a;報文最大生存時間 我們要知道TCP報文是基于IP協議生存的&#xff0c;而在IP頭中有一個TTL&#xff08;經過路由跳數&#xff09;&#xff0c;當TTL為0使&#xff0c;數據報被丟失&#xff0c;同時發送ICMP報…

Go:基本數據

文章目錄 整數浮點數復數布爾值字符串字符串字面量UnicodeUTF - 8字符串和字節 slice字符串和數字的相互轉換 常量常量生成器 iota無類型常量 整數 分類 Go 的整數類型按大小分有 8 位、16 位、32 位、64 位 &#xff0c;同時有符號整數包括int8、int16、int32、int64 &#…

0x03.Redis 通常應用于哪些場景?

回答重點 1)緩存(Cache): Redis 最常用的場景是作為緩存層,以減少數據庫的負載,提高數據讀取速度。例如,常用的用戶會話數據和頁面渲染結果可以存儲在 Redis 中。2)分布式鎖(Distributed Lock): Redis 可以用作分布式鎖的實現,確保在分布式系統中資源的安全訪問,避免…

大數據學習筆記

文章目錄 1. 大數據概述1.1 大數據的特性1.2 大數據技術生態1.2.1 Hadoop 的概念特性1.2.2 Hadoop生態圈 — 核心組件與技術棧1.2.3 Hadoop生態演進趨勢 2. 數據處理流程與技術棧2.1 數據采集2.1.1 日志采集工具2.1.2 實時數據流2.1.3 數據遷移 2.2 數據預處理2.2.1 批處理2.2.…

Spring Boot 自定義商標(Logo)的完整示例及配置說明( banner.txt 文件和配置文件屬性信息)

Spring Boot 自定義商標&#xff08;Logo&#xff09;的完整示例及配置說明 1. Spring Boot 商標&#xff08;Banner&#xff09;功能概述 Spring Boot 在啟動時會顯示一個 ASCII 藝術的商標 LOGO&#xff08;默認為 Spring 的標志&#xff09;。開發者可通過以下方式自定義&a…

1. k8s的簡介

Kubernetes&#xff08;k8s&#xff09;簡介 1. 產生背景 隨著云計算和微服務架構的興起&#xff0c;傳統的單體應用逐漸被拆分為多個小型、松耦合的服務&#xff08;微服務&#xff09;。這種架構雖然提升了開發靈活性和可維護性&#xff0c;但也帶來了新的挑戰&#xff1a;…

OpenCV 圖形API(35)圖像濾波-----中值模糊函數medianBlur()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 使用中值濾波器模糊圖像。 該函數使用帶有 ksizeksize 開口的中值濾波器來平滑圖像。多通道圖像的每個通道都是獨立處理的。輸出圖像必須與輸入…

03 UV

04 Display工具欄_嗶哩嗶哩_bilibili 講的很棒 ctrlMMB 移動點 s 打針 ss 批量打針