将Python包与ROS 2结合使用 [待校准@6562]
Goal目标: Explain说明如何与ROS2生态系统中的其他Python包进行互操作。 [待校准@6563]
注解
需要注意的是,如果您打算使用预打包的二进制文件 ( deb
文件或 “fat” 二进制发行版),python解释器必须与用于构建原始二进制文件的内容匹配。如果您打算使用 virtualenv
或 pipenv
,请确保使用系统解释器。如果您使用类似 conda
的东西,解释器很可能与系统解释器不匹配,并且与ROS2二进制文件不兼容。 [待校准@6564]
通过 rosdep
安装 [待校准@6565]
包含第三方python包的最快方法是使用其相应的rosdep键 (如果有)。 rosdep
钥匙可以通过以下方式检查: [待校准@6566]
https://github.com/ros/rosdistro/blob/master/rosdep/base.yaml [待校准@6567]
https://github.com/ros/rosdistro/blob/master/rosdep/python.yaml [待校准@6568]
这些 rosdep
键可以添加到您的 package.xml
文件中,这表明您的包 (和依赖包) 依赖于这些键。在新工作区中,您还可以使用以下命令快速安装所有rosdep密钥: [待校准@6569]
rosdep install -yr ./path/to/your/workspace
如果您感兴趣的包目前没有 rosdep
键,可以按照 rosdep key contribution guide 键添加。 [待校准@6570]
要了解更多关于 rosdep
工具及其工作原理的信息,请咨询 rosdep documentation 。 [待校准@6571]
通过包管理器安装 [待校准@6572]
如果您不想创建rosdep密钥,但该包在您的系统包管理器 (例如 apt
) 中可用,您可以通过以下方式安装和使用该包: [待校准@6573]
sudo apt install python3-serial
如果该软件包在 The Python Package Index (PyPi) 上可用,并且您想在系统上全局安装: [待校准@6574]
python3 -m pip install -U pyserial
如果该软件包在PyPi上可用,并且您想向用户安装lo调用y: [待校准@6575]
python3 -m pip install -U --user pyserial
通过虚拟环境安装 [待校准@6576]
首先,创建Colcon工作区: [待校准@6577]
mkdir -p ~/colcon_venv/src
cd ~/colcon_venv/
然后设置您的虚拟环境: [待校准@6578]
# Make a virtual env and activate it
virtualenv -p python3 ./venv
source ./venv/bin/activate
# Make sure that colcon doesn’t try to build the venv
touch ./venv/COLCON_IGNORE
接下来,在虚拟环境中安装所需的Python包: [待校准@6579]
python3 -m pip install gtsam pyserial… etc
现在,您可以构建工作区并运行依赖于虚拟环境中安装的包的python节点。 [待校准@6580]
# Source Foxy and build
source /opt/ros/foxy/setup.bash
colcon build
注解
如果你想在Bloom上发布你的包,你应该把你需要的包添加到 rosdep
中,见 rosdep key contribution guide 。 [待校准@6581]