ROS实践5:自定义消息

一:首先在功能包目录下(与src目录相同)创建msg文件夹,在文件夹里创建一个.msg文件。
例如一个名为num.msg的文件
内容为:Header header int32 demo_int float64 demo_double

二添加依赖项
在xml文件中添加
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>

在.txt文件中添加
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
message_generation #新添加的
)

add_message_files(FILES num.msg)
generate_messages(DEPENDENCIES std_msgs)

catkin_package(
CATKIN_DEPENDS roscpp std_msgs message_runtime
)

三 编译

四 添加源代码

//发布者
#include <ros/ros.h>
#include <std_msgs/String.h> //#include "std_msgs/String.h"
#include <std_msgs/Float64.h>
#include <learning/num.h>
int main(int argc, char **argv)
{
  ros::init(argc, argv, "talk");

  ros::NodeHandle n;

  ros::Publisher chatter_pub = n.advertise<learning::num>("topic11", 1000); //ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);

  ros::Rate loop_rate(10);

  //int count = 0;

 // std_msgs::String a;
  learning::num cc;
  cc.demo_int=1;

  while (ros::ok())
  {
    
   

    // std::stringstream ss;
    // ss << "hello world " << count;
    //msg.data = count;// msg.data = ss.str();

   // ROS_INFO("%s", a.data.c_str());
    //ROS_INFO("%d", msg.data); //ROS_INFO("%f", msg.data.c_str())

    chatter_pub.publish(cc);

    //ros::spinOnce();

    loop_rate.sleep();
    //++count;
   cc.demo_int++;
  }
  return 0;
}

   

//订阅者
#include <ros/ros.h>
#include <std_msgs/String.h> //#include "std_msgs/String.h"
#include <std_msgs/Float64.h>
#include <learning/num.h>
void chatterCallback(const learning::num& msg) //void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
  ROS_INFO("%d", msg.demo_int); //ROS_INFO("I heard: [%f]", msg->data.c_str());
}

int main(int argc, char **argv)
{
  ros::init(argc, argv, "listen");

  ros::NodeHandle n;

  ros::Subscriber sub = n.subscribe("topic11", 100, chatterCallback);

 // std_msgs::Float64 b;

 // b.data=10.0;

  ros::spin();

 // ROS_INFO("%d", b.data);

  return 0;
}

   

五往.txt文件中添加

add_executable(talk src/talk.cpp)
target_link_libraries(talk ${catkin_LIBRARIES})
add_dependencies(talk ${PROJECT_NAME}_gencpp)

add_executable(listen src/listen.cpp)
target_link_libraries(listen ${catkin_LIBRARIES})
add_dependencies(listen ${PROJECT_NAME}_gencpp)

六 编译 运行roscore 运行包
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值