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

相关推荐
阿蒙Amon4 分钟前
JavaScript学习笔记:17.闭包
javascript·笔记·学习
想不出名字ಥ_ಥ10 分钟前
STM32学习笔记--01学会如何点亮一颗LED灯
笔记·stm32·学习
摇滚侠31 分钟前
Redis 零基础到进阶,Redis 主从复制,笔记55-62
数据库·redis·笔记
لا معنى له38 分钟前
学习笔记:循环神经网络(RNN)
人工智能·笔记·学习·机器学习
炒毛豆1 小时前
前端可视化-----svg学习笔记
笔记·学习
智者知已应修善业1 小时前
【删除有序数组中的重复项 II之O(N)算法】2024-1-31
c语言·c++·经验分享·笔记·算法
AA陈超2 小时前
Lyra Starter Game 中 GameFeature 类(如 ShooterCore)的加载流程
c++·笔记·学习·ue5·虚幻引擎
老王熬夜敲代码2 小时前
linux系统IO
linux·笔记
stars-he2 小时前
FPGA学习笔记(6)逻辑设计小结与以太网发送前置
笔记·学习·fpga开发
锦瑟弦音2 小时前
跑酷游戏开发笔记3 && 游戏开始场景 cocos 3.8.7
javascript·笔记·游戏