Image 无法从cpp代码运行图像_传输:`分段错误(堆芯转储)`
我在Image 无法从cpp代码运行图像_传输:`分段错误(堆芯转储)`,image,ubuntu,segmentation-fault,ros,catkin,Image,Ubuntu,Segmentation Fault,Ros,Catkin,我在CMake文件和packake.xml中都很好地包含了image\u transport。我在Ubuntu16上使用RosKineltic,不过在Ubuntu14上使用RosIndigo和jade时也遇到了同样的问题 我的CMake文件如下所示: find_package(catkin REQUIRED COMPONENTS cv_bridge image_transport roscpp rospy std_msgs message_generation gen
CMake
文件和packake.xml
中都很好地包含了image\u transport
。我在Ubuntu16上使用RosKineltic,不过在Ubuntu14上使用RosIndigo和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>
柳絮
cv_桥
图像传输
roscpp
罗西
标准msgs
消息生成
cv_桥
图像传输
roscpp
罗西
标准msgs
消息运行时
消息生成
图像传输
在我的.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;
}
#包括
#包括
.....
int main(int argc,字符**argv)
{
ros::init(argc,argv,“图像捕捉器”);
ros::NodeHandle nodea;
图像传输:图像传输it(nodea);
image\u transport::Subscriber sub=it.subscribe(“/pg\u 15508342/image\u raw”,1,imageCallback);
ros::自旋();
返回0;
}
然而,当我运行代码时,我收到分段错误(内核转储)
。。。。有什么问题吗?代码在image\u transport::ImageTransport it(nodea)处崩溃代码>
请注意,我可以使用命令行运行图像传输:rosrun图像传输重新发布原始输入:=/pg\u 15508342/image\u原始输出:=/newim
。还可以运行image\u view
我想我现在可以看到问题的根源了。这与来自外部ros的增压有关。
事实上,我应该在问题中报告我的完整CMakeLists.txt,但我最初根本不认为这个问题有任何关联
在我的CMakeLists.txt中,我包括了我自己的boost(从源代码下载的最新版本),如
因此,我在image\u transport::ImageTransport it(nh)中得到了分割错误代码>。但是,在将上述CMake代码替换为
FIND_PACKAGE(Boost)
我不再有那种分割错误了。我应该更加注意ros发出的警告信息,即ros的提升和我的独立提升之间的最终冲突
因此,另一个问题是,如何将独立的Boost与ROS柳絮一起使用
FIND_PACKAGE(Boost)