【问题标题】:ROS2 colcon build fails - can't copy: doesn't exist or not a regular fileROS2 colcon 构建失败 - 无法复制:不存在或不是常规文件
【发布时间】:2022-07-05 22:36:50
【问题描述】:

我有一个构建失败的 ROS2 包。我正在关注 ROS2“设置机器人模拟(Webots)”tutorial,当我到达section 6“修改 setup.py 文件”时,我像这样更改了我的文件:

from setuptools import setup
from glob import glob

package_name = 'ad_boxtra'

setup(
    name=package_name,
    version='0.0.0',
    packages=[package_name],
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
        ('share/' + package_name, glob('launch/*.py')), # include all launch files
        ('share/' + package_name, glob('resource/*.urdf')), # include all webots-related resource files
        ('share/' + package_name + '/webots_simulation/worlds',    # include desired webots worlds
            ['worlds/adboxtra_2022_simplified.wbt']),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='redacted',
    maintainer_email='redacted',
    description="redacted",
    license='MIT License',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'my_robot_driver = ad_boxtra.my_robot_driver:main',
        ],
    },
)

然后,我使用工作区根目录中的调试信息运行 colcon build 并得到:

user@host:~/my_ws $ colcon build --packages-select ad_boxtra --event-handlers console_direct+
Starting >>> ad_boxtra
running egg_info                        
writing ../../build/ad_boxtra/ad_boxtra.egg-info/PKG-INFO
writing dependency_links to ../../build/ad_boxtra/ad_boxtra.egg-info/dependency_links.txt
writing entry points to ../../build/ad_boxtra/ad_boxtra.egg-info/entry_points.txt
writing requirements to ../../build/ad_boxtra/ad_boxtra.egg-info/requires.txt
writing top-level names to ../../build/ad_boxtra/ad_boxtra.egg-info/top_level.txt
reading manifest file '../../build/ad_boxtra/ad_boxtra.egg-info/SOURCES.txt'
writing manifest file '../../build/ad_boxtra/ad_boxtra.egg-info/SOURCES.txt'
running build
running build_py
running install
running install_lib
running install_data
error: can't copy 'adboxtra_2022_simplified.wbt': doesn't exist or not a regular file
--- stderr: ad_boxtra
error: can't copy 'adboxtra_2022_simplified.wbt': doesn't exist or not a regular file
---
Failed   <<< ad_boxtra [0.63s, exited with code 1]

Summary: 0 packages finished [0.70s]
  1 package failed: ad_boxtra
  1 package had stderr output: ad_boxtra
---
Failed   <<< ad_boxtra [0.62s, exited with code 1]

Summary: 0 packages finished [0.71s]
  1 package failed: ad_boxtra
  1 package had stderr output: ad_boxtra

为什么这个 colcon 构建失败?如果有帮助,这是我的目录树:

AdBoxtra
├── ad_boxtra
│   ├── __init__.py
│   └── my_robot_driver.py
├── launch
│   └── my_robot_webots.launch.py
├── LICENSE
├── package.xml
├── README.md
├── resource
│   ├── ad_boxtra
│   └── my_robot.urdf
├── setup.cfg
├── setup.py
├── test
│   ├── test_copyright.py
│   ├── test_flake8.py
│   └── test_pep257.py
├── urdf
└── webots_simulation
    ├── controllers
    │   └── arm_sweep
    │       └── arm_sweep.py
    ├── libraries
    ├── plugins
    │   ├── physics
    │   ├── remote_controls
    │   └── robot_windows
    ├── protos
    └── worlds
        └── adboxtra_2022_simplified.wbt

27 directories, 63 files

我确实观察到在我的工作区的install/ 目录中,似乎存在share/ad_boxtra/webots_simulation/worlds/,但其中没有.wbt 文件。我不知道为什么会这样:

$ tree ~/rover_ws/install/ad_boxtra/
/home/redacted/rover_ws/install/ad_boxtra/
├── lib
│   ├── ad_boxtra
│   │   ├── conversationalist
│   │   ├── drive_control_serial
│   │   └── turtle_ad_boxtra
│   └── python3.8
│       └── site-packages
│           ├── ad_boxtra
│           │   ├── conversationalist.py
│           │   ├── drive_control_serial.py
│           │   ├── __init__.py
│           │   ├── my_robot_driver.py
│           │   ├── __pycache__
│           │   │   ├── conversationalist.cpython-38.pyc
│           │   │   ├── drive_control_serial.cpython-38.pyc
│           │   │   ├── __init__.cpython-38.pyc
│           │   │   ├── my_robot_driver.cpython-38.pyc
│           │   │   └── turtle_ad_boxtra.cpython-38.pyc
│           │   └── turtle_ad_boxtra.py
│           └── ad_boxtra-0.0.0-py3.8.egg-info
│               ├── dependency_links.txt
│               ├── entry_points.txt
│               ├── PKG-INFO
│               ├── requires.txt
│               ├── SOURCES.txt
│               ├── top_level.txt
│               └── zip-safe
└── share
    ├── ad_boxtra
    │   ├── drive_control.launch.py
    │   ├── hook
    │   │   ├── ament_prefix_path.dsv
    │   │   ├── ament_prefix_path.ps1
    │   │   ├── ament_prefix_path.sh
    │   │   ├── pythonpath.dsv
    │   │   ├── pythonpath.ps1
    │   │   └── pythonpath.sh
    │   ├── my_robot.urdf
    │   ├── my_robot_webots.launch.py
    │   ├── package.bash
    │   ├── package.dsv
    │   ├── package.ps1
    │   ├── package.sh
    │   ├── package.xml
    │   ├── package.zsh
    │   ├── __pycache__
    │   │   └── drive_control.launch.cpython-38.pyc
    │   └── webots_simulation
    │       └── worlds
    ├── ament_index
    │   └── resource_index
    │       └── packages
    │           └── ad_boxtra
    └── colcon-core
        └── packages
            └── ad_boxtra

18 directories, 38 files

【问题讨论】:

    标签: ros


    【解决方案1】:

    来自Python documentation

    data_files 以下列方式指定一系列(目录、文件)对...

    你写的 ('share/' + package_name + '/webots_simulation/worlds',['worlds/adboxtra_2022_simplified.wbt']),但应该是('share/' + package_name + '/webots_simulation/worlds',['adboxtra_2022_simplified.wbt'])

    【讨论】:

    • 此建议未能解决问题:error: can't copy 'adboxtra_2022_simplified.wbt': doesn't exist or not a regular file
    • 请看我的帖子编辑,我添加了更多信息。
    【解决方案2】:

    您也可以查看build 文件夹。只需删除buildinstall 并重试。可能是这样的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2021-09-23
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-24
      相关资源
      最近更新 更多