您的位置:首页 > 新闻 > 会展 > 龙岩做网站设计公司_企业网络方案设计思路_湘潭关键词优化公司_产品推广

龙岩做网站设计公司_企业网络方案设计思路_湘潭关键词优化公司_产品推广

2025/4/19 10:30:18 来源:https://blog.csdn.net/qq_44348970/article/details/147288027  浏览:    关键词:龙岩做网站设计公司_企业网络方案设计思路_湘潭关键词优化公司_产品推广
龙岩做网站设计公司_企业网络方案设计思路_湘潭关键词优化公司_产品推广

note03

话题:

话题Topic:ROS2 中用于节点之间通信的命名通道

每个话题有一个唯一的名称,节点可以通过话题名称发布或订阅消息

消息:话题传输的数据称为消息;

订阅发布模式:

  1. 一个节点发布数据到某个话题上,另外一个节点就可以通过订阅话题拿到数据

消息接口:

  1. ROS2帮我们在数据传递时做好了消息的序列化和反序列化(,而且ROS2的消息序列化与反序列化通信是可以做到跨编程语言、跨平台和跨设备之间的

  2. 同一个话题,所有的发布者和接收者必须使用相同消息的接口

  3. 在编译时,ROS2 会根据 .msg 文件生成对应语言的代码(如 C++ 的 .hpp 文件或 Python 的 .py 文件),从而实现跨语言的消息传输

msg、srv、action文件通过ROS2-IDL转换器将其转换为python中的py,和C++中的头文件


机器人控制:

开环控制:

  1. 制系统的输出仅依赖于输入信号,而不依赖于系统的实际输出或状态反馈

闭环控制:

  1. 闭环控制通过反馈机制实时监测系统的输出,并根据输出与目标值的差异调整控制信号,以实现更精确和鲁棒的控制

参数通信:

**A parameter is a configuration value of a node. You can think of parameters as node settings**

参数的组成由名字和值(键值组成),名字可以通过param list

保存参数:ros2 param dump <node_name>


ROS2日志

  1. DEBUG
    1. 用于调试信息,通常只在开发阶段使用
    2. 示例:RCLCPP_DEBUG(node->get_logger(), "This is a debug message.");
  2. INFO
    1. 用于一般信息,记录系统的正常运行状态
    2. 示例:RCLCPP_INFO(node->get_logger(), "This is an info message.");
  3. WARN
    1. 用于警告信息,表示可能存在问题,但不会影响系统运行
    2. 示例:RCLCPP_WARN(node->get_logger(), "This is a warning message.");
  4. ERROR
    1. 用于错误信息,表示系统运行中出现了问题
    2. 示例:RCLCPP_ERROR(node->get_logger(), "This is an error message.");
  5. FATAL
    1. 用于致命错误信息,表示系统无法继续运行
    2. 示例:RCLCPP_FATAL(node->get_logger(), "This is a fatal message.");

代码配置日志:

// 设置日志级别node->get_logger().set_level(rclcpp::Logger::Level::Debug);// 输出日志RCLCPP_DEBUG(node->get_logger(), "This is a debug message.");RCLCPP_INFO(node->get_logger(), "This is an info message.");

命令行配置

ros2 run my_package my_node --ros-args --log-level debug

ROS参数:一种灵活的方式来配置和调整节点的行为

.msg:定义话题通信中传输的消息类型

.srv:定义服务通信中请求和响应的数据结构


Action:

一种高级通信机制,用于处理需要长时间运行的任务,并且支持任务的中途反馈和取消

  1. 目标(Goal):客户端发送的任务目标
  2. 反馈(Feedback):服务器在执行任务过程中发送的进度反馈
  3. 结果(Result):任务完成后,服务器返回的结果

动作的通信模型基于客户端-服务器模式:

客户端:

  1. 发送任务目标(Goal)到服务器
  2. 接收任务的反馈(Feedback)和结果(Result)

服务端:

  1. 接收客户端发送的任务目标
  2. 执行任务,并发送反馈和结果

动作文件(.action)

  1. Goal:定义客户端发送的任务目标
  2. Result:定义任务完成后返回的结果
  3. Feedback:定义任务执行过程中的反馈

生命周期节点:

生命周期(Lifecycle) 是一种用于管理节点状态的机制

生命周期节点(Lifecycle Node)允许开发者以可控的方式启动、配置、激活和关闭节点,从而提高系统的可靠性和可维护性

  1. 生命周期节点是一种特殊类型的节点,具有明确的状态转换机制
  2. 每个生命周期节点可以处于不同的状态(如未配置、非活动、活动等),并且只能在特定状态下执行某些操作

作用:

  1. 提供对节点状态的精细控制,确保节点在正确的状态下执行操作
  2. 提高系统的可靠性和可维护性,减少因节点状态不一致导致的错误

生命周期节点状态:

  1. 未配置 Unconfigured
    1. 节点的初始状态
    2. 在此状态下,节点尚未配置,无法执行任何操作
  2. 非活动Inactive
    1. 节点已配置,但未激活
    2. 在此状态下,节点可以接收配置参数,但不会执行主要功能
  3. 活动active
    1. 节点已激活,正在执行其主要功能
    2. 在此状态下,节点可以接收和处理数据
  4. 最终化Finalized
    1. 节点已关闭,无法再执行任何操作
    2. 在此状态下,节点可以释放资源并退出

状态转换:

生命周期节点的状态转换通过过度Transition实现的

  1. 配置(Configure)
    1. 从未配置状态转换到非活动状态
    2. 在此过渡中,节点可以加载配置参数并初始化资源
  2. 激活(Activate)
    1. 从非活动状态转换到活动状态
    2. 在此过渡中,节点可以启动其主要功能
  3. 停用(Deactivate)
    1. 从活动状态转换到非活动状态
    2. 在此过渡中,节点可以停止其主要功能
  4. 清理(Cleanup)
    1. 从非活动状态转换到未配置状态
    2. 在此过渡中,节点可以释放资源并重置配置
  5. 关闭(Shutdown)
    1. 从任何状态转换到最终化状态
    2. 在此过渡中,节点可以释放所有资源并退出

launch文件:

launch文件允许同时启动和配置多个包含 ROS 2 节点的可执行文件

  1. XML文件

    <launch><node pkg="my_package" exec="my_node" name="my_node" output="screen"><param name="my_param" value="42"/></node>
    </launch>
    
    1. <launch>:根元素,表示启动文件的开始
    2. <node>:定义一个节点
      1. pkg:节点所属的包
      2. exec:节点的可执行文件
      3. name:节点的名称
      4. output:指定节点的输出(如 screen 表示输出到控制台)
    3. <param>:设置节点的参数
  2. python文件

    from launch import LaunchDescription
    from launch_ros.actions import Nodedef generate_launch_description():return LaunchDescription([Node(package='my_package',executable='my_node',name='my_node',output='screen',parameters=[{'my_param': 42}])])
    
    1. LaunchDescription:表示启动文件的配置
    2. Node:定义一个节点
      1. package:节点所属的包
      2. executable:节点的可执行文件
      3. name:节点的名称
      4. output:指定节点的输出
      5. parameters:设置节点的参数

Rviz2:

Rviz2是 ROS2 中的一款强大的可视化工具,用于显示和调试机器人系统的各种数据

  1. RVIZ2 是 ROS2 中的 3D 可视化工具,用于显示机器人系统的各种数据
  2. 支持多种数据类型,如点云、激光雷达数据、机器人模型、地图、路径规划结果等

作用:

  1. 直观地查看和调试机器人系统的运行状态
  2. 提供丰富的可视化功能,支持自定义显示和交互

主要功能:

  1. 显示传感器数据
    1. 支持显示激光雷达、摄像头、IMU 等传感器的数据
  2. 显示机器人模型
    1. 支持加载和显示 URDF 格式的机器人模型
  3. 显示地图
    1. 支持显示 2D 或 3D 地图
  4. 显示路径规划结果
    1. 支持显示路径规划算法生成的路径
  5. 交互功能
    1. 支持通过鼠标和键盘与可视化界面交互
  6. 插件系统
    1. 支持通过插件扩展功能

Gazebo:

Gazebo 提供了一个逼真的 3D 仿真环境,支持物理引擎、传感器模拟和多机器人协作

可以模拟复杂的物理现象(如重力、摩擦力、碰撞等),并支持多种传感器(如激光雷达、摄像头、IMU 等)的仿真

  1. 物理仿真
    1. 支持多种物理引擎(如 ODE、Bullet、SimBody 等),可以模拟重力、摩擦力、碰撞等物理现象
  2. 传感器仿真
    1. 支持多种传感器的仿真,包括激光雷达、摄像头、IMU、GPS 等
  3. 机器人模型
    1. 支持加载和仿真 URDF(Unified Robot Description Format)或 SDF(Simulation Description Format)格式的机器人模型
  4. 环境建模
    1. 支持创建复杂的仿真环境,包括建筑物、地形、障碍物等
  5. 多机器人仿真
    1. 支持同时仿真多个机器人,并模拟它们之间的交互
  6. ROS/ROS2 集成
    1. Gazebo 与 ROS/ROS2 紧密集成,可以通过 ROS/ROS2 控制仿真中的机器人,并获取传感器数据
    2. 为了将 Gazebo 与 ROS2 集成,ROS2 提供了一组名为 gazebo_ros_pkgs 的包
    3. 这些包充当 Gazebo 和 ROS2 之间的桥梁,允许 ROS2 节点与 Gazebo 仿真环境进行交互

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com