前言
问题1:提示未安装shapely、numba、easydict、jsk package等依赖项问题2:Ubuntu18报错ValueError: list.remove(x): x not in list问题3:报错ModuleNotFoundError: No module named 'utils.box_overlaps'问题4:选择by display type添加BoundBoxArray之后没有3D框显示
前言这里记录一下在阅读站内文章《无人驾驶汽车系统入门(二十八)——基于VoxelNet的激光雷达点云车辆检测及ROS实现》时遇到的问题及对应的解决方法。
值得一提的是,本文在复现过程中使用anaconda3预先安装python3.7.3、cuda10.0、cudnn7.5.4、TensorFlow1.8.0以及opencv3.如果不使用anaconda安装python3或者使用python2的话,本文记录的错误解决方案可能不适用。本文默认TensorFlow、OpenCV和ROS已安装好。
对于Ubuntu18版本,运行以下程序进行安装:
sudo pip install shapely sudo pip install numba sudo pip install easydict sudo apt-get install ros-melodic-jsk-recognition-msgs sudo apt-get install ros-melodic-jsk-rqt-plugins sudo apt-get install ros-melodic-jsk-visualization
对于Ubuntu16版本,运行以下程序进行安装:
sudo pip install shapely sudo pip install numba sudo pip install easydict sudo apt-get install ros-kinetic-jsk-recognition-msgs sudo apt-get install ros-kinetic-jsk-rqt-plugins sudo apt-get install ros-kinetic-jsk-visualization问题2:Ubuntu18报错ValueError: list.remove(x): x not in list
错误代码为
Traceback (most recent call last): File "/home/voxelnet_ws/src/voxelnetros/script/voxelnet_ros.py", line 20, infrom model import RPN3D File "/home/voxelnet_ws/src/voxelnetrosscript/../voxelnet/model/__init__.py", line 12, in from model.model import * File "/home/voxelnet_ws/src/voxelnetros/script/../voxelnet/model/model.py", line 6, in sys.path.remove('/opt/ros/knitic/lib/python2.7/dist-packages') ValueError: list.remove(x): x not in list
问题主要出在上文代码倒数第二行
sys.path.remove('/opt/ros/knitic/lib/python2.7/dist-packages')
在使用Ubuntu18时,提到的路径应为
/opt/ros/melodic/lib/python2.7/dist-packages
原因在于ros目录里面Ubuntu16对应knitic,Ubuntu18对应melodic。Ubuntu20对应noetic可能也会存在类似问题,但本文没有验证。
修改方法为修改VoxelNetRos/voxelnet/model/model.py的代码,第8行
sys.path.remove('/opt/ros/knitic/lib/python2.7/dist-packages')
改为
sys.path.remove('/opt/ros/melodic/lib/python2.7/dist-packages')
问题3:报错ModuleNotFoundError: No module named ‘utils.box_overlaps’
错误代码为
Traceback (most recent call last): File "voxelnet_ros.py", line 19, infrom model import RPN3D File "../voxelnet/model/__init__.py", line 12, in from model.model import * File "../voxelnet/model/model.py", line 11, in from utils import * File "../voxelnet/utils/__init__.py", line 10, in from utils.box_overlaps import * ModuleNotFoundError: No module named 'utils.box_overlaps'
问题出在程序无法导入pyc文件,解决方法为修改VoxelNetRos/script/voxelnet_ros.py的代码,在开头import部分加入两行代码
import pyximport pyximport.install()
重新运行
python3 voxelnet_ros.py & python3 pub_kitti_point_cloud.py
问题解决。
问题4:选择by display type添加BoundBoxArray之后没有3D框显示解决方法:在BoundBoxArray下拉菜单里,关联对应的topic名称



