创建工作空间和功能包
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_python
、ament_cmake
、cmake
- –dependencies 指的是这个功能包的依赖,这里给了一个ros2的python客户端接口
rclpy
接下来开始编写python节点,在__init__.py同级目录下创建一个叫做li4.py
非OOP方法编写
编写ROS2节点的一般步骤
- 导入库文件
- 初始化客户端库
- 新建节点
- spin循环节点
- 关闭客户端库
#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()