我正在使用连接到ROS的软件,当我通过Cmake编译软件包时,遇到错误“找不到ROS软件包”
我已经将ROS目录添加到“ CMAKE_PREFIX_PATH”,但是失败了。并且我检查了ROS软件包,找不到相关文件。
错误:
CMake Error at applications/plugins/SoftRobots/CMakeLists.txt:190
(find_package):
By not providing "FindROS.cmake" in CMAKE_MODULE_PATH this project
has asked CMake to find a package configuration file provided by "ROS",
but CMake did not find one.
Could not find a package configuration file provided by "ROS" with any of
the following names:
ROSConfig.cmake
ros-config.cmake
Add the installation prefix of "ROS" to CMAKE_PREFIX_PATH or set "ROS_DIR"
to a directory containing one of the above files. If "ROS" provides a
separate development package or SDK, be sure it has been installed.
Cmake.list
find_package(ROS QUIET REQUIRED)
message(STATUS "ROS found: ${ROS_FOUND}")
答案 0 :(得分:0)
ROS不是单个软件包,而是软件包的集合。 ROS只是与主要智能软件包ros-${ROS_DISTRO}-desktop-full
相关的名称,与CMake无关。
通常,有人将其代码转换为ROS,以便他们可以访问具有预建消息类型和库的网络通信的内置功能,以使用硬件访问传感器(尽管您不需要机器人硬件即可使用ROS)。 / p>
ROS仅仅是通信的抽象。如果要在项目中使用ROS中的库,则建议您使用构建系统catkin
。 catkin
是links together的所有ROS软件包,因此您可以在CMake文件中使用它们。
我建议您关注this link,那里有人显示其CMakeLists.txt文件。您需要了解的重要部分是:
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
genmsg
message_generation
depend_1
depend_2
)
catkin_package(
INCLUDE_DIRS include
LIBRARIES ${PROJECT_NAME}
CATKIN_DEPENDS
DEPENDS system_lib
)
include_directories(
include
${catkin_INCLUDE_DIRS}
)
然后,在定义可执行文件后,最后,
target_link_libraries(run_${PROJECT_NAME}
${PROJECT_NAME}
${catkin_LIBRARIES}
)
我应该注意,我没有测试任何此CMake进行验证。这里的重点是说明如何从ROS生态系统中获取所需的软件包。正确设置CMake之后,您可以简单地#include
正确的头文件。发生的情况是CMake正在“调用” catkin
以查找所需的软件包(有关更多详细信息,请参见上面的链接)。听起来,鉴于您正在尝试“导入ROS”的事实,您对ROS的经验不足(没关系,我也是新手),并且这不是ROS软件包,而是单独的ROS软件包。使用ROS生态系统中提供的库可以简化该项目。不过,我不得不说,由于您距离采用ROS的正确方法还有很长的路要走,因此我不确定要如何提供更多帮助,因为您没有就为何首先要使用ROS的问题提供详细信息。 / p>
(如果这回答了您的问题,则绿色复选标记很友好:)