gpt4 book ai didi

image - 无法从 cpp 代码 : `Segmentation fault (core dumped)` 运行 image_transport

转载 作者:太空宇宙 更新时间:2023-11-03 16:58:58 24 4
gpt4 key购买 nike

我在 CMake 文件和 packake.xml 中都很好地包含了 image_transport。我在 ubuntu 16 上使用 ROS Kineltic,尽管我在 ubuntu 14 上使用 ros indigo 和 jade 遇到了同样的问题。

我的CMake文件如下:

find_package(catkin REQUIRED COMPONENTS
cv_bridge
image_transport
roscpp
rospy
std_msgs
message_generation
genmsg
)

generate_messages(
DEPENDENCIES
std_msgs
)

catkin_package(
CATKIN_DEPENDS cv_bridge image_transport roscpp rospy std_msgs message_generation
)
include_directories(
${catkin_INCLUDE_DIRS}
)
....

虽然我的 package.xml

<buildtool_depend>catkin</buildtool_depend>
<build_depend>cv_bridge</build_depend>
<build_depend>image_transport</build_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>message_generation</build_depend>
<run_depend>cv_bridge</run_depend>
<run_depend>image_transport</run_depend>
<run_depend>roscpp</run_depend>
<run_depend>rospy</run_depend>
<run_depend>std_msgs</run_depend>
<run_depend>message_runtime</run_depend>
<run_depend>message_generation</run_depend>
<run_depend>image_transport</run_depend>

在我的 .cpp 文件中

#include <ros/ros.h>
#include <image_transport/image_transport.h>
.....
int main(int argc, char **argv)
{

ros::init(argc, argv, "imagegraber");
ros::NodeHandle nodea;

image_transport::ImageTransport it(nodea);

image_transport::Subscriber sub = it.subscribe("/pg_15508342/image_raw", 1, imageCallback);


ros::spin();
return 0;
}

然而,当我运行我的代码时,我收到了Segmentation fault (core dumped)....可能是什么问题?代码在 image_transport::ImageTransport it(nodea);

崩溃

请注意,我可以使用命令行运行 image_transport:rosrun image_transport republish raw in:=/pg_15508342/image_raw raw out:=/newim。还能够运行 image_view

最佳答案

我想我现在可以看出问题的根源了。它与外部ros包含的Boost有关。事实上,我应该在问题中报告我的完整 CMakeLists.txt,但我最初并没有认为这个问题有任何相关性......

在我的 CMakeLists.txt 中,我包含了我自己的提升(从源代码下载的最新版本)

SET (BOOST_DIR "/home/polar/soft/lib/boost/boost_1_61_0")
SET (BOOST_INCLUDEDIR "/home/polar/soft/lib/boost/boost_1_61_0/build/include")
SET (BOOST_LIBRARYDIR "/home/polar/soft/lib/boost/boost_1_61_0/build/lib")

FIND_PACKAGE(Boost 1.61.0 REQUIRED thread)
if (NOT Boost_FOUND)
message(FATAL_ERROR " Fatal error: Boost (version >= 1.55) required.")
else()
message(STATUS "Setting up BOOST")
message(STATUS " Includes - ${Boost_INCLUDE_DIRS}")
message(STATUS " Library - ${Boost_LIBRARY_DIRS}")
include_directories(${Boost_INCLUDE_DIRS})
link_directories(${Boost_LIBRARY_DIRS})
endif (NOT Boost_FOUND)

因此,我在 image_transport::ImageTransport it(nh); 处遇到了段错误。但是,将上面的 CMake 代码替换为 only 之后

FIND_PACKAGE(Boost)

我不再有那个段错误。我应该更多地关注 ros 给出的关于 ROS 的 Boost 和我的独立 Boost 之间最终冲突的警告消息....

因此另一个问题,如何将独立的 Boost 与 ROS catkin 一起使用??

关于image - 无法从 cpp 代码 : `Segmentation fault (core dumped)` 运行 image_transport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38429036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com