object Check(object oq0, object oq1, object odq0, object odq1, dReal timeelapsed, IntervalType interval=IT_Closed, uint32_t options=0xffff, bool filterreturn=false)//, ConstraintFilterReturnPtr filterreturn = ConstraintFilterReturnPtr())
 {
     std::vector<dReal> q0 = ExtractArray<dReal>(oq0);
     std::vector<dReal> q1 = ExtractArray<dReal>(oq1);
     std::vector<dReal> dq0 = ExtractArray<dReal>(odq0);
     std::vector<dReal> dq1 = ExtractArray<dReal>(odq1);
     if( filterreturn ) {
         ConstraintFilterReturnPtr pfilterreturn(new ConstraintFilterReturn());
         _pconstraints->Check(q0, q1, dq0, dq1, timeelapsed, interval, options, pfilterreturn);
         boost::python::dict ofilterreturn;
         ofilterreturn["configurations"] = toPyArray(pfilterreturn->_configurations);
         ofilterreturn["configurationtimes"] = toPyArray(pfilterreturn->_configurationtimes);
         ofilterreturn["invalidvalues"] = toPyArray(pfilterreturn->_invalidvalues);
         ofilterreturn["invalidvelocities"] = toPyArray(pfilterreturn->_invalidvelocities);
         ofilterreturn["fTimeWhenInvalid"] = pfilterreturn->_fTimeWhenInvalid;
         ofilterreturn["returncode"] = pfilterreturn->_returncode;
         ofilterreturn["reportstr"] = pfilterreturn->_report.__str__();
         return ofilterreturn;
     }
     else {
         return object(_pconstraints->Check(q0, q1, dq0, dq1, timeelapsed, interval, options));
     }
 }
 object GetCameraImage(int width, int height, object extrinsic, object oKK)
 {
     vector<float> vKK = ExtractArray<float>(oKK);
     if( vKK.size() != 4 ) {
         throw openrave_exception("KK needs to be of size 4");
     }
     SensorBase::CameraIntrinsics KK(vKK[0],vKK[1],vKK[2],vKK[3]);
     vector<uint8_t> memory;
     if( !_pviewer->GetCameraImage(memory, width,height,RaveTransform<float>(ExtractTransform(extrinsic)), KK) ) {
         throw openrave_exception("failed to get camera image");
     }
     std::vector<npy_intp> dims(3); dims[0] = height; dims[1] = width; dims[2] = 3;
     return toPyArray(memory,dims);
 }