Summary

从零创建

包中 __init__ 同级编写节点

setup. py 中声明,指向 main 函数

构建功能包,只剩 install

setup. bash 补全路径

创建新的功能包

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

创建完成,生成文件如图:

300|300|300|300|300

编写功能包

创建节点 python_node.py

内容如下:

import rclpy  
from rclpy.node import Node  
 
def main():  
   rclpy.init()    
   node = Node('python_node'#节点名:python_node
   node.get_logger().info('Hello from Python ROS2 Node!'#日志打印
   node.get_logger().warn('This is a warning message.'
   rclpy.spin(node)  #ROS2启动,持续运行
   rclpy.shutdown()  
#不运行main函数,因为ros2构建会生成可执行文件调用main()
声明

在 setup. Py 中声明

’ 节点名 = 功能包名. 节点名. 函数名 ’

在功能包清单文件 package. Xml 中添加依赖 (非必要)

功能包依赖 rclpy

构建功能包

colcon build

Python 中只是对文件拷贝并加上一层包装
新生成 3 个文件夹 build (构建过程中间文件)/install(构建结果文件夹)/log

注意注意,进行到这里,install 文件为最终单独有用的文件 把 install 文件复制给别人,别人就可以直接运行功能包了
Install 文件内部:

可执行文件 python_node 中运行的 main () 函数为 install 文件夹下 python_node. py 中的 main 函数,而非构建功能包前 demo_python_pkg 下的 python_node. py 中的 main 函数

补全环境变量路径

目前运行可执行文件无法运行,找不到 main () 函数所在文件 python_node.py 上一层级的包 demo_pyhon_package, 需要自主添加路径

Python 功能包根据环境变量 PYTHONPATH 找包,故在 PYTHONPATH 上增加路径

手动添加

命令:export PATHONPATH = /home/wzy/chapt2/install/demo_python_pkg/lib/python3.10/site-package:$PYTHONPATH

自动添加

命令:source install/setup.bash  , 自动添加环境变量 PATHONPATH 路径

运行功能包中节点

ros2 run demo_python_package python_node