一.功能包创建

ros2 pkg create demo_python_pkg --build-type ament_python --license Apache-2.0

先来创建一个包

功能包名:demo_python_pkg
构建类型:--build-type ament_python
声明功能包开源协议:--license Apache-2.0


二.功能包里编写节点

打开文件夹demo_python_pkg/demo_python_pkg/然后创建新的文件python_node.py

python_node.py

import rclpy
from rclpy.node import Node

def main():
    rclpy.init ()
    node = Node ("python_node")
    node.get_logger().info('你好 Python 节点!')
    rclpy.spin (node)
    rclpy.shutdown()

更新setup.py——添加配置注册节点

'python_node = demo_python_pkg.python_node:main',

setup.py是Python开发中常用的构建配置文件,添加的这句指令的含义是,当执行python_node 时就相当于执行demo_python_pkg目录下python_node 文件中的main函数。

打开package.xml进行声明——设置保证是添加依赖

<depend>rclpy<depend>

三.编译节点和功能包

在chapt2目录下使用colcon构建功能包

colcon build

通过source设置环境变量
 

source install/setup.bash
echo $AMENT PREFIX PATH

运行python_node节点
 

ros2 run demo_python_pkg python_node

需要注意的是,因为环境变量只对当前的终端上下文有效,所以打开新的终端后就要重
新执行source,才能找到节点。

四.功能包总结分析
 

demo_python_pkg:该文件夹下的init_py是Python包的标识文件,放置节点代码的目录

resource:该目录可以放置一些资源,该目录和其下的demo_python_pkg文件比较特殊,主要为了提供功能包标识
test:测试代码文件夹,用于放置代码单元测试文件,结合colcon构建工具中的测试相关指令,可以完成对代码的单元测试并形成报告。
LICENSE:该文件是功能包的许可证,保证知识产权

package.xml:该文件是功能包的清单文件,在该文件内声明了功能包的名称、版本编号、功能包管理者、构建类型、许可证和依赖等信息,方便分享移植。

setup.cfg:该文件是一个普通的文本文件,用于放置构建Python包时的配置选项,这些配置在构建时会被读取和处理。
setup.py:该文件是Python包的构建脚本文件,其中包含一个setupO)函数,用于指定如何构建和安装Python。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