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

相关推荐
谢白羽3 分钟前
SGLang模型加载过程笔记
笔记·llm·论文·agent·vllm·大模型部署·sglang
AAA代码批发商23 分钟前
Days 32 Linux 多线程:线程分离属性、多进程 vs 多线程、线程同步互斥锁、信号量
linux·笔记
从零开始的嵌入式之旅38 分钟前
day31
linux·c语言·经验分享·笔记·嵌入式硬件
小张帅三代41 分钟前
yolo基础学习笔记
笔记·学习·yolo
北风toto1 小时前
UML(统一建模语言)详细笔记
笔记·uml·软件设计师
ouynagda1 小时前
Linux 进程与线程学习笔记
linux·笔记·学习
GlueNa2SiO39 小时前
03-Flask模板引擎Jinja2详解
笔记·python·flask
Capricorn198811 小时前
解决全网抄 Karpathy 导致的 LLM Wiki 污染?基于知芽 Notebook Skill 的 raw/ 笔记法排障指南
大数据·论文阅读·人工智能·笔记·论文笔记
壹玖玖肆11 小时前
openGauss使用笔记
笔记
宵时待雨11 小时前
linux笔记归纳17:传输层协议UDP
linux·笔记·udp