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.mzph.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 批量打针