ROS2代码阅读笔记3-ROS2激光雷达简单避障行为

导入库和模块

#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)
  • sub_laser: 订阅激光雷达数据的主题 /scan
  • sub_JoyState: 订阅手柄控制状态的主题 /JoyState
  • pub_vel: 发布机器人速度指令的主题 /cmd_vel

参数声明和初始化

        #declareparam
        self.declare_parameter("linear", 0.5)
        self.linear = self.get_parameter('linear').get_parameter_value
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值