使用Pangolin绘制曲线,为什么执行make生成的可执行程序电脑会卡住,也不显示可视化的曲线,弹出的窗口一直卡住,同时终端显示:已放弃 (核心已转储)。版本为:ubuntu22.04,pangolin-0.6(0.5-0.8都试了)
#include <iostream>
#include <pangolin/pangolin.h>
int main(/*int argc, char* argv[]*/)
{
// Create OpenGL window in single line
pangolin::CreateWindowAndBind("Main",640,480);
// Data logger object
pangolin::DataLog log;
// Optionally add named labels
std::vector<std::string> labels;
labels.push_back(std::string("sin(t)"));
labels.push_back(std::string("cos(t)"));
labels.push_back(std::string("sin(t)+cos(t)"));
log.SetLabels(labels);
const float tinc = 0.01f;
// OpenGL 'view' of data. We might have many views of the same data.
pangolin::Plotter plotter(&log,0.0f,4.0f*(float)M_PI/tinc,-4.0f,4.0f,(float)M_PI/(4.0f*tinc),0.5f);
plotter.SetBounds(0.0, 1.0, 0.0, 1.0);
plotter.Track("$i");//坐标轴自动滚动
// Add some sample annotations to the plot(为区域着色)
plotter.AddMarker(pangolin::Marker::Vertical, 50*M_PI, pangolin::Marker::LessThan, pangolin::Colour::Blue().WithAlpha(0.2f) );
plotter.AddMarker(pangolin::Marker::Horizontal, 3, pangolin::Marker::GreaterThan, pangolin::Colour::Red().WithAlpha(0.2f) );
plotter.AddMarker(pangolin::Marker::Horizontal, 3, pangolin::Marker::Equal, pangolin::Colour::Green().WithAlpha(0.2f) );
pangolin::DisplayBase().AddDisplay(plotter);
float t = 0;
// Default hooks for exiting (Esc) and fullscreen (tab).
while( !pangolin::ShouldQuit() )
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
log.Log(sin(t),cos(t),sin(t)+cos(t));
t += tinc;
// Render graph, Swap frames and Process Events
pangolin::FinishFrame();
}
return 0;
}
根据您提供的信息,无法确定造成程序卡死的原因。以下是一些可能导致程序卡死的原因和相应的解决方案,供您参考:
Pangolin库版本不兼容问题。您提到已经尝试了多个版本的Pangolin库,但仍然无法解决问题。可能的原因是您的程序和Pangolin库之间存在兼容性问题。建议您检查程序和Pangolin库的版本是否匹配,并尝试使用其他版本的库。
OpenGL环境配置问题。Pangolin库需要OpenGL支持,如果您的OpenGL环境配置不正确,可能会导致程序无法正常运行。建议您检查OpenGL环境配置是否正确,并确保OpenGL库已经正确安装。
程序中的死循环问题。您的程序中有一个while循环,如果循环条件不满足,程序可能会陷入死循环,导致卡死。建议您检查程序中的while循环条件是否正确,并确保程序可以正常退出循环。
程序中的其他问题。您的程序中可能存在其他问题,例如内存泄漏、变量未初始化等,这些问题可能导致程序无法正常运行。建议您使用调试工具进行调试,查找问题并解决。
针对上述可能导致程序卡死的原因,可以尝试以下解决方案:
确认程序和Pangolin库的版本是否匹配,尝试使用其他版本的库。
检查OpenGL环境配置是否正确,确保OpenGL库已经正确安装。
检查程序中的while循环条件是否正确,并确保程序可以正常退出循环。
使用调试工具进行调试,查找问题并解决。
不知道你这个问题是否已经解决, 如果还没有解决的话:sudo apt install libglew-dev cmake libboost-dev libboost-thread-dev libboost-filesystem-dev libeigen3-dev -y