#ros lib
import rclpy
from rclpy.node import Node
from geometry_msgs.msg import Twist
from sensor_msgs.msg import LaserScan
#common lib
import math
import numpy as np
import time
from time import sleep
from yahboomcar_laser.common import *
rclpy: ROS 2 Python客户端库。
Node: ROS 2中的节点基类。
Twist: 用于发布机器人速度的消息类型。
LaserScan: 激光雷达扫描数据的消息类型。
math: 数学函数库。
numpy: 数值计算库,用于处理数组和数学运算。
time: 用于时间管理。
yahboomcar_laser.common: 自定义的通用功能模块(具体内容不详)。
常量定义
print ("import done")
RAD2DEG = 180 / math.pi
RAD2DEG: 将弧度转换为度数的常量
laserAvoid 类定义
class laserAvoid(Node):
def __init__(self, name):
super().__init__(name)
laserAvoid: 继承自 Node,用于实现避障逻辑的类。
__init__: 初始化方法,初始化节点和必要的参数、发布者和订阅者。
订阅者和发布者
#create a sub
self.sub_laser = self.create_subscription(LaserScan, "/scan", self.registerScan, 1)
self.sub_JoyState = self.create_subscription(Bool, '/JoyState', self.JoyStateCallback, 1)
#create a pub
self.pub_vel = self.create_publisher(Twist, '/cmd_vel', 1)