Ubuntu error: Duration is out of dual 32-bit range(ROS報錯)
阿新 • • 發佈:2021-02-07
技術標籤:ubuntu
在ROS系統中需要寫一個訊息釋出器和訂閱器,在釋出器中放入之前已經寫好的識別綠色圓盤的程式,在執行時遇到以下報錯:
報錯
terminate called after throwing an instance of ‘std::runtime_error’
what(): Duration is out of dual 32-bit range
已放棄(核心已轉儲)
問題原因
我的問題在於:
double rate = capture.get(CAP_PROP_FPS);//獲取視訊檔案的幀率 //double rate=10; ros::Rate loop_rate(rate); int delay = cvRound(1000.00 / rate);
猜測問題原因主要是:
在獲取視訊的頻率時,存在rate是0的可能性,那麼1000.0/rate接近於無窮大,則會出現上述報錯。
解決方法
該段程式碼修改為:
//double rate = capture.get(CAP_PROP_FPS);//獲取視訊檔案的幀率
double rate=10;
ros::Rate loop_rate(rate);
int delay = cvRound(1000.00 / rate);
再重新catkin_make,再執行釋出器,成功。