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主题上的消息内容,包括姓名、年龄和身高信息.

相关推荐
麟城Lincoln39 分钟前
【RHCSA-Linux考试题目笔记(自用)】servera的题目
linux·笔记·考试·rhcsa
丰锋ff1 小时前
计网学习笔记第2章 物理层(灰灰题库)
笔记·学习
阿絮~3 小时前
Apache RocketMQ进阶之路阅读笔记和疑问
笔记·apache·rocketmq
天水幼麟8 小时前
动手学深度学习-学习笔记(总)
笔记·深度学习·学习
天水幼麟10 小时前
动手学深度学习-学习笔记【二】(基础知识)
笔记·深度学习·学习
绿皮的猪猪侠11 小时前
算法笔记上机训练实战指南刷题
笔记·算法·pta·上机·浙大
沧海一笑-dj11 小时前
【51单片机】51单片机学习笔记-课程简介
笔记·学习·51单片机·江科大·江科大学习笔记·江科大单片机·江科大51单片机
老虎062711 小时前
JavaWeb(苍穹外卖)--学习笔记04(前端:HTML,CSS,JavaScript)
前端·javascript·css·笔记·学习·html
大苏打seven12 小时前
Docker学习笔记:Docker网络
笔记·学习·docker
kikikidult16 小时前
(2025.07)解决——ubuntu20.04系统开机黑屏,左上角光标闪烁
笔记·ubuntu