ROS 自定义 话题消息与使用 C++实现

自定义 话题消息与使用 C++实现

/
learning_topic/Person personmsg
/

Person.msg

string name
uint8 sex
uint8 age


uint8 woman =0
uint8 man =1
uint8 manplus =2

package.xml

 <build_depend>message_generation</build_depend>
 <exec_depend>message_runtime</exec_depend>

package.xml

CMakeListen.txt

find_package(catkin REQUIRED COMPONENTS
  geometry_msgs
  roscpp
  rospy
  std_msgs
  message_generation
)

CMakeListen

add_message_files(
   FILES
  Person.msg
 )

CMakeListen

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES learning_topic
  CATKIN_DEPENDS geometry_msgs roscpp rospy std_msgs message_runtime
#  DEPENDS system_lib
)

CMakeListen

Person_Publisher.cpp

/*
 * learning_topic/Person  personmsg
 */

#include "ros/ros.h"
#include "learning_topic/Person.h"
using namespace ros;
int main(int argc, char **argv){
    init(argc , argv , "Person_Publisher");
    NodeHandle node;
    Publisher pub = node.advertise<learning_topic::Person>("/person_info",100);

    Rate rate(5);

    while (ok()){
        learning_topic::Person msg;
        msg.name = "Lee";
        msg.age = 24;
        msg.sex = learning_topic::Person::man;
        pub.publish(msg);
        ROS_INFO("publish message is ok: name:%s age:%d sex: %d",
                msg.name.c_str(), msg.age, msg.sex);
        rate.sleep();
    }
    return 0;
}

Person_Subscriber.cpp

/*
 * learning_topic/Person  personmsg
 */
#include "ros/ros.h"
#include "learning_topic/Person.h"
using namespace ros;

void PersonCallBack(const learning_topic::Person::ConstPtr &msg){
    ROS_INFO("subscribe this messgae:[name:%s  age:%d  sex:%d] ",
            msg->name.c_str(), msg->age, msg->sex);
}

int main(int argc, char **argv){
    init(argc , argv , "Person_Subscriber");
    NodeHandle node;
    Subscriber sbu = node.subscribe("/person_info",100, PersonCallBack);

    ros::spin();
    return 0;
}

CMakeListen.txt

add_executable(Person_Publisher src/Person_Publisher.cpp)
add_executable(Person_Subscriber src/Person_Subscriber.cpp)
add_dependencies(Person_Publisher ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
add_dependencies(Person_Subscriber ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
target_link_libraries(Person_Publisher
   ${catkin_LIBRARIES}
 )

target_link_libraries(Person_Subscriber
   ${catkin_LIBRARIES}
 )

在这里插入图片描述运行结果:
运行结果

原创文章 44 获赞 8 访问量 3880

猜你喜欢

转载自blog.csdn.net/weixin_44692299/article/details/104305039