目次
-
- 質問 1. xarco を使用して urdf を作成すると、joint_state_publisher/joint_state_publisher_gui を実行するとエラーが報告されます。
- 質問 2. amcl を使用して位置を特定すると、「レーザー スキャンが受信されませんでした」という警告が報告されます。/scan トピックにはデータがあり、amcl はこのトピックにもサブスクライブしています。
- 質問 3. .py ファイルを実行するとエラーが報告される
- 質問 4. ModuleNotFoundError: roalaunch で起動ファイルを起動すると、「xxxxx」という名前のモジュールが報告されません
- 質問 5. vscode ターミナルの文字間隔が大きすぎます。
- 質問 6. ROS で Gazebo を初めて起動すると、Err [REST.cc:205] Error in REST request が表示されます
- Python3を使用するようにデフォルトを設定します
- 質問 7. Joint_state_publisher などのファイル文字セットの非互換性
質問 1. xarco を使用して urdf を作成すると、joint_state_publisher/joint_state_publisher_gui を実行するとエラーが報告されます。
エラーは次のとおりです。
[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
理由: 一般に、urdf に中国語の文字が含まれているためです。
解決:
- urdf ファイル内のすべての漢字を削除します。
- Joint_state_publisher および Joint_state_publisher_gui 構成を変更する
- cd /opt/ros/melodic/lib/joint_state_publisher (joint_state_publisher_gui类似)
- sudo gedit Joint_state_publisher
- 改訂
- import sys の後に reload(sys) sys.setdefaultencoding("utf-8") を追加します
- それでもエラーが報告される場合は、実行権限を変更します:
cd /opt/ros/melodic/lib/joint_state_publisher
chmod 777 Joint_state_publisher
質問 2. amcl を使用して を検索すると警告が表示されますNo laser scan received
。/scan トピックにはデータがあり、amcl はこのトピックにもサブスクライブしています。
エラーは次のようになります。
amcl: No laser scan received (and thus no pose updates have been published) for xxxx seconds ?
理由: オドメーター情報がないため、amcl 座標系が乱れています。
解決:
- オドメーター情報を追加する
- /odom トピックを投稿する
- Base_link から odom への変換を追加
参考
amcl: xxxx 秒間、レーザー スキャンが受信されませんでした (したがって、ポーズの更新は公開されていません)。
質問 3. .py ファイルを実行するとエラーが報告される
理由:
- .py ファイルのアクセス許可を付与するかどうか、
- CMakeLists.txt で実行可能ファイルをマークするかどうか、
- 中国の発言のせいでしょうか。
解決:
- 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} )
- Pythonファイルの先頭に追加します
#! /usr/bin/env python # -*- coding: UTF-8 -*-
質問 4. ModuleNotFoundError: roalaunch で起動ファイルを起動すると、「xxxxx」という名前のモジュールが報告されません
問題の説明:
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'
理由
ubuntu18.04 で使用される ros バージョンは melodic であり、melodic はデフォルトで python2 を使用しますが、実際にコードを実行するには python3 を使用します。
解決
- bashrcファイルを追加します
alias python=python3
- 保存後
source ~/.bashrc
- ダウンロード
pip3 install rospkg
質問 5. vscode ターミナルの文字間隔が大きすぎます。
問題の説明:
原因
Linux ではフォントの関係で文字間隔が広すぎます。
解決
質問 6. ROS で Gazebo を初めて起動すると、Err [REST.cc:205] Error in REST request が表示されます
-
問題の説明
-
解決策:
ここでは、.ignition/fuel/config.yaml ファイルを変更する必要があります。yaml ファイルコマンドを開きます。
sudo gedit ~/.ignition/fuel/config.yaml
url : https://api.ignitionfuel.org
# でコメントアウトそれから加えて
url: https://api.ignitionrobotics.org
以下に示すように:
<!-- 将 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" /> -->
Python3を使用するようにデフォルトを設定します
- デフォルトの Python2 を 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 を 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
- ターミナルに python と入力すると、デフォルトで python3 が正常に使用されることがわかります。
質問 7. Joint_state_publisher などのファイル文字セットの非互換性
-
問題の説明
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
-
問題の原因
これは文字セットの問題で、中国語のコメントは書かないようにという解決策をよく見かけましたが、コメントは非常に重要で、そうしないと将来コードを見直すときに何をしているのか分からなくなります。
-
解決
/opt/ros/melodic/lib/joint_state_publisher/joint_state_publisher でファイルを見つけて追加します
reload(sys) sys.setdefaultencoding( "utf-8" )
これら 2 行のコードにより、文字セットの問題を解決できます。