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 $PYTHONPATH
la información. La causa del problema ahora está clara. $PYTHONPATH
La variable de entorno especifica la ruta de búsqueda del módulo Python, que contiene dos directorios:
/opt/ros/noetic/lib/python3/dist-packages
: Esta es la ruta de la biblioteca Python para ROS (sistema operativo de robot)./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-packages
esto $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 $PYTHONPATH
eliminar . 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_tools
El 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
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文件