ROS循迹机器人

该代码实现了一个PID控制器,包括了比例(P),积分(I)和微分(D)项的计算。初始化时设置了参数,如比例系数、积分系数和微分系数。在计算过程中,考虑了积分限幅,防止输出超出设定范围。同时,对时间间隔进行处理以优化微分项的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

# class PID:
    _kp = _ki = _kd = _integrator = _imax = 0
    _last_error = _last_derivative = _last_t = 0
    _RC = 1/(2 * pi * 20) # 
    def __init__(self, p=0, i=0, d=0, imax=0):
        self._kp = float(p) # 
        self._ki = float(i) # 
        self._kd = float(d) # 
        self._imax = abs(imax)
        self._last_derivative = float('nan')

    def get_pid(self, error, scaler):
        tnow = time.time()*1000 # ++ms
        dt = tnow - self._last_t
        output = 0
        if self._last_t == 0 or dt > 1000:
            dt = 0
            self.reset_I() # 
        self._last_t = tnow
        delta_time = float(dt) / float(1000)
        output += error * self._kp
        if abs(self._kd) > 0 and dt > 0:
            if isnan(self._last_derivative):
                derivative = 0
                self._last_derivative = 0
            else:
                derivative = (error - self._last_error) / delta_time
            derivative = self._last_derivative + \
                                     ((delta_time / (self._RC + delta_time)) * \
                                        (derivative - self._last_derivative))
            self._last_error = error
            self._last_derivative = derivative
            output += self._kd * derivative
        output *= scaler
        if abs(self._ki) > 0 and dt > 0:
            self._integrator += (error * self._ki) * scaler * delta_time
            if self._integrator < -self._imax: self._integrator = -self._imax
            elif self._integrator > self._imax: self._integrator = self._imax
            output += self._integrator
        return output
    def reset_I(self):
        self._integrator = 0
        self._last_derivative = float('nan')
 

