# ros-demo **Repository Path**: createmaker/ros-demo ## Basic Information - **Project Name**: ros-demo - **Description**: ros-demo by cursor with zq - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-07 - **Last Updated**: 2025-09-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ROS Demo 项目 这是一个完整的ROS演示项目,展示了ROS的核心功能:话题发布/订阅、服务调用、自定义消息等。 ## 项目结构 ``` ros-demo/ ├── package.xml # ROS包配置文件 ├── CMakeLists.txt # CMake构建文件 ├── msg/ # 自定义消息定义 │ └── CustomMessage.msg ├── srv/ # 自定义服务定义 │ └── AddTwoInts.srv ├── src/ # C++源代码 │ ├── talker.cpp # 发布者节点 │ ├── listener.cpp # 订阅者节点 │ ├── service_server.cpp # 服务服务器 │ └── service_client.cpp # 服务客户端 ├── scripts/ # Python脚本 │ ├── talker.py # Python发布者 │ ├── listener.py # Python订阅者 │ ├── service_server.py # Python服务服务器 │ └── service_client.py # Python服务客户端 └── launch/ # Launch文件 └── ros_demo.launch # 启动所有节点 ``` ## 功能说明 ### 1. 话题通信 (Topic Communication) - **发布者 (Publisher)**: 发布字符串、速度控制、自定义消息 - **订阅者 (Subscriber)**: 接收并处理各种类型的消息 ### 2. 服务通信 (Service Communication) - **服务服务器**: 提供加法计算服务 - **服务客户端**: 调用加法服务 ### 3. 自定义消息 - `CustomMessage.msg`: 包含名称、ID、数值和位置信息 - `AddTwoInts.srv`: 简单的加法服务 ## 使用方法 ### 1. 编译项目 ```bash cd /path/to/your/catkin_ws catkin_make source devel/setup.bash ``` ### 2. 运行演示 ```bash # 方法1: 使用launch文件启动所有节点 roslaunch ros_demo ros_demo.launch # 方法2: 分别启动各个节点 # 终端1: 启动roscore roscore # 终端2: 启动发布者 rosrun ros_demo talker # 终端3: 启动订阅者 rosrun ros_demo listener # 终端4: 启动服务服务器 rosrun ros_demo service_server # 终端5: 调用服务客户端 rosrun ros_demo service_client 5 3 ``` ### 3. 查看话题和服务 ```bash # 查看所有话题 rostopic list # 查看话题内容 rostopic echo /chatter rostopic echo /cmd_vel rostopic echo /custom_topic # 查看所有服务 rosservice list # 调用服务 rosservice call /add_two_ints "a: 5, b: 3" ``` ## 学习要点 1. **节点 (Nodes)**: 独立的可执行程序 2. **话题 (Topics)**: 异步消息传递机制 3. **服务 (Services)**: 同步请求-响应机制 4. **消息 (Messages)**: 数据结构定义 5. **Launch文件**: 批量启动多个节点 6. **包 (Packages)**: 代码组织单位 这个项目展示了ROS的基本概念和实际应用,是学习ROS的良好起点。