ROS2/C++ 编写launch文件(2)——带参数

本文介绍了如何在ROS2中使用C++编写launch文件,并着重讲解了如何定义和使用参数。在示例中,展示了如何定义一个名为param的int类型参数,其值为10。此外,还讨论了使用C++的cout进行日志输出相比于ROS2的RCLCPP_INFO打印数据时的延迟问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

launch文件编写

上一篇的基础上增加了parameters的定义,这里定义参数的名为:param,值为int的10;

import os
import ament_index_python.packages

from launch import LaunchDescription
from launch_ros.actions import ComposableNodeContainer
from launch_ros.actions import Node
from launch_ros.descriptions import ComposableNode
import yaml

def generate_launch_description():
    return LaunchDescription([
        Node(
            package="cpp_pubsub",
            node_executable="talker",
            name="talker",
	        output="screen",
            parameters=[
                {
   
   "param":<
### ROS Launch 文件配置 Server Client 通信 #### 创建必要的包结构和文件 为了使服务器和客户端能够通过 `launch` 文件启动并正常工作,需先建立相应的ROS包以及所需的源码和服务定义文件。 在指定的工作空间下创建名为`srv_self`的新包,并确保该包依赖于`message_generation`, `rospy`, `roscpp` 和 `std_msgs`等必要组件[^2]: ```bash cd ~/catkin_ws/src/ catkin_create_pkg srv_self message_generation rospy roscpp std_msgs message_runtime ``` 接着,在新创建的包内构建目录结构用于放置`.srv`文件、发射器(`launch`)文件C++源代码文件: ```bash mkdir -p srv_self/{launch,srv,src} touch srv_self/launch/start.launch srv_self/srv/AddTwoInts.srv srv_self/src/server.cpp srv_self/src/client.cpp ``` #### 定义服务消息 `.srv` 编辑位于`srv_self/srv/AddTwoInts.srv`的服务请求与响应格式如下所示: ``` int64 a int64 b --- int64 sum ``` 这表示当客户端调用此服务时会传递两个整型参数给服务器;而作为回应,服务器将计算这两个数值之和并向客户端反馈结果。 #### 编写 CMakeLists.txt 配置编译规则 修改`srv_self/CMakeLists.txt`来包含生成的消息头文件路径,并声明要编译的目标可执行程序——即服务器端和客户端应用。具体操作包括但不限于添加以下几项设置[^4]: - 使用`find_package()`函数加载所需模块; - 调用`add_service_files()`, `generate_messages()`, `add_executable()`, `target_link_libraries()`等一系列宏命令完成项目构建过程中的各项任务。 以下是部分关键片段展示: ```cmake find_package(catkin REQUIRED COMPONENTS rospy roscpp std_msgs message_generation ) add_service_files( FILES AddTwoInts.srv ) generate_messages( DEPENDENCIES std_msgs ) add_executable(server src/server.cpp) add_executable(client src/client.cpp) add_dependencies(server ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) add_dependencies(client ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS}) target_link_libraries(server ${catkin_LIBRARIES}) target_link_libraries(client ${catkin_LIBRARIES}) ``` #### 构建Launch文件以简化启动流程 最后一步是在`srv_self/launch/start.launch`中编写XML描述符,以便一键式地初始化整个系统环境。这里给出一个简单的例子说明如何同时激活server节点和client节点[^3]: ```xml <launch> <!-- 启动Server --> <node name="adder_server" pkg="srv_self" type="server" output="screen"/> <!-- 启动Client --> <node name="adder_client" pkg="srv_self" type="client" args="10 7" output="screen"/> </launch> ``` 上述配置意味着每当执行`roslaunch srv_self start.launch`命令时,将会自动按照顺序先后开启服务提供者(server)和服务消费者(client),其中后者还会携带额外的命令行参数分别代表待相加的操作数之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值