[rgbd_benchmark_tools] Registros de depuración de uso de herramientas de referencia del conjunto de datos TUM RGBD, evaluación SLAM

cgm@cgm:~/文档/rgbd_benchmark_tools$ /bin/python /home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py
Traceback (most recent call last):
  File "/home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py", line 43, in <module>
    import numpy
  File "/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages/numpy/__init__.py", line 130
    raise ImportError(msg) from e
                              ^
SyntaxError: invalid syntax


cgm@cgm:~/文档/rgbd_benchmark_tools$ echo $PYTHONPATH
/opt/ros/noetic/lib/python3/dist-packages:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages

为什么只有两个环境
怎么不使用anaconda3/envs/yolov8这个环境,我是在ubuntu的vscode

我之前一直使用是naconda3/envs/yolov8这个环境,.bashrc文件里:export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages

Gracias por $PYTHONPATHla información. La causa del problema ahora está clara. $PYTHONPATHLa variable de entorno especifica la ruta de búsqueda del módulo Python, que contiene dos directorios:

  1. /opt/ros/noetic/lib/python3/dist-packages: Esta es la ruta de la biblioteca Python para ROS (sistema operativo de robot).
  2. /home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages: Esta es la ruta de la biblioteca Python 3.8 para el entorno Anaconda que mencionaste anteriormente.

Debido a /home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packagesesto $PYTHONPATH, el entorno Python 2 no se puede aislar completamente, ya que aún puede acceder a las bibliotecas Python 3 en el entorno Anaconda.

Para resolver este problema, puede $PYTHONPATHeliminar . Puede utilizar el siguiente comando para hacer esto:

  • 方法一:
export PYTHONPATH=/opt/ros/noetic/lib/python3/dist-packages

Luego ejecute el script Python 2:

/bin/python /home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py

Esto garantizará que el entorno Python 2 no se vea afectado por el entorno Anaconda, ya que ya no buscará bibliotecas Python 3 en el entorno Anaconda.

Tenga en cuenta que esta es solo una solución temporal y deberá ejecutarse manualmente cada vez antes de ejecutar el script en un entorno Python 2. Si desea una solución más permanente, es posible que desee verificar más profundamente el entorno de Anaconda y la configuración del sistema para asegurarse de que no interfieran con el entorno de Python 2.

  • 方法二:

Si la ruta al entorno Anaconda aparece en $PATH, puede eliminarla editando el archivo .bashrc o el archivo .zshrc. Busque una línea similar a la siguiente y elimínela o coméntela:

export PATH="/home/cgm/anaconda3/envs/yolov8/bin:$PATH"

Mi archivo .bashrc

 export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages:
我最后把.bashrc文件里的这行注释了

@cgm:~$ source .bashrc
cgm@cgm:~$ echo $PYTHONPATH
/opt/ros/noetic/lib/python3/dist-packages 

现在就没有这个环境了:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
  • 注意:

Al ejecutar evalua_ate.py

cgm@cgm:~/文档/rgbd_benchmark_tools$ /bin/python /home/cgm/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools/evaluate_ate.py
usage: evaluate_ate.py [-h] [--offset OFFSET] [--scale SCALE]
                       [--max_difference MAX_DIFFERENCE] [--save SAVE]
                       [--save_associations SAVE_ASSOCIATIONS] [--plot PLOT]
                       [--verbose]
                       first_file second_file
evaluate_ate.py: error: too few arguments

El código de ejecución completo requiere la trayectoria del valor verdadero del primer archivo y la trayectoria del valor estimado del segundo archivo.

  • 我创建了一个python2的conda环境
conda create -n python2env python=2.7
conda activate python2env
conda info --envs
pip install matplotlib
(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ pip install matplotlib
.....................................
(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ /bin/python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_image.png
0.070789
Traceback (most recent call last):
  File "evaluate_ate.py", line 175, in <module>
    import matplotlib
ImportError: No module named matplotlib
(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ 

Según su resultado, activó con éxito el entorno virtual e instaló matplotlib en el intérprete de Python dentro del entorno virtual, pero todavía parece estar usando Python 2.7 en su sistema cuando ejecuta el script. Esto puede deberse a que cuando se activa el entorno virtual, está utilizando /bin/python directamente, que aún puede estar apuntando al Python 2.7 del sistema.

要使用虚拟环境中的Python解释器,您可以使用虚拟环境中的python命令,而不是/bin/python。请尝试以下命令来运行脚本:

python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_image.png

这三个文件(evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt)在一个目录下

Al ejecutar el comando anterior, debería poder utilizar correctamente la biblioteca matplotlib y el intérprete de Python en un entorno virtual para generar imágenes de trayectoria. Si el problema persiste, asegúrese de que el entorno virtual esté activado correctamente y que el comando Python apunte al intérprete de Python en el entorno virtual.

(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_image.png
0.070789

rgbd_benchmark_toolsEl contenido de esta carpeta.

(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ ls  
add_pointclouds_to_bagfile.py  generate_pointcloud.py 
associate.py                   generate_registered_pointcloud.py
associate.pyc                  output_image.png
evaluate_ate.py                plot_trajectory_into_image.py 
evaluate_rpe.py                rgbd_dataset_freiburg1_360-groundtruth.txt 
freiburg1_360-rgbdslam.txt

imagen_salida.png

Uso sencillo:

# python evaluate_ate.py [真实轨迹] [VIO系统估计的估计] --plot [输出图像名称]
python evaluate_ate.py groundtruth.txt pose_output.txt --plot result.png

最后总结:

(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools/src/rgbd_benchmark_tools$ python evaluate_rpe.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --fixed_delta --delta 1.0 --save output_rpe_data.txt --plot output_image.png
0.07933048022129437
1.注释掉.bashrc文件的这一行 
	export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
2.打开终端运行
	cgm@cgm:~$ source .bashrc
	cgm@cgm:~$ echo $PYTHONPATH
	/opt/ros/noetic/lib/python3/dist-packages
	cgm@cgm:~$ 
3.新建pyhton2的conda环境:
	conda create -n python2env python=2.7
	conda activate python2env
	conda info --envs
	pip install matplotlib
4.rgbd_benchmark_tools的根目录新建脚本文件build.sh,内容如下:
	# conda activate python2env
	# 我之前一直使用是naconda3/envs/yolov8这个环境,.bashrc文件里:export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
	# 解决:注释掉export PYTHONPATH=$PYTHONPATH:/home/cgm/anaconda3/envs/yolov8/lib/python3.8/site-packages
	# 然后:source .bashrc
	cd src/rgbd_benchmark_tools
	
	python evaluate_ate.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --plot output_ate_image.png
	
	python evaluate_rpe.py rgbd_dataset_freiburg1_360-groundtruth.txt freiburg1_360-rgbdslam.txt --fixed_delta --delta 1.0 --save output_rpe_data.txt --plot output_rpe_image.png
5.把真值文件txt和预计轨迹文件txt放入rgbd_benchmark_tools/src/rgbd_benchmark_tools中,保持和py文件在一个目录(目的是运行命令可以变得很短)
6.cgm@cgm:~/文档/rgbd_benchmark_tools$ chmod +X build
7.cgm@cgm:~/文档/rgbd_benchmark_tools$ conda activate python2env
8.(python2env) cgm@cgm:~/文档/rgbd_benchmark_tools$ ./build.sh
	0.070789
	0.07933048022129437
9.rgbd_benchmark_tools/src/rgbd_benchmark_tools有生成的2个图片(output_ate_image.png;output_rpe_image.png)和output_rpe_data.txt文件

Insertar descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/u013454780/article/details/132824785
Recomendado
Clasificación