在之前创建talker的src文件夹中创建person.cpp并编写如下
#include "ros/ros.h"
#include "learning_communication/Person.h"
#include <sstream>
int main(int argc,char *argv[]){
setlocale(LC_ALL,"");//避免乱码
ros::init(argc,argv,"person");//初始化节点
ros::NodeHandle n;//创建句柄
ros::Publisher pub=n.advertise<learning_communication::Person>("chatting",1000);//创建发布者对象
ros::Rate rate(2);
learning_communication::Person person;
person.name="Bob";
person.age=18;
person.height=180.5;//此处与上文中score位置对应,可自行修改
ros::Duration(0.5).sleep();
while(ros::ok()){
pub.publish(person);
ROS_INFO("name:%s age:%d height:%.1f",person.name.c_str(),person.age,person.height);//".c_str()"转换为字符串
person.age++;
rate.sleep();
ros::spinOnce();
}
return 0;
}
之后在CMakeList.txt中按照格式添加各项依赖和目标
add_executable(person src/person.cpp)
target_link_libraries(person
${catkin_LIBRARIES}
)
add_dependencies(person ${PROJECT_NAME}_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
在demo01_ws编译catkin_make
source ./devel/setup.bash
此处给出两种输出模式
第一种直接利用ROS_INFO(程序中已有)输出
直接rosrun learning_communication
第二种利用rostopic:
再开一个终端,先进行source ./devel/setup.bash
再在上面第一种程序rosrun运行时进行rostopic echo chatting
效果如图:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)