1、创建消息文件
在功能包中创建msg文件夹并在文件夹中创建消息文件exmsage.msg
Header header
int32 demo_int
float64 demo_double
2、修改package.xml
<build_depend>roscpp</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>rosmsg</build_depend>
<build_export_depend>roscpp</build_export_depend>
<build_export_depend>std_msgs</build_export_depend>
<build_export_depend>rosmsg</build_export_depend>
<exec_depend>roscpp</exec_depend>
<exec_depend>std_msgs</exec_depend>
<exec_depend>rosmsg</exec_depend>
<build_depend>message_generation</build_depend>
<exec_depend>message_runtime</exec_depend>
3、修改CmakeList.txt
3.1 一处
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
message_generation
)
3.2 二处
add_message_files(
FILES
exmsage.msg
# Message2.msg
)
3.3 三处
generate_messages(
DEPENDENCIES
std_msgs
)
3.4 四处
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES example_ros_msg
CATKIN_DEPENDS roscpp rosmsg std_msgs message_runtime
# DEPENDS system_lib
)
4、编译
catkin_make
不出意外的话会在工作空间的devel中会生成.h文件
5、使用
#include <ros/ros.h>
#include <example_ros_msg/exmsage.h>
#include<math.h>
int main(int argc, char * argv[])
{
ros::init(argc, argv, "example_msg_plu");
ros::NodeHandle n;
ros::Publisher pub = n.advertise<example_ros_msg::exmsage>("examplemsg_plu",1);
example_ros_msg::exmsage msg;
ros::Rate naptim(1.0);
msg.header.stamp = ros::Time::now();
msg.header.frame_id = "base_frame";
msg.header.seq = 0;
msg.demo_int = 1;
msg.demo_double = 100.0;
double sqrt_arg;
while (ros::ok())
{
msg.header.seq++;
msg.header.stamp = ros::Time::now();
msg.demo_int*=2.0;
sqrt_arg = msg.demo_double;
msg.demo_double = sqrt(sqrt_arg);
pub.publish(msg);
naptim.sleep();
}
// ros::spin();
// ros::shutdown();
return 0;
}
6、修改CmakeList
add_executable(example_mag_plu src/examplemsg_pub.cpp)
target_link_libraries(example_mag_plu
${catkin_LIBRARIES}
)