ROS学习之⾃定义msg类型
林觉民后代
1. 创建msg⽂件
cd ~/catkin_ws/src/my_package
mkdir msg
echo "string first_name
string last_name
uint8 age
uint32 score" > msg/Num.msg
2. 更改l⽂件
软件包编译过程中会根据msg ⽂件⽣成其它语⾔(C++,Python)的源代码,编译该软件包时会⽤到ros⾃带的
message_generation包,⽽在运⾏使⽤该msg的节点中⼜会使⽤到ros⾃带的message_runtime包,所以需要在l ⽂件中添加下⾯两条语句:
<build_depend>message_generation</build_depend>
<run_depend>message_runtime</run_depend>
3. 更改⽂件
message_generation 包也是编译该软件包时的依赖包,需要在find_package()函数中指明。
更改find_package()函数:
更改catkin_package()函数:
在CATKIN_DEPENDS后⾯添加运⾏依赖项 message_runtime:
指定需要转换的msg⽂件
官⽹说⼿动添加msg⽂件以后需要让CMake知道在什么时候重新配置项⽬,所以添加generate_messages()函数
抬头望见北斗星
编译九龙海战
女士征婚个人电话回到catkin_ws⽬录下:
catkin_make
编译之后就会⽣成Num.h头⽂件,所在⽬录如下:
测试:
rosmsg show my_package/Num
凉拌土豆
<⽂件内容
cmake_minimum_required(VERSION 2.8.3)
project(my_package)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
#添加需要依赖的message_generation包
message_generation
半个世纪的诺言)
#指定需要转换的msg⽂件
add_message_files(FILES Num.msg)
#只有调⽤了下⾯的函数最后才会⽣成 Num.h ⽂件
generate_messages()
catkin_package(
INCLUDE_DIRS include
LIBRARIES my_package
党员工作小结
CATKIN_DEPENDS roscpp rospy std_msgs message_runtime #添加运⾏时依赖包message_runtime DEPENDS system_lib
)
include_directories(
# include山东大汉
${catkin_INCLUDE_DIRS}
)
add_executable(publisher_Node src/publisher.cpp)
target_link_libraries(publisher_Node ${catkin_LIBRARIES})
add_executable(subscriber_Node src/subscriber.cpp)
target_link_libraries(subscriber_Node ${catkin_LIBRARIES})