cmakelist与package.xml
参照链接:link.
cmakelist:CPP文件编译管理文档
cmake_minimum_required() #CMake的版本号
project() #项目名称
find_package() #找到编译需要的其他CMake/Catkin package
catkin_python_setup() #catkin新加宏,打开catkin的Python Module的支持
add_message_files() #catkin新加宏,添加自定义Message/Service/Action文件
add_service_files()
add_action_files()
generate_message() #catkin新加宏,生成不同语言版本的msg/srv/action接口
catkin_package() #catkin新加宏,生成当前package的cmake配置,供依赖本包的其他软件包调用
add_library() #生成库
add_executable() #生成可执行二进制文件
add_dependencies() #定义目标文件依赖于其他目标文件,确保其他目标已被构建
target_link_libraries() #链接
catkin_add_gtest() #catkin新加宏,生成测试
install() #安装至本机
package.xml:感觉像是说明性文档
三个标签使用比较频繁: depend、build_depend、exec_depend
<pacakge> 根标记文件
<name> 包名
<version> 版本号
<description> 内容描述
<maintainer> 维护者
<license> 软件许可证
<buildtool_depend> 编译构建工具,通常为 catkin
<depend> 指定依赖项为编译、导出、运行需要的依赖,最常用
<build_depend> 编译依赖项
<build_export_depend> 导出依赖项
<exec_depend> 运行依赖项
<test_depend> 测试用例依赖项
<doc_depend> 文档依赖项
service通信协议
概念:以请求响应的方式实现不同节点之间数据交互的通信模式。用于*偶然的*、对*时时性*有要求、有一定逻辑处理需求的数据传输场景。
官网学习:link.
ROS中坐标旋转
博客:link
topic和subcribe通信延时设置
callback费时情况下如何保证处理最新的数据:link
自己通过尝试的结果发现:sub的消息长度设置为5时,如果pub的消息很快,sub会一下拿到5个数据,等到把这些数据全部处理完后,才会重新接受新的数据。更简单的说:如果pub1ms,sub10ms,那么正常情况下会出现3,4,5,6,7的数据,然后会突然跳转到但其那得新的数据序列53,54,55,56,57等,以此往复。
非常关键的一点:ros处理新数据的时候不是我之前以为的直接打断当前施法,而是一个一个慢慢处理完成。