使用ROS创建一个topic(ROS1,C++)

首先建立一个工作空间(不再赘述)
cd进入src,创建功能包

catkin_creat_pkg test rospy roscpp std_msgs
cd test/src
touch talker.cpp //创建发布者
vi talker.cpp

打开talker.cpp输入以下内容

#include<sstream>
#include"ros/ros.h"
#include"std_msgs/String.h"
int main(int argc, char **argv)
{
    //ros节点初始化
    ros::init(argc,argv,"talker");

    //创建节点句柄
    ros::NodeHandle n;

    //创建一个publisher,发布名为chatter的Topic,消息类型为std_msgs::String
    ros::Publisher chatter_pub=n.advertise<std_msgs::String>("chatter",1000);
    ros::Rate loop_rate(10);

    int count =0;
    while (ros::ok())
    {
        //初始化std_msgs::String类型的消息
        std_msgs::String msg;
        std::stringstream ss;
        ss<<"hello world"<<count;
        msg.data=ss.str();

        //发布消息
        ROS_INFO("%s",msg.data.c_str());
        chatter_pub.publish(msg);

        //循环等待回调函数
        ros::spinOnce();

        //按照循环频率延时
        loop_rate.sleep();
        ++count;

    }
    return 0;
}
:wq

保存输入的内容

vi listener.cpp

输入以下内容

#include"ros/ros.h"
#include"std_msgs/String.h"

//接受到订阅的消息后,会进入消息回调函数
void chatterCallback(const std_msgs::String::ConstPtr& msg)
{
    //将受到的消息打印出来
    ROS_INFO("I hear: [%s]",msg->data.c_str());
}
int main(int argc,char **argv)
{
    //初始化ROS 节点
    ros::init(argc,argv,"listener");

    //创建节点句柄
    ros::NodeHandle n;

    //创建一个subscriber,订阅名为chatter的话题,注册回调函数chatterCallback
    ros::Subscriber sub=n.subscribe("chatter",1000,chatterCallback);
    ros::spin();
    return 0;
}

保存后退出,修改cmakelist

cd ~/catkin_ws/src/test
gedit CMakeLists.txt
```![请添加图片描述](https://img-blog.csdnimg.cn/7d5eaaa7447c4db287ab8aed1568384a.png)

```bash
add_executable(listener src/listener.cpp)
 add_executable(talker src/talker.cpp)

请添加图片描述

target_link_libraries(listener
   ${catkin_LIBRARIES}
 )
 target_link_libraries(talker
   ${catkin_LIBRARIES}
 )

请添加图片描述
保存退出后进行编译

cd catkin_ws
catkin_make

打开一个终端

roscore
cd catkin_ws
source devel/setup.bash
rosrun test talker

打开一个新终端

cd catkin_ws
source devel/setup.bash
rosrun test listener

结果如下图,talker为发布者,listener为订阅者
请添加图片描述
新打开一个终端,使用

rostopic list

可以看到发布的话题
请添加图片描述

rqt_graph

看到节点之间的关系
请添加图片描述
代码来源与——ROS机器人开发实践(胡春旭著)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值