ros发布消息学习(古月居 ROS入门21讲 第十讲 发布者Publisher的编程实现)

创建工作空间:mkdir -p ~/catkin_ws1/src

编译工作空间:catkin_make

初始化工作空间:catkin_init_workspace

执行source命令:source devel/setup.bash

为方便起见,将之添加进.bashrc文件,这样不用每次执行source命令。

新建package功能包:catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim

新建cpp文件并将以下代码复制进文件:vim velocity_publisher.cpp

#include<ros/ros.h>
#include<geometry_msgs/Twist.h>

int main(int argc,char**argv)
{
    ros::init(argc,argv,"velocity_publisher");
    ros::NodeHandle n;
    ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",10);
    //turtle_vel_pub是发布者,advertise()函数用于向ros master也就是ros管理器声明我要发布一个cmd_vel的话题以便于ros master管理调度其他节点可以订阅该话题
    ros::Rate loop_rate(10);
    while(ros::ok())
    {
        geometry_msgs::Twist vel_msgs;
	vel_msgs.linear.x=0.5;
        vel_msgs.angular.z=0.2;
        
        turtle_vel_pub.publish(vel_msgs);
        ROS_INFO("Publish turtle velocity command[%0.2f m/s,%0.2f rad/s]",vel_msgs.linear.x,vel_msgs.angular.z);
        loop_rate.sleep();	
    }
    return 0;
}

用vim编辑器,按下i可以编辑,按esc+:wq为保存退出。

在CMakelists.txt中添加以下两行:

add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
如下图:

至此程序就可以了,然后编译;
catkin_make

然后,执行程序:

roscore

rosrun turtlesim turtlesim_node

rosrun learning_topic velocity_publisher

 

可以,完美运行!

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen953

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值