ROS2速通:鱼香ROS|手撸一个Python节点

创建工作空间和功能包

mkdir -p town_ws/src
cd town_ws/src
ros2 pkg create village_li --build-type ament_python --dependencies rclpy
  • pkg create 是创建包的意思
  • –build-type 用来指定该包的编译类型,一共有三个可选项ament_pythonament_cmakecmake
  • –dependencies 指的是这个功能包的依赖,这里给了一个ros2的python客户端接口rclpy

接下来开始编写python节点,在__init__.py同级目录下创建一个叫做li4.py

非OOP方法编写

编写ROS2节点的一般步骤

  1. 导入库文件
  2. 初始化客户端库
  3. 新建节点
  4. spin循环节点
  5. 关闭客户端库
#li4.py
import rclpy
from rclpy.node import Node

def main(args=None):
    """
        ros2运行该节点的入口函数
        编写ROS2节点的一般步骤
        1. 导入库文件
        2. 初始化客户端库
        3. 新建节点对象
        4. spin循环节点
        5. 关闭客户端库
    """
    rclpy.init(args=args)
    li4_node = Node("li4")
    li4_node.get_logger().info("大家好,我是作家li4.")
    rclpy.spin(li4_node)
    rclpy.shutdown()

修改setup.py,增加一句话,告诉ros2村庄来了一位新村民李四,要找这位村民去village_li.li4:main路径下寻找。

    entry_points={
        'console_scripts': [
            "li4_node = village_li.li4:main"
        ],
    },
)

OOP方法编写

#li4.py
import rclpy
from rclpy.node import Node

class WriteNode(Node):
    def __init__(self,name):
        super().__init__(name)
        self.get_logger().info("大家好,我是作家%s." % name)


def main(args=None):
    """
        ros2运行该节点的入口函数
        编写ROS2节点的一般步骤
        1. 导入库文件
        2. 初始化客户端库
        3. 新建节点对象
        4. spin循环节点
        5. 关闭客户端库
    """
    rclpy.init(args=args)
    li4_node = WriteNode("li4")
    rclpy.spin(li4_node)
    rclpy.shutdown()
上一篇
下一篇