PointNetGPD代码复现

2023-05-16

0、安装分析

ps.应该安装pcl1.9+tk8.1。这个导致后面python-pcl改了配置

Ubuntu版本pcl版本vtk版本
18.041.9.18.2.0

1、pcl1.9安装

1.1 安装依赖

sudo apt-get update  
sudo apt-get install git build-essential linux-libc-dev
sudo apt-get install cmake cmake-gui
sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
sudo apt-get install mpi-default-dev openmpi-bin openmpi-common
sudo apt-get install libflann1.9 libflann-dev
sudo apt-get install libeigen3-dev 
sudo apt-get install libboost-all-dev
sudo apt-get install libvtk7.1-qt
sudo apt-get install libvtk7.1
sudo apt-get install libvtk7-qt-dev #这句有问题
#下列软件包有未满足的依赖关系:
#libvtk7-qt-dev : 依赖: libvtk7-dev (= 7.1.1+dfsg1-2) 但是它将不会被安装
#E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。
sudo apt-get install libvtk7-jni=7.1.1+dfsg1-2 #网上这个办法成功了

sudo apt-get install libqhull* libgtest-dev
sudo apt-get install freeglut3-dev pkg-config
sudo apt-get install libxmu-dev libxi-dev
sudo apt-get install mono-complete
sudo apt-get install openjdk-8-jdk openjdk-8-jre

2.安装VTK

2.1  先安装cmake 和vtk 的依赖项

sudo apt-get install cmake-curses-gui
sudo apt-get install freeglut3-dev

2.2 下载VTK-8.2.0库

地址:Download | VTK

点击Download the previous relea-se (8.2.0),然后选择下载下面任意一种类型的压缩包。因为zip和tar.gz都可以在ubuntu中手动解压。 

解压+到对应文件夹下mkdir build+cd build+cmake-gui

出现原因:

未安装libqt5x11extras5-dev

解决方案:

sudo apt install libqt5x11extras5-dev

PCL下载

找到了1.91,在下面的Assets目录下,就是Source code,这里依然自由选择压缩包格式。

解决:

whereis libvtkRenderingCore-8.2.so.1
cat /etc/ld.so.conf
sudo sh -c "echo '/usr/lib/x86_64-linux-gnu' >> /etc/ld.so.conf"
sudo sh -c "ldconfig"

python-pcl
安装建议参考:ubuntu18.04安装python-pcl1.9,vtk8.1,pcl1.9_ubuntu安装vtk_小雅之堂的博客

export VTK_ROOT=/usr/local
python setup.py build_ext -I$VTK_ROOT/include/vtk-8.2 -L$VTK_ROOT/lib/vtk-8.2
#修改了.bashrc文件;修改了python-pcl的setup.py中763行左右的vtk的版本从8.1改为8.2
#问chatgpt,库文件通常是.so后追的,所以上面的命令
export VTK_ROOT=/usr/local
python setup.py build_ext -I$VTK_ROOT/include/vtk-8.2 -L$VTK_ROOT/lib

sudo python setup.py install


#conda下使用,也要在conda下安装python-pcl
python setup.py build_ext -I$VTK_ROOT/include/vtk-8.2 -L$VTK_ROOT/lib
sudo CPLUS_INCLUDE_PATH=/usr/local/include/vtk-8.2 LD_LIBRARY_PATH=/usr/local/lib python setup.py install

Generate Your Own Grasp Dataset

5.Generate nontextured.sdf file and nontextured.obj file using pcl-tools and SDFGen by running:


cd $PointNetGPD_FOLDER/dex-net/apps
python read_file_sdf.py  

解释:该py文件使用pcl-tools的pcl_ply2obj工具将.ply文件转换成.obj文件,然后使用SDFGen工具将.obj文件转换成SDF文件。查看文件夹。

6.Generate dataset by running the code:where [prefix] is optional, it will add a prefix on the generated files.


cd $PointNetGPD_FOLDER/dex-net/apps
python generate-dataset-canny.py [prefix]  

解释:这是一个生成机器人夹持物体的夹爪姿态数据集的 Python 脚本。它从一些 obj 或 sdf 文件中读取物体模型,并在模型上进行夹爪采样。然后,使用一些质量度量方法计算采样到的夹爪姿态的质量,包括力闭合(force_closure)和 Canny 边缘检测方法的得分。然后,它保存一些具有较高质量得分的夹爪姿态以及其得分,以构建夹爪姿态质量数据集。其中的 worker() 函数用于在不同进程中执行这些工作以提高效率。

