跨机器ROS服务调用:在不同包名下实现分布式服务端和客户端节点


好的,我们将分别为服务端和客户端使用不同的包名,例如服务端使用robot_server_package,客户端使用robot_client_package

一、服务端节点配置(robot_server)

创建包和定义服务类型
  1. 创建一个名为robot_server_package的包,并在srv目录下创建一个名为AddTwoInts.srv的文件:

    int64 a
    int64 b
    ---
    int64 sum
    
  2. 确保在CMakeLists.txtpackage.xml中正确配置,以便生成服务代码。

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.0.2)
    project(robot_server_package)
    
    find_package(catkin REQUIRED COMPONENTS
      rospy
      std_msgs
      message_generation
    )
    
    add_service_files(
      FILES
      AddTwoInts.srv
    )
    
    generate_messages(
      DEPENDENCIES
      std_msgs
    )
    
    catkin_package(
      CATKIN_DEPENDS rospy std_msgs message_runtime
    )
    
    include_directories(
      ${catkin_INCLUDE_DIRS}
    )
    

    package.xml

    <package format="2">
      <name>robot_server_package</name>
      <version>0.0.0</version>
      <description>The robot_server_package</description>
    
      <maintainer email="[email protected]">Your Name</maintainer>
    
      <license>BSD</license>
    
      <buildtool_depend>catkin</buildtool_depend>
      <build_depend>rospy</build_depend>
      <build_depend>std_msgs</build_depend>
      <build_depend>message_generation</build_depend