学习视频:
消息定义:
创建人这个信息消息;
进入之前创建的lt功能包中,新建一个msg文件夹,在此打开终端,下达指令touch Person.msg
将下列信息写入Person.msg中,这就是数据接口的定义;
string name
uint8 sex
uint8 age
uint8 unknown = 0
uint8 male = 1
uint8 female = 2
再针对数据接口定义设置一些编译规则,大致步骤如下方,第一步上方已经完成;
将下方依赖塞入package.xml中;
<build_depend>message_generation</build_depend> build编译依赖 动态产生msg的依赖的功能包
<exec_depend>message_runtime</exec_depend> exec运行依赖 依赖动态msgruntime运行时依赖
再对CMakeList做添加;
第一个: message_generation
第二个:
add_message_files(
FILES
Person.msg
)
#将Person.msg作为定义的消息接口
generate_messages(
DEPENDENCIES
std_msgs
)
#表示Person.msg作为定义时所需要ros内要用到依赖的库包;
第三个:
message_runtime将依赖放入
完成上述三步就可以回到根目录进行编译;
编译完msg定义后,再将源码放入功能包中
放入源码后还要加入CMake_List的配置
add_executable(person_publisher src/person_publisher.cpp)
target_link_libraries(person_publisher ${catkin_LIBRARIES})
add_dependencies(person_publisher ${PROJECT_NAME}_generate_messages_cpp)
add_executable(person_subscriber src/person_subscriber.cpp)
target_link_libraries(person_subscriber ${catkin_LIBRARIES})
add_dependencies(person_subscriber ${PROJECT_NAME}_generate_messages_cpp)
返回根目录catkin_make,编译完记得设置变量环境source devel/setup.bash
中间出现一点bug,我换个终端需要重新在根目录运行一次变量环境设置才能查找得到我工作空间下对应的功能包,不知道为啥;
只能说每次找不到功能包就source devel/setup.bash