解惑:这个代码是为机械臂生成夹持数据集的,其中包含了机械臂的抓取采样器和夹持质量指标计算器,通过这些生成的夹持采样数据进行质量筛选,最终保存成.pickle和.npy格式的数据集文件。由于代码中大部分操作都是基于模拟和模型数据进行的,因此您不需要真实的机械臂设备就可以运行此代码。【所以这里出现的任何错误都和有没有物理机械臂无关!】

运行出错:

解决mayavi错误:conda install mayavi -c conda-forge

错误:AttributeError: type object 'StyleHint' has no attribute 'AnyStyle'

解决:conda update pyqt
错误:AttributeError: module 'importlib_metadata' has no attribute 'entry_points'

解决:在Anaconda Prompt里输入如下指令:
pip uninstall importlib_metadata 
pip install importlib_metadata --force-reinstall
错误:KeyError: 'traitsui.toolkits'

解决qt的错误:

#问题:
(pointnetgpd) june@june:~/code/PointNetGPD/dex-net/apps$ python generate-dataset-canny.py
WARNING:root:autolab_core not installed as catkin package, RigidTransform ros methods will be unavailable
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-xcomposite-egl, wayland-xcomposite-glx, webgl, xcb.


#解决:参考:https://blog.csdn.net/m0_54720387/article/details/127341261;删除qt/目录下的plugin
然而我的并没有解决
#与chatgpt大战505回合,得到一些有用的命令,不知不觉解决了qt的问题

这个错误的意思是Qt平台插件"xcb"无法在指定路径中被找到。这可能是由于缺少相关依赖项或配置不正确导致的。尝试重新安装Qt平台插件可能会解决问题。
sudo apt-get install libgl1-mesa-glx libxcb-xinerama0
conda install pyqt

确认您的LD_LIBRARY_PATH环境变量包含了Qt的库文件路径。您可以通过运行以下命令来查看Qt的库文件路径: 
import PyQt5.QtCore
print(PyQt5.QtCore.QLibraryInfo.location(PyQt5.QtCore.QLibraryInfo.LibraryExecutablesPath))

    确认您的LD_LIBRARY_PATH环境变量包含了Qt的库文件路径。您可以通过运行以下命令来查看Qt的库文件路径:
     
    import PyQt5.QtCore
    print(PyQt5.QtCore.QLibraryInfo.location(PyQt5.QtCore.QLibraryInfo.LibraryExecutablesPath))

    我的输出是/home/june/anaconda3/envs/pointnetgpd/lib/python3.7/site-packages/PyQt5/Qt5/libexec ,将输出的路径添加到您的LD_LIBRARY_PATH环境变量中,是在根目录的.bashrc文件中修改吗?
    A:是的,您可以在根目录下的.bashrc文件中添加如下行:
     
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/june/anaconda3/envs/pointnetgpd/lib/python3.7/site-packages/PyQt5/Qt5/libexec
     
    Q:这个LD_LIBRARY_PATH环境变量到底是什么?我之前配置VTK的时候已经有了export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH这句,我再写export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/june/anaconda3/envs/pointnetgpd/lib/python3.7/site-packages/PyQt5/Qt5/libexec会不会冲突
    A:'LD_LIBRARY_PATH是一个环境变量,用于告诉系统动态链接库(.so文件)的路径。当程序运行时,系统需要从一些标准路径(如/usr/lib)中加载动态链接库。如果程序需要加载一个不在标准路径中的库,可以通过设置LD_LIBRARY_PATH来告诉系统在哪里查找该库。
    在您的情况下,由于您已经在.bashrc中设置了LD_LIBRARY_PATH,您只需要在其后面添加:/home/june/anaconda3/envs/pointnetgpd/lib/python3.7/site-packages/PyQt5/Qt5/libexec即可,不会造成冲突。这样设置后,系统就会在这个新的路径下查找动态链接库。
    Q:写成一句
    A:export LD_LIBRARY_PATH=/home/june/anaconda3/envs/pointnetgpd/lib/python3.7/site-packages/PyQt5/Qt5/libexec:/usr/local/lib:$LD_LIBRARY_PATH
    Q:conda install pyqt通过这个语句,我怎么查看我的qt到底安装上了没
    A:在终端中输入qmake --version命令来查看是否安装了Qt。如果命令能够正常执行并输出版本号信息,则说明Qt已经安装成功。如果命令无法找到,则说明Qt未被正确安装或者环境变量未正确配置。
    Q:输出了QMake version 3.1
    Using Qt version 5.15.2 in /home/june/anaconda3/envs/pointnetgpd/lib,这个输出表明您已经成功安装了Qt,并且您正在使用版本为5.15.2的Qt。您可以在您的代码中导入PyQt5.QtCore等模块,以验证它们是否可以被成功地导入并使用。
    A:import PyQt5
    print(PyQt5.__version__)
    Q:pip install PyQt5
    Q:我怎么知道我是什么版本的qt
    A:qmake --version
    Q:我的qt是5.12.2的,所以你建议我输入什么pip install 来安装pyqt5的具体版本号
    A:pip install PyQt5==5.12.2
    Q:为什么我已经显示successfully installed pyqt5-5.12.2,但是我在python中输入import pyqt5还是显示No module named pyqt5
    A:这可能是因为你使用的Python环境与安装PyQt5的环境不同。你可以尝试在安装PyQt5的环境下打开Python并尝试导入PyQt5,以确保安装成功。你也可以通过运行pip list命令来检查PyQt5是否在Python环境中安装成功。
    pip uninstall pyqt5
    pip install pyqt5==5.12.2

