我正试图在我的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>
来转换这些文件。