mvsim package doesn't compile via catkin_make with the following error message:
[ 82%] Building CXX object mvsim/libmvsim/CMakeFiles/mvsim.dir/src/Sensors/LaserScanner.cpp.o
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp: In member function ‘virtual void mvsim::LaserScanner::loadConfigFrom(const rapidxml::xml_node<char>*)’:
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:66:20: error: ‘struct mrpt::utils::ContainerReadOnlyProxyAccessor<std::vector<float> >’ has no member named ‘resize’
m_scan_model.scan.resize(nRays);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:67:26: error: ‘struct mrpt::utils::ContainerReadOnlyProxyAccessor<std::vector<char> >’ has no member named ‘resize’
m_scan_model.validRange.resize(nRays);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp: In member function ‘virtual void mvsim::LaserScanner::simul_post_timestep(const mvsim::TSimulContext&)’:
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:199:13: error: ‘struct mrpt::utils::ContainerReadOnlyProxyAccessor<std::vector<float> >’ has no member named ‘resize’
scan.scan.resize(nRays);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:200:19: error: ‘struct mrpt::utils::ContainerReadOnlyProxyAccessor<std::vector<char> >’ has no member named ‘resize’
scan.validRange.resize(nRays);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:211:23: error: assignment of read-only location ‘scan.mrpt::obs::CObservation2DRangeScan::validRange.mrpt::utils::ContainerReadOnlyProxyAccessor<STLCONTAINER>::operator[]<std::vector<char> >(((int)i))’
scan.validRange[i] = callback.m_hit ? 1:0;
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:213:30: error: invalid initialization of reference of type ‘float&’ from expression of type ‘const value_type {aka const float}’
float &range = scan.scan[i];
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:237:17: error: ‘struct mrpt::utils::ContainerReadOnlyProxyAccessor<std::vector<float> >’ has no member named ‘assign’
lastScan->scan.assign(nRays,maxRange);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:238:23: error: ‘struct mrpt::utils::ContainerReadOnlyProxyAccessor<std::vector<char> >’ has no member named ‘assign’
lastScan->validRange.assign(nRays, 0);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:248:23: error: assignment of read-only location ‘lastScan->mrpt::obs::CObservation2DRangeScan::scan.mrpt::utils::ContainerReadOnlyProxyAccessor<STLCONTAINER>::operator[]<std::vector<float> >(((int)i))’
lastScan->scan[i] = std::min(lastScan->scan[i], it->scan[i]);
^
/home/jun/mrpt_ros_packages/src/mvsim/libmvsim/src/Sensors/LaserScanner.cpp:249:29: error: assignment of read-only location ‘lastScan->mrpt::obs::CObservation2DRangeScan::validRange.mrpt::utils::ContainerReadOnlyProxyAccessor<STLCONTAINER>::operator[]<std::vector<char> >(((int)i))’
lastScan->validRange[i] = 1; // valid
^
make[2]: *** [mvsim/libmvsim/CMakeFiles/mvsim.dir/src/Sensors/LaserScanner.cpp.o] Error 1
make[1]: *** [mvsim/libmvsim/CMakeFiles/mvsim.dir/all] Error 2
make: *** [all] Error 2
Problem
mvsim package doesn't compile via
catkin_make
with the following error message:Reason
After this commit https://github.com/MRPT/mrpt/commit/12c210cefd8edf33909a590b2db8efdb1fc079a2 the interface has changed.
Proposed solution
After briefly looking over the changes in original commit I think this should fix the problem https://github.com/Logrus/mvsim/commit/ff167a02387e72c5498e99197e1e29b2001a08eb but it is worth looking over the commit, since I am not really familiar with this part.