#解决autolab_core not installed as catkin package错误

1.catkin_src文件夹git clone地址
2.catkin_make错误,错误解决:把src/autolab_core文件下package.xml的version从<version>1.1.0</version>改为<version>1.1.1</version>
3.source devel/setup.bash 
'''
错误如下:
(pointnetgpd) june@june:~/code/PointNetGPD/catkin_ws$ catkin_make
Base path: /home/june/code/PointNetGPD/catkin_ws
Source space: /home/june/code/PointNetGPD/catkin_ws/src
Build space: /home/june/code/PointNetGPD/catkin_ws/build
Devel space: /home/june/code/PointNetGPD/catkin_ws/devel
Install space: /home/june/code/PointNetGPD/catkin_ws/install
####
#### Running command: "cmake /home/june/code/PointNetGPD/catkin_ws/src -DCATKIN_DEVEL_PREFIX=/home/june/code/PointNetGPD/catkin_ws/devel -DCMAKE_INSTALL_PREFIX=/home/june/code/PointNetGPD/catkin_ws/install -G Unix Makefiles" in "/home/june/code/PointNetGPD/catkin_ws/build"
####
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Using CATKIN_DEVEL_PREFIX: /home/june/code/PointNetGPD/catkin_ws/devel
-- Using CMAKE_PREFIX_PATH: /opt/ros/melodic
-- This workspace overlays: /opt/ros/melodic
-- Found PythonInterp: /usr/bin/python2 (found suitable version "2.7.17", minimum required is "2")
-- Using PYTHON_EXECUTABLE: /usr/bin/python2
-- Using Debian Python package layout
-- Using empy: /usr/bin/empy
-- Using CATKIN_ENABLE_TESTING: ON
-- Call enable_testing()
-- Using CATKIN_TEST_RESULTS_DIR: /home/june/code/PointNetGPD/catkin_ws/build/test_results
-- Found gtest sources under '/usr/src/googletest': gtests will be built
-- Found gmock sources under '/usr/src/googletest': gmock will be built
-- Found PythonInterp: /usr/bin/python2 (found version "2.7.17")
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Using Python nosetests: /usr/bin/nosetests-2.7
-- catkin 0.7.29
-- BUILD_SHARED_LIBS is on
-- BUILD_SHARED_LIBS is on
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ~~  traversing 1 packages in topological order:
-- ~~  - autolab_core
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- +++ processing catkin package: 'autolab_core'
-- ==> add_subdirectory(autolab_core)
-- Using these message generators: gencpp;geneus;genlisp;gennodejs;genpy
CMake Error at /opt/ros/melodic/share/catkin/cmake/catkin_python_setup.cmake:56 (message):
  catkin_python_setup() version in setup.py (1.1.1) differs from version in
  package.xml (1.1.0)
Call Stack (most recent call first):
  autolab_core/CMakeLists.txt:20 (catkin_python_setup)


-- Configuring incomplete, errors occurred!
See also "/home/june/code/PointNetGPD/catkin_ws/build/CMakeFiles/CMakeOutput.log".
See also "/home/june/code/PointNetGPD/catkin_ws/build/CMakeFiles/CMakeError.log".
'''

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PointNetGPD代码复现 的相关文章

随机推荐