Problemas y soluciones encontrados en el aprendizaje de ROS

Pregunta 1. Al usar xarco para crear urdf, se informa un error al ejecutar joint_state_publisher/joint_state_publisher_gui

El error es el siguiente:

[joint_state_publisher_gui-4] process has died [pid 97153, exit code 1, cmd /opt/ros/melodic/lib/joint_state_publisher_gui/joint_state_publisher_gui __name:=joint_state_publisher_gui __log:=/home/ros/.ros/log/4422783c-0504-11ee-8b5a-000c29b0c758/joint_state_publisher_gui-4.log].
log file: /home/ros/.ros/log/4422783c-0504-11ee-8b5a-000c29b0c758/joint_state_publisher_gui-4*.log

Razón: generalmente porque urdf contiene caracteres chinos

solución:

  1. Elimine todos los caracteres chinos en el archivo urdf;
  2. Modificar la configuración de joint_state_publisher y joint_state_publisher_gui
    • cd /opt/ros/melodic/lib/joint_state_publisher (joint_state_publisher_gui类似)
    • sudo gedit joint_state_publisher
    • Revisar
    • Agregue recargar (sys) sys.setdefaultencoding ("utf-8") después de importar sys
  3. Si aún se informa el error, modifique el permiso de ejecución:

    cd /opt/ros/melodic/lib/joint_state_publisher

    chmod 777 joint_state_publisher

Pregunta 2. Hay una advertencia cuando se usa amcl para localizar No laser scan received, el tema /scan tiene datos y amcl también se suscribió a este tema.

El error se ve así:

amcl: No laser scan received (and thus no pose updates have been published) for xxxx seconds ?

inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Motivo: no hay información del odómetro, lo que hace que el sistema de coordenadas amcl esté desordenado.
solución:

  1. Agregar información del odómetro
  2. post / tema de odom
  3. Agregar conversión de base_link a odom

参考
amcl: ¿No se recibió ningún escaneo láser (y, por lo tanto, no se publicaron actualizaciones de poses) durante xxxx segundos?

Pregunta 3. Ejecutar el archivo .py informa un error

razón:

  1. Ya sea para otorgar permisos de archivo .py,
  2. Ya sea para marcar archivos ejecutables en CMakeLists.txt,
  3. ¿Es por los comentarios chinos?

solución:

  1. sudo chomod +x .py
  2.  ## Mark executable scripts (Python etc.) for installation
     ## in contrast to setup.py, you can choose the destination
     # catkin_install_python(PROGRAMS
     #   scripts/my_python_script
     #   DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
     # )
     # 
     catkin_install_python(PROGRAMS
     scripts/talker.py
     DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
     )
    
  3. Agregar en la parte superior del archivo python
    #! /usr/bin/env python
    # -*- coding: UTF-8 -*-
    

Pregunta 4. ModuleNotFoundError: No se informa ningún módulo llamado 'xxxxx' cuando se inicia un archivo de inicio en roalaunch

Descripción del problema:

Traceback (most recent call last):
  File "/home/ros/catkin_workspace/src/arbotix_ros/arbotix_python/bin/arbotix_driver", line 30, in <module>
    import rospy
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/__init__.py", line 49, in <module>
    from .client import spin, myargv, init_node, \
  File "/opt/ros/melodic/lib/python2.7/dist-packages/rospy/client.py", line 52, in <module>
    import roslib
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/__init__.py", line 50, in <module>
    from roslib.launcher import load_manifest  # noqa: F401
  File "/opt/ros/melodic/lib/python2.7/dist-packages/roslib/launcher.py", line 42, in <module>
    import rospkg
ModuleNotFoundError: No module named 'rospkg'

razón

Debido a que la versión ros utilizada por ubuntu18.04 es melódica, y melódico usa python2 de forma predeterminada, pero en realidad usamos python3 para ejecutar el código.

solución

  1. Añadir en el archivo bashrcalias python=python3
  2. después de guardarsource ~/.bashrc
  3. descargarpip3 install rospkg

Pregunta 5. El espacio entre caracteres del terminal vscode es demasiado grande

Descripción del problema:
inserte la descripción de la imagen aquí

Causa
Debido a la fuente en Linux, el espacio entre caracteres es demasiado grande

solución
inserte la descripción de la imagen aquí

Pregunta 6. Al iniciar Gazebo en ROS por primera vez, aparece Err [REST.cc:205] Error en la solicitud REST

  1. Descripción del problema
    inserte la descripción de la imagen aquí

  2. Solución:
    aquí debe modificar el archivo .ignition/fuel/config.yaml

    Abra el comando de archivo yaml:

    sudo gedit ~/.ignition/fuel/config.yaml

    Comenta url : https://api.ignitionfuel.orgcon #

    Luego añade

    url: https://api.ignitionrobotics.org

    Como se muestra abajo:

    inserte la descripción de la imagen aquí

<!-- 将 Urdf 文件的内容加载到参数服务器 -->
<param name="robot_description" textfile="$(find simu02)/urdf/urdf02_helloworld.urdf" />
<node pkg="rviz" type="rviz" name="rviz" />
<!-- 启动 gazebo -->
<!-- <include file="$(find gazebo_ros)/launch/empty_world.launch" /> -->

<!-- 在 gazebo 中显示机器人模型 -->
<!-- <node pkg="gazebo_ros" type="spawn_model" name="model" args="-urdf -model car -param robot_description"  /> -->

Establecer el valor predeterminado para usar python3

  1. Python2 predeterminado ajustado a Python3
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 200
    
  2. Python3 predeterminado ajustado a Python2
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 200
    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100
    
  3. ¡Ingrese python en la terminal y descubra que python3 se usa de manera predeterminada con éxito!
    inserte la descripción de la imagen aquí

Pregunta 7. Incompatibilidades de juegos de caracteres de archivos como joint_state_publisher

  1. Descripción del problema

    UnicodeEncodeError: 'ascii' codec can't encode characters in position 53-57: ordinal not in range(128)
    
    [joint_state_publisher-1] process has died [pid 9340, exit code 1, cmd /opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher __name:=joint_state_publisher __log:=/home/yzh/.ros/log/5314feca-c547-11ed-b4c2-000c2907fba7/joint_state_publisher-1.log].
    
    log file: /home/yzh/.ros/log/5314feca-c547-11ed-b4c2-000c2907fba7/joint_state_publisher-1*.log
    
    
  2. causas del problema

    Se debe al problema del conjunto de caracteres. Vi muchas soluciones que decían que no se escribieran comentarios en chino, pero los comentarios son muy importantes, de lo contrario, no sabrá lo que está haciendo cuando vuelva a examinar el código en el futuro.

  3. Solución

    Busque el archivo en /opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher y agréguelo

    reload(sys)
    sys.setdefaultencoding( "utf-8" )
    

    Estas dos líneas de código pueden resolver el problema del conjunto de caracteres.

Supongo que te gusta

Origin blog.csdn.net/weixin_45827203/article/details/131092263
Recomendado
Clasificación