环境:ros melodic
参考:
Installation — elevation_mapping_cupy documentation
https://github.com/leggedrobotics/elevation_mapping_cupy
https://github.com/leggedrobotics/elevation_mapping_cupy/issues/41
1.按照官方文档安装,pip3对应版本安装不上的删除版本号
2.opencv需要自己编译opencv4版本的
3.本人安装的cuda为10.2,对应pytorch安装为
pip3 install torch==1.8.1+cu102 torchvision==0.9.1+cu102 torchaudio==0.8.1 --extra-index-url https://download.pytorch.org/whl/cu102
4.踩坑点:
elevation_mapping_cupy
在编译完之后运行报错如下
[elevation_mapping-6] process has died [pid 12587, exit code -6, cmd /home/fsy/code/ocs2_ws/devel/lib/elevation_mapping_cupy/elevation_mapping_node __name:=elevation_mapping __log:=/home/fsy/.ros/log/f1bc0966-6211-11ef-9197-ac675d6d428c/elevation_mapping-6.log].
log file: /home/fsy/.ros/log/f1bc0966-6211-11ef-9197-ac675d6d428c/elevation_mapping-6*.log
寻找bug过程.......
切换成编译为debug模式
catkin build elevation_mapping_cupy --cmake-args -DCMAKE_BUILD_TYPE=Debug
在turtlesim_simple_example.launch文件中加入debug参数
<node pkg="elevation_mapping_cupy" type="elevation_mapping_node" name="elevation_mapping" output="screen" launch-prefix="">
<rosparam command="load" file="$(find elevation_mapping_cupy)/config/core/core_param.yaml"/>
<rosparam command="load" file="$(find elevation_mapping_cupy)/config/setups/turtle_bot/turtle_bot_simple.yaml"/>
</node>
改为
<node pkg="elevation_mapping_cupy" type="elevation_mapping_node" name="elevation_mapping" output="screen" launch-prefix="gdb -ex run --args">
<rosparam command="load" file="$(find elevation_mapping_cupy)/config/core/core_param.yaml"/>
<rosparam command="load" file="$(find elevation_mapping_cupy)/config/setups/turtle_bot/turtle_bot_simple.yaml"/>
</node>
进入gdb,在程序挂掉后执行backtrace,定位到
Thread 1 "elevation_mappi" received signal SIGSEGV, Segmentation fault.
0x00007ffff66ad15d in std::istream::sentry::sentry(std::istream&, bool) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
(gdb) backtrace
#0 0x00007ffff66ad15d in std::istream::sentry::sentry(std::istream&, bool) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#1 0x00007ffff66ae2bb in std::istream::read(char*, long) () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#2 0x00007fffdc593e68 in geos::io::WKBReader::readGeometry() () from /usr/lib/x86_64-linux-gnu/libgeos-3.6.2.so
#3 0x00007fff5728e236 in GEOSGeomFromWKB_buf_r () from /home/fsy/.local/lib/python3.6/site-packages/shapely/.libs/libgeos_c-a68605fd.so.1.13.1
#4 0x00007fffd3e64dae in ffi_call_unix64 () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#5 0x00007fffd3e6471f in ffi_call () from /usr/lib/x86_64-linux-gnu/libffi.so.6
#6 0x00007fff9db965a4 in _ctypes_callproc () from /usr/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so
#7 0x00007fff9db96d34 in ?? () from /usr/lib/python3.6/lib-dynload/_ctypes.cpython-36m-x86_64-linux-gnu.so
#8 0x00007ffff7692768 in PyObject_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#9 0x00007ffff75459fb in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#10 0x00007ffff7691f29 in _PyObject_FastCallDict () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#11 0x00007ffff75a6ec8 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#12 0x00007ffff75ad303 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#13 0x00007ffff75a5803 in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#14 0x00007ffff75a72be in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#15 0x00007ffff75ad303 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#16 0x00007ffff75a6a0f in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#17 0x00007ffff75a74ce in PyEval_EvalCodeEx () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#18 0x00007ffff75a824b in PyEval_EvalCode () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#19 0x00007ffff75b355d in ?? () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#20 0x00007ffff763e761 in PyCFunction_Call () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#21 0x00007ffff75afb20 in _PyEval_EvalFrameDefault () from /usr/lib/x86_64-linux-gnu/libpython3.6m.so.1.0
#22 0x00007ffff75a6a0f in ?? () from /usr/lib/x86_64-linux-gnu/libpython3