Tabla de contenido
-
- Pregunta 1. Al usar xarco para crear urdf, se informa un error al ejecutar joint_state_publisher/joint_state_publisher_gui
- Pregunta 2. Se informa la advertencia "No se recibió escaneo láser" cuando se usa amcl para localizar. El tema /scan tiene datos, y amcl también se suscribe a este tema.
- Pregunta 3. Ejecutar el archivo .py informa un error
- Pregunta 4. ModuleNotFoundError: No se informa ningún módulo llamado 'xxxxx' cuando se inicia un archivo de inicio en roalaunch
- Pregunta 5. El espacio entre caracteres del terminal vscode es demasiado grande
- Pregunta 6. Al iniciar Gazebo en ROS por primera vez, aparece Err [REST.cc:205] Error en la solicitud REST
- Establecer el valor predeterminado para usar python3
- Pregunta 7. Incompatibilidades de juegos de caracteres de archivos como joint_state_publisher
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:
- Elimine todos los caracteres chinos en el archivo urdf;
- 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
- 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 ?
Motivo: no hay información del odómetro, lo que hace que el sistema de coordenadas amcl esté desordenado.
solución:
- Agregar información del odómetro
- post / tema de odom
- Agregar conversión de base_link a odom
Pregunta 3. Ejecutar el archivo .py informa un error
razón:
- Ya sea para otorgar permisos de archivo .py,
- Ya sea para marcar archivos ejecutables en CMakeLists.txt,
- ¿Es por los comentarios chinos?
solución:
- sudo chomod +x .py
-
## 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} )
- 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
- Añadir en el archivo bashrc
alias python=python3
- después de guardar
source ~/.bashrc
- descargar
pip3 install rospkg
Pregunta 5. El espacio entre caracteres del terminal vscode es demasiado grande
Descripción del problema:
Causa
Debido a la fuente en Linux, el espacio entre caracteres es demasiado grande
solución
Pregunta 6. Al iniciar Gazebo en ROS por primera vez, aparece Err [REST.cc:205] Error en la solicitud REST
-
Descripción del problema
-
Solución:
aquí debe modificar el archivo .ignition/fuel/config.yamlAbra el comando de archivo yaml:
sudo gedit ~/.ignition/fuel/config.yaml
Comenta
url : https://api.ignitionfuel.org
con #Luego añade
url: https://api.ignitionrobotics.org
Como se muestra abajo:
<!-- 将 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
- 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
- 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
- ¡Ingrese python en la terminal y descubra que python3 se usa de manera predeterminada con éxito!
Pregunta 7. Incompatibilidades de juegos de caracteres de archivos como joint_state_publisher
-
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
-
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.
-
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.