背景
我在尝试实现一个用python编写的ros2节点,用来进行目标检测,我所用的ros版本为ros-humble,ubuntu系统为22.04,这个项目实际不止包含这一个包,这里我仅仅展示这个出错的包,我认为这与其他包的关系不大
问题描述
节点实现完成后,使用colcon build进行编译,并尝试使用ros2 run进行运行,但是找不到package
具体细节
下面给出我具体的项目结构,package.xml、setup.cfg、setup.py文件内容,以及编译结果和运行结果
package.xml
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>racecar_detector</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="3110379921@qq.com">labor</maintainer>
<license>TODO: License declaration</license>
<depend>rclpy</depend>
<depend>sensor_msgs</denpend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>
<export>
<build_type>ament_python</build_type>
</export>
</package>
setup.py
from setuptools import find_packages, setup
package_name = 'racecar_detector'
setup(
name=package_name,
version='0.0.0',
packages=find_packages(exclude=['test']),
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name + "/model", ['model/yolov5s_bs1.om', 'model/yolov5s.onnx']),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='labor',
maintainer_email='3110379921@qq.com',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'racecar_detector_node = racecar_detector.detector_node:main'
],
},
)
setup.cfg
[develop]
script_dir=$base/lib/racecar_detector
[install]
install_scripts=$base/lib/racecar_detector
这里编译时报了一个setuptools的问题,但那应该无伤大雅
我按照ros2-humble官方wiki文档进行的节点内容编写,并不认为这里有什么问题,我确定自己已经source过install/setup.bash文件,并且经过检查,install下确实存在racecar_detector的包,其中lib文件夹下也已生成可执行文件
尝试过的解决办法
我在网上进行查阅,并没有找到很有效的办法,删除install build log 文件夹,重新编译,仍然报同样的错