• 二、ROS2基本操作


    ROS2节点

    ROS2的节点讲究分工合作,每个节点负责一个单独的模块化功能。
    举一个激光雷达的例子,一个节点负责获取激光雷达的扫描数据,一个节点负责处理激光雷达数据,还有一个节点负责控制车轮转动,一个节点负责定位等等。如何实现这么多节点的通信呢?
    实际上,ROS2早已为你准备好四种通信方式:
    1、话题-topics
    2、服务-servicces
    3、动作-Action
    4、参数-parameters

    ROS2节点基本操作

    启动节点的指令 ros2 run
    其意义为启动包下的中的节点,据个例子 ros2 run turtlesim turtlesim_node,这就是启动乌龟模拟器的那条指令。
    查看节点列表

    ros2 node list
    
    • 1

    查看节点信息

    ros2 node info 
    
    • 1

    重新映射节点名称(给节点换一个名字,因为不能同时运行两个同名的节点,所以需要用到换名,例如下面这行代码就是把turtlesim换名字为my_turtle)

    ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
    
    • 1

    ROS2工作空间与功能包

    一个工作空间下可以有多个功能包,一个功能包可以有多个节点存在。
    可以浅显的理解为一个文件夹,该文件夹下有src以及若干个功能包,所以一般新建一个工作空间的操作如下:

    mkdir -p turtle_ws/src
    
    • 1

    再切换到工作空间

    cd turtle_ws/src
    
    • 1

    而功能包可以理解为存放节点的地方,ROS2的功能包根据编译方式不同可以分为三种类型
    1、ament_python,适用于python程序
    2、cmake,适用于C++
    3、ament_cmake,适用于C++程序,是cmake的增强版

    安装获取功能包指令

    sudo apt install ros--package_name
    例如 sudo apt install ros-galactic-turtlesim
    
    • 1
    • 2

    创建功能包

    ros2 pkg create  --build-type {cmake,ament_cmake,ament_python} --dependencies<依赖名字>
    
    • 1

    列出可执行文件

    ros2 pkg executables
    
    • 1

    列出某个功能包的可执行文件

    ros2 pkg executables turtlesim
    
    • 1

    列出所有包

    ros2 pkg list
    
    • 1

    输出某个包所在路径的前缀

    ros2 pkg prefix 
    例如找出乌龟模拟器的前缀 ros2 pkg prefix turtlesim
    
    • 1
    • 2

    列出功能包的清单描述文件

    ros2 pkg xml turtlesim
    
    • 1

    ROS2构建工具Colcon

    colcon是一个功能包构建工具,就是用来编译代码的。
    ROS2默认没有安装colcon,需要手动安装,安装指令如下:

    sudo apt-get install python3-colcon-common-extensions
    
    • 1

    输入colcon指令,如果弹出usage提示则证明安装成功
    下面开始实际动手编一个东西测试一下
    1、创建一个工作区colcon_test

    mkdir colcon_test && cd colcon_test
    
    • 1

    2、下载一个ROS2示例源码测试一下
    需注意的是,-b后面对应的是你使用的ROS2版本,这里我使用的是galactic

    git clone https://github.com/ros2/examples src/examples -b galactic
    
    • 1

    3、编译工程

    colcon build
    
    • 1

    以上三步完成后,可以运行一个自己编的节点了,方法如下:
    1、打开终端进入到我们刚才创建的工作空间里面,先source一下资源

    source install/setup.bash
    
    • 1

    2、运行一个订阅节点,用以接受其他发布者的消息

    ros2 run examples_rclcpp_minimal_subscriber subscriber_member_function
    
    • 1

    3、ctrl+alt+T再打开一个新的终端,先source,再运行一个发布者节点,就可以在刚才运行的订阅节点收到消息啦

    source install/setup.bash
    ros2 run examples_rclcpp_minimal_publisher publisher_member_function
    
    • 1
    • 2
  • 相关阅读:
    [machine learning]误差分析,模型分析
    spring 如何获取当前类在容器中的beanname呢?
    Mvi架构浅析
    基于springboot的汽车销售系统,汽车商城管理系统,附源码+数据库+论文+开题报告,包远程安装调试
    python:自动获取当前系统的路径(windows+linux)、xlsx文件转换为csv文件
    echarts手动触发气泡的显示和隐藏
    android 12出现 Targeting S+ (version 31 and above)问题
    文举论金:黄金原油全面走势分析
    抖音小店一周卖了7万多,每天赚2000多,7个步骤教新手如何起店
    SpringBoot整合Activiti7——执行监听器(六)
  • 原文地址:https://blog.csdn.net/weixin_44014982/article/details/128012152