搜索

pdf文档 古月《ROS入门21讲》12.话题消息的定义与使用.pdf

1.34 MB 9 页 1 下载 101 浏览 0 评论 0 收藏
所属分类: 系统运维 / Linux
语言 格式 评分
中文(简体)
.pdf
3
摘要
文档详细讲解了ROS中话题消息的定义与使用,包括如何自定义话题消息类型(如Person.msg)、在package.xml和CMakeLists.txt中添加必要的依赖项和编译选项,以及如何实现发布者和订阅者节点。文档还提供了C++和Python语言的实现示例,并介绍了编译和运行的具体步骤。
AI总结
### 文档总结:ROS话题消息的定义与使用 1. **话题模型** - ROS采用发布/订阅模型,用于节点之间的通信。 - 自定义话题消息需定义`.msg`文件,描述消息字段类型(如`string name`、`uint8 sex`等)。 2. **自定义话题消息** - 在`.msg`文件中定义消息结构,例如: ```msg string name uint8 sex uint8 age ``` - 在`package.xml`中添加依赖: ```xml message_generation message_runtime ``` - 在`CMakeLists.txt`中配置编译选项: ```cmake find_package(message_generation ...) add_message_files(FILES Person.msg) generate_messages(DEPENDENCIES std_msg) ``` 3. **发布者实现** - 初始化ROS节点并注册发布的话题信息。 - 创建消息数据并按一定频率发布: ```cpp learning_topic::Person person_msg; person_msg.name = "Tom"; person_msg.age = 18; person_msg.sex = learning_topic::Person::male; ``` 4. **订阅者实现** - 初始化ROS节点并订阅话题。 - 在消息回调函数中处理接收到的消息: ```cpp void personInfoCallback(const learning_topic::Person::ConstPtr& msg) { ROS_INFO("Subscribe Person Info: name:%s age:%d sex:%d", msg->name.c_str(), msg->age, msg->sex); } ``` 5. **Python实现** - 发布者: ```python from learning_topic.msg import Person person_msg = Person() person_msg.name = "Tom" person_msg.age = 18 person_msg.sex = Person.male ``` - 订阅者: ```python def personInfoCallback(msg): print("Subscribe Person Info:", msg.name, msg.age, msg.sex) ``` 6. **编译与运行** - 编译:`catkin_make` - 环境配置:`source devel/setup.bash` - 运行: ```bash roscore rosrun learning_topic person_publisher rosrun learning_topic person_subscriber ``` ### 核心观点 - ROS话题消息通过发布/订阅模型实现节点间的异步通信。 - 自定义话题需定义消息类型并配置项目文件。 - 发布者负责生成并发布消息,订阅者负责接收并处理消息。 - 支持多种语言实现(如C++和Python)。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 2 页请下载阅读 -
文档评分
请文明评论,理性发言.