Ros2找不到在Docker中运行的可执行文件



我正试图在我的docker容器中用ros2运行一个python脚本,直到运行该脚本为止,我甚至可以通过启动文件运行Gazebo,它也能运行。

ROS给我的错误如下:

root@86d8bf3a6eb9:/# ros2 run field_robot robot_spawner.py
Traceback (most recent call last):
File "/opt/ros/foxy/bin/ros2", line 11, in <module>
load_entry_point('ros2cli==0.9.11', 'console_scripts', 'ros2')()
File "/opt/ros/foxy/lib/python3.8/site-packages/ros2cli/cli.py", line 67, in main
rc = extension.main(parser=parser, args=args)
File "/opt/ros/foxy/lib/python3.8/site-packages/ros2run/command/run.py", line 70, in main
return run_executable(path=path, argv=args.argv, prefix=prefix)
File "/opt/ros/foxy/lib/python3.8/site-packages/ros2run/api/__init__.py", line 61, in run_executable
process = subprocess.Popen(cmd)
File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1704, in _execute_child
raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: '/field_robot/dev_ws/install/field_robot/lib/field_robot/robot_spawner.py'

是的,我查过了,文件确实存在:

root@86d8bf3a6eb9:/# ls -l /field_robot/dev_ws/install/field_robot/lib/field_robot/robot_spawner.py
-rwxr-xr-x 1 root root 1964 Apr 12 14:37 /field_robot/dev_ws/install/field_robot/lib/field_robot/robot_spawner.py

此外,我在Windows上运行主机系统,所以可能是Windows出现了问题,所以如果你知道问题出在哪里,也可能是

根据评论,由于文件类型的原因,您似乎遇到了这个问题。如果它们首先在Windows中编辑,很可能是DOS文件,而不是UNIX文件。我知道这会导致ROS1出现问题,所以我认为ROS2也是如此。要解决此问题,您有几个选项。

通常最简单的方法是使用dos2unix。默认情况下不会安装,但假设您的映像是Ubuntu,您可以通过apt install dos2unix获得它。可以通过在容器中运行dos2unix <filename>来转换这些文件。

最新更新