小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
ubuntu24.04,一键安装docker版所有ros1或是ros2版本都失败
-
1选择版本的返回值是None,不知道是不是这里有问题?
2看翻译提示错误:引用格式无效,存储库必须小写,求解决方案。
================================1.版本选择======================================
RUN Choose Task:[请输入括号内的数字]
请选择你要安装的ROS版本名称(请注意ROS1和ROS2区别):
[1]:jazzy ROS2
[2]:noetic ROS1
[3]:humble ROS2
[4]:foxy ROS2
[5]:galactic ROS2
[6]:iron ROS2
[7]:melodic ROS1
[8]:rolling ROS2
[9]:kinetic ROS1
[10]:eloquent ROS2
[11]:dashing ROS2
[12]:crystal ROS2
[13]:bouncy ROS2
[14]:ardent ROS2
[15]:lunar ROS2
[16]:indigo ROS1
[0]:quit
请输入[]内的数字以选择:[16]
请输入[]内的数字以选择:2
你选择了None================================2.安装Docker======================================
Run CMD Task:[docker version]
[-]Result:success 76a6b735f29cc25774e=================3.下载镜像(该步骤因网络原因会慢一些,若失败请重试)==================
Run CMD Task:[sudo docker pull None ]
invalid reference format: repository name (library/None) must be lowercase
Run CMD Task:[sudo docker pull None ]
invalid reference format: repository name (library/None) must be lowercase
Run CMD Task:[sudo docker pull None ]
invalid reference format: repository name (library/None) must be lowercase
================================4.生成容器======================================
请为你的indigo ROS1容器取个名字吧!indigo1
收到名字indigo1
Run CMD Task:[users]
[-]Result:successRun CMD Task:[sudo docker run -dit --name=indigo1 -v /home/ydr:/home/ydr -v /tmp/.X11-unix:/tmp/.X11-unix --device=/dev/dri/renderD128 -v /dev/dri:/dev/dri --device=/dev/snd -e DISPLAY=unix$DISPLAY -w /home/ydr None]
docker: invalid reference format: repository name (library/None) must be lowercase.
See 'docker run --help'.
Run CMD Task:[docker exec -it indigo1 /bin/bash -c "echo -e '
source /opt/ros/indigo ROS1/setup.bash' >> ~/.bashrc" ]
Error response from daemon: No such container: indigo1
Run CMD Task:[xhost +local:]
non-network local connections being added to access control list
================================5.生成命令======================================
Traceback (most recent call last):
File "/tmp/fishinstall/install.py", line 124, in <module>
main()
File "/tmp/fishinstall/install.py", line 116, in main
run_tool_file(tools[code]['tool'].replace(url_prefix,'').replace("/","."))
File "/tmp/fishinstall/tools/base.py", line 1297, in run_tool_file
if tool.run()==False: return False
^^^^^^^^^^
File "/tmp/fishinstall/tools/tool_install_ros_with_docker.py", line 249, in run
self.install_ros_with_docker()
File "/tmp/fishinstall/tools/tool_install_ros_with_docker.py", line 238, in install_ros_with_docker
self.generte_command(container_name,rosname)
File "/tmp/fishinstall/tools/tool_install_ros_with_docker.py", line 199, in generte_command
rosversion = RosVersions.get_ros_version(rosname).version
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'version'- 列表
-
从您提供的错误信息来看,问题出在尝试使用Docker来拉取和运行ROS镜像时,指定的镜像名称是
None
,这显然是无效的。同时,indigo ROS1
这个字符串在创建容器命令中被错误地用作了镜像名称的一部分,而它应该是镜像的完整名称或者别名。以下是一些步骤来解决您的问题:
-
确定要安装的ROS版本和对应的Docker镜像名称:
- 对于ROS 1,您需要知道要安装的发行版(比如indigo、melodic等)以及对应的Docker镜像名称。
- 对于ROS 2,同样地,您需要知道要安装的发行版(比如foxy、galactic等)以及对应的Docker镜像名称。
您可以在Docker Hub或者其他Docker镜像仓库中搜索对应的ROS镜像。
-
拉取ROS Docker镜像:
使用docker pull
命令来拉取ROS Docker镜像。例如,如果要拉取名为ros:melodic-ros-base-bionic
的ROS 1 Melodic镜像,您应该运行:sudo docker pull ros:melodic-ros-base-bionic
请确保将上面的镜像名称替换为您实际要安装的ROS版本对应的镜像名称。
-
运行ROS Docker容器:
使用docker run
命令来运行ROS Docker容器。您需要指定容器名称、挂载的卷、设备以及其他必要的参数。但是,确保不要将None
作为镜像名称。例如:
sudo docker run -dit --name=indigo1 \ -v /home/ydr:/home/ydr \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -e DISPLAY=unix$DISPLAY \ -w /home/ydr \ ros:melodic-ros-base-bionic
请确保将
ros:melodic-ros-base-bionic
替换为您实际要运行的ROS Docker镜像名称。 -
修复安装脚本:
如果您使用的是某个自动化安装脚本(如install.py
),您需要确保该脚本中正确设置了ROS Docker镜像的名称。检查脚本中的相关部分,并进行必要的更改。 -
检查错误输出:
如果您在执行上述步骤时遇到任何错误,请仔细检查错误输出,并根据需要进行调整。
最后,请注意,ROS的Docker镜像可能包含不同的标签,这些标签可能表示不同的ROS发行版、不同的基础操作系统或其他配置。确保您选择了与您的需求相匹配的镜像标签。
以上为生成回答,仅供参考~
-