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

相关推荐
tingshuo29177 小时前
D006 【模板】并查集
笔记
tingshuo29171 天前
S001 【模板】从前缀函数到KMP应用 字符串匹配 字符串周期
笔记
西岸行者6 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
starlaky6 天前
Django入门笔记
笔记·django
勇气要爆发6 天前
吴恩达《LangChain LLM 应用开发精读笔记》1-Introduction_介绍
笔记·langchain·吴恩达
悠哉悠哉愿意6 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
勇气要爆发6 天前
吴恩达《LangChain LLM 应用开发精读笔记》2-Models, Prompts and Parsers 模型、提示和解析器
android·笔记·langchain
qianshanxue117 天前
计算机操作的一些笔记标题
笔记
土拨鼠烧电路7 天前
笔记11:数据中台:不是数据仓库,是业务能力复用的引擎
数据仓库·笔记
土拨鼠烧电路7 天前
笔记14:集成与架构:连接孤岛,构建敏捷响应能力
笔记·架构