小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
昇腾Atlas 200I DK A2套件 昇腾官方Ubuntu 22.04 ROS2 安装 gazebo 失败
-
背景:
昇腾Atlas 200I DK A2 开发套件(ARM架构芯片);
通过SD卡烧录的昇腾官方提供的Ubuntu 22.04 系统;
系统登录后默认的HwHiAiUser用户通过ssh登录root操作已经开放了sudo权限;
用鱼总的一键安装ROS安装了 ROS2 humble;
之前尝试的时候也安装了miniconda3。问题描述:
使用常规安装指令无法成功安装gazebo
具体细节和上下文:
1.终端输入指令以及输出:
sudo apt-get install gazebo
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package gazebo is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another sourceE: Package 'gazebo' has no installation candidate
2.终端输入指令以及输出:
sudo apt install -y gazebo11
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package gazebo113.终端输入指令以及输出:
ros2 pkg install gazebo_ros_pkgs
Traceback (most recent call last):
File "/opt/ros/humble/bin/ros2", line 33, in <module>
sys.exit(load_entry_point('ros2cli==0.18.11', 'console_scripts', 'ros2')())
File "/opt/ros/humble/bin/ros2", line 25, in importlib_load_entry_point
return next(matches).load()
File "/usr/lib/python3.10/importlib/metadata/init.py", line 171, in load
module = import_module(match.group('module'))
File "/usr/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/opt/ros/humble/lib/python3.10/site-packages/ros2cli/cli.py", line 22, in <module>
from rclpy.executors import ExternalShutdownException
File "/home/HwHiAiUser/rclpy_workspace/install/rclpy/lib/python3.9/site-packages/rclpy/init.py", line 49, in <module>
from rclpy.signals import install_signal_handlers
File "/home/HwHiAiUser/rclpy_workspace/install/rclpy/lib/python3.9/site-packages/rclpy/signals.py", line 15, in <module>
from rclpy.exceptions import InvalidHandle
File "/home/HwHiAiUser/rclpy_workspace/install/rclpy/lib/python3.9/site-packages/rclpy/exceptions.py", line 15, in <module>
from rclpy.impl.implementation_singleton import rclpy_implementation as _rclpy
File "/home/HwHiAiUser/rclpy_workspace/install/rclpy/lib/python3.9/site-packages/rclpy/impl/implementation_singleton.py", line 32, in <module>
rclpy_implementation = import_c_library('._rclpy_pybind11', package)
File "/opt/ros/humble/lib/python3.10/site-packages/rpyutils/import_c_library.py", line 39, in import_c_library
return importlib.import_module(name, package=package)
File "/usr/lib/python3.10/importlib/init.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
ModuleNotFoundError: No module named 'rclpy._rclpy_pybind11'
The C extension '/opt/ros/humble/lib/python3.10/site-packages/_rclpy_pybind11.cpython-310-aarch64-linux-gnu.so' isn't present on the system. Please refer to 'https://docs.ros.org/en/humble/Guides/Installation-Troubleshooting.html#import-failing-without-library-present-on-the-system' for possible solutions -
针对您在使用昇腾Atlas 200I DK A2套件上的Ubuntu 22.04系统上安装ROS2和Gazebo时遇到的问题,我们可以分步骤来解决。
1. 解决Gazebo的安装问题
首先,
gazebo
是一个通用的包名,它可能并不直接对应于某个具体的Gazebo版本。在Ubuntu上,你应该安装特定版本的Gazebo,比如gazebo11
。但是,由于您遇到了“Unable to locate package gazebo11”的错误,这通常意味着该版本的Gazebo没有在Ubuntu的默认软件源中,或者你的软件源列表没有更新。步骤 1: 更新软件源
sudo apt update sudo apt upgrade
步骤 2: 安装Gazebo
Ubuntu 22.04 可能不直接支持 Gazebo 11,但你可以尝试安装其他版本,如 Gazebo 9 或 Gazebo 11(如果源中有的话)。如果源中没有,你可能需要添加额外的PPA(个人软件包存档)或使用源码编译。对于Gazebo 9(假设它可用),你可以尝试:
sudo apt install gazebo9
如果确实需要Gazebo 11,你可能需要查找是否有针对Ubuntu 22.04的PPA或第三方源。
2. 解决ROS2与Python版本冲突
从错误日志来看,ROS2似乎与Python版本之间存在冲突。ROS2 Humble默认支持Python 3.8或3.9,但你的系统似乎在使用Python 3.10。这可能导致了一些问题,尤其是与C扩展模块的兼容性。
解决方案:
- 创建一个Python 3.8或3.9的虚拟环境来运行ROS2。
- 使用
pyenv
或conda
来管理不同的Python版本。
例如,使用
conda
创建一个新的环境:conda create -n ros2_env python=3.9 conda activate ros2_env # 重新安装ROS2(如果必要)
3. 安装ROS2 Gazebo包
在解决了Gazebo和Python版本问题后,你可以尝试安装ROS2的Gazebo包。通常,这些包是通过ROS2的包管理器安装的,而不是直接使用
apt
。sudo apt install python3-rosdep sudo rosdep init rosdep update ros2 pkg install --build-from-source gazebo_ros_pkgs
注意:
--build-from-source
选项可能需要你安装更多的依赖和编译工具。总结
- 确保你的软件源是最新的。
- 根据Ubuntu版本安装合适的Gazebo版本。
- 管理好Python版本,确保ROS2能够正常运行。
- 使用ROS2的包管理器安装Gazebo ROS包。
希望这些步骤能帮助你解决安装问题!如果问题依旧,请检查具体的错误信息和日志,以便进一步诊断。
以上为生成回答,仅供参考~
-
@小伊 感谢你的回复,我使用了你提到的指令:
sudo apt install gazebo9
终端报错显示这个:
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Package gazebo9 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another sourceE: Package 'gazebo9' has no installation candidate
-
这个错误表明在您的Ubuntu系统的默认软件源中找不到
gazebo9
这个包。这通常是因为Gazebo 9可能不再被当前Ubuntu版本的官方软件源支持,或者它已经被更新或替换为其他版本。要解决这个问题,您可以尝试以下几个步骤:
-
检查Ubuntu版本:
首先确认您的Ubuntu版本。不同版本的Ubuntu可能支持不同版本的Gazebo。您可以使用以下命令查看Ubuntu版本:lsb_release -a
-
添加Gazebo的PPA(个人软件包存档):
对于较新或较旧的Ubuntu版本,您可能需要添加包含Gazebo的PPA。Gazebo的官方PPA可能包含较新或较旧版本的Gazebo。您可以使用以下命令添加Gazebo的PPA(注意:这里提供的PPA可能不是最新的,您需要根据实际情况查找):sudo add-apt-repository ppa:osrf/gazebo9 sudo apt update
但是,请注意,
osrf/gazebo9
这个PPA可能不存在或已过时。您可能需要查找适用于您Ubuntu版本的正确PPA,或者查看Gazebo的官方文档或社区论坛以获取最新信息。 -
安装Gazebo:
在添加了正确的PPA并更新了软件源之后,您可以尝试再次安装Gazebo:sudo apt install gazebo9
-
考虑使用Docker:
如果您在Ubuntu系统上安装Gazebo遇到困难,另一个选择是使用Docker来运行Gazebo。Docker容器可以提供一个隔离的环境,其中包含所有必要的依赖项和配置,以便轻松运行Gazebo。您可以在Docker Hub上查找Gazebo的官方镜像或社区提供的镜像。 -
查看Gazebo的官方文档:
访问Gazebo的官方网站或GitHub页面,查看安装指南和版本信息。这可以帮助您了解哪些版本的Gazebo与您的Ubuntu版本兼容,并获取最新的安装说明。 -
考虑使用其他版本的Gazebo:
如果您的Ubuntu版本不支持Gazebo 9,您可能需要考虑安装其他版本的Gazebo,如Gazebo 11(这是当前最新的稳定版本之一)。
希望这些步骤能帮助您解决安装Gazebo 9的问题!如果还有其他问题,请随时提问。
以上为生成回答,仅供参考~
-