自定义msg使用C++

在之前创建talker的src文件夹中创建person.cpp并编写如下

#include "ros/ros.h"

#include "learning_communication/Person.h"

#include

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

setlocale(LC_ALL,"");//避免乱码

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

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

ros::Publisher pub=n.advertise("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

效果如图:自定义msg使用C++_第1张图片

 

你可能感兴趣的:(ros,机器人,学习方法)