ROS笔记

自定义消息的发布

1.创建空间+包

1.创建ROS工作空间

cs 复制代码
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
创建工作空间,编译设置环境

2.创建工作空间中的ROS包

cpp 复制代码
cd ~/catkin_ws/src
catkin_create_pkg your_package std_msgs rospy roscpp message_generation

创建一个名为your_package的ROS包,依赖于std_msgsrospyroscppmessage_generation.

2。创建自定义消息文件

定义消息结构

cpp 复制代码
cd ~/catkin_ws/src/your_package/msg
touch Person.msg

在msg里输入

复制代码
string name
int32 age
float32 height

3.配置CMakeLists.txt和package.xml

修改CMakeLists.txt

cd ~/catkin_ws/src/your_package

gedit CMakeLists.txt

CMakeLists.txt文件中添加

cpp 复制代码
add_message_files(
  FILES
  Person.msg
)

generate_messages(
  DEPENDENCIES
  std_msgs
)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
  message_generation
)

catkin_package(
  CATKIN_DEPENDS roscpp rospy std_msgs message_runtime
)

add_executable(publisher_node src/publisher_node.cpp)
target_link_libraries(publisher_node ${catkin_LIBRARIES})

修改package.xml

gedit package.xml

package.xml文件中添加

<build_depend>message_generation</build_depend>

<exec_depend>message_runtime</exec_depend>

4. 编写发布者代码

1.创建发布者节点文件

cd ~/catkin_ws/src/your_package/src

touch publisher_node.cpp

2.编辑发布者节点文件

复制代码
gedit publisher_node.cpp

在打开的publisher_node.cpp文件中输入

cpp 复制代码
#include <ros/ros.h>
#include "your_package/Person.h"  // 包含自定义消息头文件

int main(int argc, char **argv)
{
  ros::init(argc, argv, "publisher_node");
  ros::NodeHandle nh;

  ros::Publisher pub = nh.advertise<your_package::Person>("person_topic", 10);

  ros::Rate rate(1);  // 设置发布频率

  while (ros::ok())
  {
    your_package::Person person;
    person.name = "ganqianzhao";
    person.age = 22;
    person.height = 1.75;

    pub.publish(person);
    ROS_INFO("发布消息:%s, %d, %.2f", person.name.c_str(), person.age, person.height);

    rate.sleep();
  }

  return 0;
}

5. 编译和运行

编译项目

复制代码
cd ~/catkin_ws
catkin_make
source devel/setup.bash

运行ROS核心

roscore

运行发布者节点

rosrun your_package publisher_node

6. 查看发布的消息

rostopic list 列出当前所有活跃的主题

查看消息内容 :rostopic echo /person_topic 会实时显示发布到/person_topic主题上的消息内容,包括姓名、年龄和身高信息.

相关推荐
_落纸2 小时前
三大基础无源电子元件——电阻(R)、电感(L)、电容(C)
笔记
Alice-YUE3 小时前
【CSS学习笔记3】css特性
前端·css·笔记·html
2303_Alpha3 小时前
SpringBoot
笔记·学习
Hello_Embed12 小时前
STM32HAL 快速入门(二十):UART 中断改进 —— 环形缓冲区解决数据丢失
笔记·stm32·单片机·学习·嵌入式软件
咸甜适中12 小时前
rust语言 (1.88) 学习笔记:客户端和服务器端同在一个项目中
笔记·学习·rust
Grassto13 小时前
RAG 从入门到放弃?丐版 demo 实战笔记(go+python)
笔记
Magnetic_h13 小时前
【iOS】设计模式复习
笔记·学习·ios·设计模式·objective-c·cocoa
周周记笔记16 小时前
学习笔记:第一个Python程序
笔记·学习
丑小鸭是白天鹅16 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
潘达斯奈基~16 小时前
《大数据之路1》笔记2:数据模型
大数据·笔记