1. 程式人生 > 其它 >Ubuntu error: Duration is out of dual 32-bit range(ROS報錯)

Ubuntu error: Duration is out of dual 32-bit range(ROS報錯)

技術標籤: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,再執行釋出器,成功。