PointNetGPD代码复现

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格式的数据集文件。由于代码中大部分操作都是基于模拟和模型数据进行的,因此您不需要真实的机械臂设备就可以运行此代码。【所以这里出现的任何错误都和有没有物理机械臂无关!】

错误1:AttributeError: module numpy has no attribute int
解决:meshpy/meshpy/sdf.py第239行的np.int改为np.int_
错误2:  File "/home/june/code/PointNetGPD/dex-net/src/dexnet/grasping/grasp_sampler.py", line 722, in sample_grasps
    start_time = time.clock()
AttributeError: module 'time' has no attribute 'clock'
解决:修改time.clock 为:time.perf_counter()
ps.一共修改三个地方

解决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

原因:pip的opencv不能用

numpy                         1.24.3

运行tensorboard --log-dir ./assets/log --port 8080出错:

错误:AttributeError: module 'numpy' has no attribute 'object'
查看pip list:numpy                         1.24.3

解决:Since version 1.24 of numpy, np.object is deprecated, and needs to be replaced with object
You either need to update this in your code, or another package you're using needs to be updated (not possible to answer without more information).
pip uninstall numpy

pip install numpy==1.23.4

 继续错误:
`tensorboard: error: invalid choice: ‘./assets/log‘ (choose from ‘serve‘, ‘dev‘)
解决:tensorboard -–logdir ./assets/log --port 8080 

错误:TensorFlow installation not found - running with reduced feature set.

conda install pytorch==1.13.0 torchvision==0.14.0 torchaudio==0.13.0 pytorch-cuda=11.6 -c pytorch -c nvidia



Q:查看normal出错:

原因:没安装python-pcl

Q:修改数据集转换为点云的ycb_cloud_generate.py代码(如果共用服务器就改成1

    #pool = mp.Pool(processes=cores)
    pool = mp.Pool(processes=1)

Q:/home/june/图片/2023-10-11 13-23-56屏幕截图.png

不知道为什么,自己的ycb_grasp的train和test都没有073-b。但是有073-d。但是把073-d的train和test删除之后就可以正常运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值