ROS初学:简单发布

话题订阅发布是ros实现功能的主要方式之一,但对于初学者而言,整个流程并不算十分友好,尤其是对CMAKEFILE不熟悉的同志,如果只是一味地按照教程写程序,很有可能发生错误,可能是版本或者不同库的原因。

下面简要介绍一个简单的发布流程(订阅尚在调试学习中):

1.建立工作空间:

mkdir -p ~/demo01_ws/src

cd ~/demo01_ws/src     ##(注意可以使用tab加快打字速度)

catkin_init_workspace

cd demo01_ws

catkin_make

source ./devel/setup.bash

2.创建功能包:

catkin_create_pkg learning_communication roscpp rospy std_msgs

cd ~/demo01_ws

catkin_make

source ./devel/setup.bash

3.关于空间覆盖,我没有做,也能实现发布,但还是写着以供参考:

sudo apt-get install ros-kinetic-ros-tutorials

rospack find roscpp_tutorials

cd ~/demo01_ws/src

git clone git://github.com/ros/ros_tutorials.git

cd ..

catkin_make

source ./devel/setup.bash

4.在learning_communication/src中创建talker.cpp文件

vim talker.cpp

--------------------

#include<sstream>

#include "ros/ros.h"

#include "std_msgs/String.h"

int main(int argc,char *argv[]){

ros::init(argc,argv,"talker");//ros节点初始化

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

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 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;

}

5.修改CMakeList.txt

对以下语句去除注释并修改:

include_directories(include ${catkin_INCLUDE_DIRS})

add_executable(talker src/talker.cpp)

target_link_libraries(talker ${catkin_LIBRARIES})

add_depandencies(talker ${PROJECT_NAME}_generate_messages_cpp)

注意这些语句的顺序,顺序错误会导致报错,修改会显得很繁琐;

不要修改:

project(learning_communication)
catkin_package(
 INCLUDE_DIRS include
# LIBRARIES strands_gazing
 CATKIN_DEPENDS std_msgs
# DEPENDS system_lib
)

以及:find_package(catkin REQUIRED COMPONENTS
  roscpp
  rospy
  std_msgs
)

网上对这两部分的修改在本程序中会导致报错

之后在demo01_ws中:

catkin_make

6.启动publisher

在主界面终端启动:

roscore

在demo01_ws中:

source ./devel/setup.bash

rosrun learning_communication talker.

--------------------------------

之后会出现Hello World!1等字样,那恭喜你成功了

程序可以通过ctrl C来暂停

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值