packages & Catkin Workspaces

本文介绍了ROS(机器人操作系统)中的Catkin工作空间概念及其重要性。Catkin工作空间是用于管理和组织ROS软件项目的目录结构,它使得开发者能够有效地编写、修改及安装catkin包。此外,文章还解释了catkin包的组成以及它们如何构成完整的ROS项目。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包 & Catkin 工作空间

ROS提供了一个强劲的版本和包管理系统,我们称之为 catkin

ROS 的早起开发者 Willow Garage 根据办公室周围柳树的花(柳絮)取了 catkin 这个名字。

catkin 工作空间本质上是一个目录,我们可以在这里编写、修改并安装catkin包

通常,当你开发基于ROS 的机器人或项目时,你需要在单独的工作空间里完成,这个单独的工作空间需要保存大量不同的catkin包。

所有ROS软件组件都以catkin包的形式组织并发布。与工作空间类似,catkin包不过是目录,包括了大量资源,这些资源在一起,就构成了一些有用的模块。catkin包可能包括节点的源代码,有用的脚本、配置文件等等。

上一篇
下一篇

-- ~~ - rslidar_sdk -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ CMake Error at /opt/ros/noetic/share/catkin/cmake/catkin_workspace.cmake:100 (message): This workspace contains non-catkin packages in it, and catkin cannot build a non-homogeneous workspace without isolation. Try the 'catkin_make_isolated' command instead. Call Stack (most recent call first): CMakeLists.txt:83 (catkin_workspace) -- Configuring incomplete, errors occurred! See also "/home/ob/lio_ws/build/CMakeFiles/CMakeOutput.log". See also "/home/ob/lio_ws/build/CMakeFiles/CMakeError.log". Invoking "cmake" failed ob@ubuntu:~/lio_ws$ # toplevel CMakeLists.txt for a catkin workspace # catkin/cmake/toplevel.cmake cmake_minimum_required(VERSION 3.0.2) project(Project) cmake_policy(SET CMP0074 NEW) set(CATKIN_TOPLEVEL TRUE) # search for catkin within the workspace set(_cmd "catkin_find_pkg" "catkin" "${CMAKE_SOURCE_DIR}") execute_process(COMMAND ${_cmd} RESULT_VARIABLE _res OUTPUT_VARIABLE _out ERROR_VARIABLE _err OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE ) if(NOT _res EQUAL 0 AND NOT _res EQUAL 2) # searching fot catkin resulted in an error string(REPLACE ";" " " _cmd_str "${_cmd}") message(FATAL_ERROR "Search for 'catkin' in workspace failed (${_cmd_str}): ${_err}") endif() # include catkin from workspace or via find_package() if(_res EQUAL 0) set(catkin_EXTRAS_DIR "${CMAKE_SOURCE_DIR}/${_out}/cmake") # include all.cmake without add_subdirectory to let it operate in same scope include(${catkin_EXTRAS_DIR}/all.cmake NO_POLICY_SCOPE) add_subdirectory("${_out}") else() # use either CMAKE_PREFIX_PATH explicitly passed to CMake as a command line argument # or CMAKE_PREFIX_PATH from the environment if(NOT DEFINED CMAKE_PREFIX_PATH) if(NOT "$ENV{CMAKE_PREFIX_PATH}" STREQUAL "") if(NOT WIN32) string(REPLACE ":" ";" CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) else() set(CMAKE_PREFIX_PATH $ENV{CMAKE_PREFIX_PATH}) endif() endif() endif() # list of catkin workspaces set(catkin_search_path "") foreach(path ${CMAKE_PREFIX_PATH}) if(EXISTS "${path}/.catkin") list(FIND catkin_search_path ${path} _index) if(_index EQUAL -1) list(APPEND catkin_search_path ${path}) endif() endif() endforeach() # search for catkin in all workspaces set(CATKIN_TOPLEVEL_FIND_PACKAGE TRUE) find_package(catkin QUIET NO_POLICY_SCOPE PATHS ${catkin_search_path} NO_DEFAULT_PATH NO_CMAKE_FIND_ROOT_PATH) unset(CATKIN_TOPLEVEL_FIND_PACKAGE) if(NOT catkin_FOUND) message(FATAL_ERROR "find_package(catkin) failed. catkin was neither found in the workspace nor in the CMAKE_PREFIX_PATH. One reason may be that no ROS setup.sh was sourced before.") endif() endif() set(PCL_DIR "/usr/lib/x86_64-linux-gnu/cmake/pcl") find_package(PCL REQUIRED ) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) find_package(Eigen3 REQUIRED) include_directories(${EIGEN3_INCLUDE_DIRS}) catkin_workspace()
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值