mbot机器⼈巡线程序_mBot机器⼈编程——⽤机器⼈的逻辑思 考问题 mBot机器⼈编程 ——⽤机器⼈的逻辑思考问题 ⽂/陈林 提到机器⼈,想必⼤家都不会陌⽣。但如果问到什么是机器⼈时,似乎⼼中的答案并不是那么的确切了,甚⾄不知道如何回答这个问题。如 果你也对什么是机器⼈这个问题感到⽆从回答的话,那就对了,因为国际上并未有⼀个准确的定义。 什么是机器⼈? 如果你尝试去百度,你会得到:机器⼈(Robot)是⼀种能够半⾃主或全⾃主⼯作的智能机器。⽽你查阅辞海时,⼜能得到:⼀种可以接受感 应到周围变化及输⼊的机器,通常具有某种程度的⼈造智慧。⽽维基百科⾥描述的是:机器⼈包括⼀切模拟⼈类⾏为或思想与模拟其他⽣物 的机械。因此,每次课我都会⿎励孩⼦们尝试为⾃⼰所理解的机器⼈下⼀个定义。这次我也收获到了很多不同的答案,有认为机器⼈是能独 ⽴完成某⼀具体事情的机械装置,有认为机器⼈是能协助⼈完成⼯作的机器,也有同学认为机器⼈就是拓展⼈类某⼀能⼒的机械。 你为什么学习机器⼈? 机器⼈已经逐渐⾛⼊了我们的⽣活,为⼈们带来了巨⼤的便利,我们⼏乎可以预⾔,机器终将取代我们绝⼤部分的⼯作,为⼈们的⽣活带来 巨⼤的便利,包括医疗、公共服务、家庭⽣活和教育等。对的,在教育中,机器⼈除了可以充当我们的AI⽼师,如"有道"提供的"AI"英 语教育等,还可以作为学习和⾛进机器⼈世界的⼀个教育载体。很少有⼀门学科能同时涵盖了数学、物理、计算机、机械⼯程等领域。因 此,学习机器⼈可以做到多学科的融合。 如何学习机器⼈? 说起机器⼈的历史,早在1959年,机器⼈之⽗约瑟夫·恩格尔伯格便制造了世界上第⼀台⽤于⼯业⽣产的可编程机器⼈。到如今,机器⼈ 已经可以做到如索菲亚那种对答如流,能做出超过60多种表情的机器⼈,⼜或者如同波⼠顿公司⽣产的能奔跑和空翻的敏捷机器⼈。机器 ⼈发展如此迅速,要想学习机器⼈,就需要知道最根本的底层逻辑。尽管拓展到智能硬件,我们依然可以这样说,绝⼤部分的智能机械实现 逻辑都是:接收信息 处理信息 输出控制指令。因此我们的课程中包含了⼤量的项⽬,并且每⼀个项⽬都是遵循这样的逻辑实现的。 ⽤mBot机器⼈来开启你的学习之旅! mBot是MakeBlock公司⽣产的⾯向⼴⼤青少年的教育机器⼈,它⽀持图形化编程和c语⾔代码编程。其机器⼈⼤脑主板集成了RGB彩灯、 红外接收模块、蜂鸣器、电源模块和红外发射模块等。且包含了直流电件、红外遥控、蓝⽛、超声波、灰度传感器等多种外设。⾮常适合我 们初学者作为第⼀个⼊门编程和机器⼈的教具。 我们都做了些什么项⽬? 机器⼈的组装 学习mBot机器⼈的第⼀步,就是组装你⾃⼰的机器⼈,从每⼀个模块的搭建到拧上第⼀个颗螺丝再到装上电池贴上标签。是的,每⼀步都 由你⾃⼰完成,让你的机器⼈赋予上特殊的意义。 轨迹⾏⾛ 组装好的你的机器⼈了!快来试试机器⼈能跑起来吗?⾛个正⽅形试试: 超声避障 超声波模块会发出40Khz的超声波,并在阈值时间内,等待返回波,当接收到返回波时,利⽤声⾳在空⽓中的传播速度便可以计算出障碍物 的距离,当距离过近时认定为有障碍,通过控制电机让机器⼈转开。对的,机器⼈编程中,程序的⼀⼤结构就是分⽀语句。对于机器⼈⽽ ⾔,有太多的不确定性了,需要通过假设的⽅法来将接收到的信息分情况处理。这也就是规则,当它掌握的规则越多,它就越智能。 机器⼈⾛迷宫 机器⼈⾛迷宫灵感来源于"电脑⿏"⾛迷宫竞赛,我们的机器⼈在超声波的帮助下,能够轻松分辨出前⽅是否有障碍物,这样也就⾜够⾛⼀ 个简单的迷宫了。同学们尝试了利⽤随机数实现在碰到墙壁时,随机左右转,防⽌陷⼊死循环。最后在多次尝试后,挑战成功! 循线机器⼈ 利⽤双灰度传感器,加上四条规则: 1. 左边看到⽩⾊右转(左偏了) 2. 右边看到⽩⾊左转 3. 两边都为⽩停⽌ 4. 两边都为⿊前进 是的,⼈类之所以聪明,就是掌握了⼤量的规则,事物间的规则等。当我们教会机器⼈⼀些简单的规则后,它也就变得智能了。 送餐机器⼈ 很明显,我们的机器⼈⼏乎具备了简易送餐机器⼈的全部功能,能够按照指定线路⾏⾛,能够实时检测障碍物,最后就只差记录站点了。对 的,如果掌握变量的使⽤,你就可以尝试综合已经学习过的知识点,完成⼀个送餐机器⼈制作。 写在最后 初学机器⼈,你可能会发现,我们只不过是在交给机器⼈⼀些具体的规则,⽆论是让他完成智能声光控,亦或者让其送个餐,⾃动打扫⼀下 卫⽣等等,都是在不断的教会它更多的规则,让它在遇到问题的能够处理。⽽如果它变得能够处理⼀些突发性的问题,或者说当它能够创造 规则的时候,也就是⼈所具备的能⼒!⽽让机器⼈具备或延伸⼈的智能,也就是到了⼈⼯智能的领域了!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhugw2301

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值