使用colcon在Robomaker ROS工作区安装python模块



我正在使用AWS RoboMaker开发一个基于云的机器人应用程序。我正在使用ROS Kinetic,与构建工具colcon。

我的机器人应用程序依赖于一个自定义的python模块,该模块必须在我的工作区中。这个python模块是由colcon作为python包构建的,而不是ROS包。本页解释了如何使用catkin,但本示例展示了如何将其适应colcon。所以最后我的工作空间看起来是这样的:

my_workspace/
|--src/
|--my_module/
|     |--setup.py
|     |--package.xml
|     |--subfolders and python scripts...
|--some_ros_pkg1/  
|--some_ros_pkg2/
|...    

然而,命令:colcon build <my_workspace>构建了所有的ROS包,但未能将我的python模块构建为一个包。

这是我得到的错误:

Starting >>> my-module
[54.297s] WARNING:colcon.colcon_ros.task.ament_python.build:Package 'my-module' doesn't explicitly install a marker in the package index (colcon-ros currently does it implicitly but that fallback will be removed in the future)
[54.298s] WARNING:colcon.colcon_ros.task.ament_python.build:Package 'my-module' doesn't explicitly install the 'package.xml' file (colcon-ros currently does it implicitly but that fallback will be removed in the future)

--- stderr: my-module                                                                     
usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
or: setup.py --help [cmd1 cmd2 ...]
or: setup.py --help-commands
or: setup.py cmd --help
error: invalid command 'egg_info'
---
Failed   <<< my-module [0.56s, exited with code 1]

我发现这个问题似乎是相关的,因此尝试了:pip install --upgrade setuptools…失败并显示错误消息:

Collecting setuptools
Using cached https://files.pythonhosted.org/packages/7c/1b/9b68465658cda69f33c31c4dbd511ac5648835680ea8de87ce05c81f95bf/setuptools-50.3.0.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "setuptools/__init__.py", line 16, in <module>
import setuptools.version
File "setuptools/version.py", line 1, in <module>
import pkg_resources
File "pkg_resources/__init__.py", line 1365
raise SyntaxError(e) from e
^
SyntaxError: invalid syntax

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-uwFamt/setuptools/

使用pip3 install --upgrade setuptools,我得到:

Defaulting to user installation because normal site-packages is not writeable
Requirement already up-to-date: setuptools in /home/ubuntu/.local/lib/python3.5/site-packages (50.3.0)

我有Python 3.5.2和Python 2.7,但我不知道colcon使用哪一个。

所以我不知道下一步该做什么,真正的问题是什么。欢迎任何帮助!

我成功地正确安装了我的包及其依赖项。我开发了下面的方法,以防有一天它能帮助到别人!

我的灵感主要来自这个旧的DeepRacer存储库。

问题中的工作区树是错误的。它应该是这样的:

my_workspace/
|--src/
|--my_wrapper_package/
|     |--setup.py
|     |--my_package/
|          |--__init__.py
|          |--subfolders and python scripts...
|--some_ros_pkg1/  
|--some_ros_pkg2/
  • my_wrapper_package可能包含多个python自定义包
  • 一个很好的setup.py例子就是这个
  • 您不应该在setup.py旁边放一个package.xml:colcon将只查看在package.xml中声明的依赖项,而不会收集pip包
  • 删除colcon在install/build/中生成的文件夹my_wrapper_package有时可能会有所帮助。这样做会迫使colcon从头开始重建和捆绑

最新更新