节点 的 理解
执行具体任务的进程
独立运行的可执行文件
可使用不同的编程语言
可分布式运行在不同主机
通过节点名称进行管理
示例:
注意:新建节点需要在对应文件夹下的setup.py文件中增加节点入口
from setuptools import setup
package_name = 'learning_node'
setup(
name=package_name,
version='0.0.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='Hu Chunxu',
maintainer_email='huchunxu@guyuehome.com',
description='TODO: Package description',
license='TODO: License declaration',
tests_require=['pytest'],
entry_points={
'console_scripts': [
#新增节点 及 入口
'node_nihao = learning_node.node_nihao:main',
'node_nihao_class = learning_node.node_nihao_class:main',
'node_helloworld = learning_node.node_helloworld:main',
'node_helloworld_class = learning_node.node_helloworld_class:main',
'node_object = learning_node.node_object:main',
'node_object_webcam = learning_node.node_object_webcam:main',
],
},
)
文字:
面向过程编程
import rclpy
from rclpy.node import Node
import time
def main(args=None):
rclpy.init(args=args)
node = Node("node_nihao")
while rclpy.ok():
node.get_logger().info("你好,ROS2")
time.sleep(0.5)
node.destory_node()
rclpy.shutdown()
面向对象编程
import rclpy
from rclpy.node import Node
import time
class nihaoNode(Node):
def __init__ (self, name):
super().__init__(name)
while rclpy.ok():
self.get_logger().info("你好,ROS2")
time.sleep(0.5)
def main(args=None):
rclpy.init(args=args)
node = nihaoNode("node_nihao")
node.destroy_node()
rclpy.shutdown()
图像:
单张图片:
获取摄像头图像流: