【问题标题】:Preemptive scheduling algorithm for autonomous vehicle自动驾驶汽车的抢占式调度算法
【发布时间】:2016-10-24 03:57:22
【问题描述】:

我不确定这是否是这个问题的最佳地点,但我认为这个问题与最优调度算法和排队理论有一些关系,所以希望它会没事。

我正着手制造一辆遥控车来自动导航路线。这个想法是它会一直走直线,直到其中一个接近传感器检测到墙壁或其他障碍物,这将导致中断和转向调整。

我在嵌入式系统课程中了解了一些关于 RTOS 调度算法的知识,并在网络性能课程中了解了抢占式排队,所以我想知道在对微控制器进行编程时,我是否会从将这些概念中的任何一个应用于此任务中受益,或者如果我想多了?主要目标是让汽车尽可能快地行驶而不会发生碰撞,但我也想防止它作为次要目标而变得紧张。

那么,从高层次的意义上来说,是否有一种特定的方法、方案或类型的调度策略来使用可以为这样的系统带来最佳性能的中断?是否有任何特定的关键部分我应该禁用中断?作为硬件限制的参考,我计划使用类似于 arduino 的微控制器,可能带有三个 IR 传感器。非常感谢任何意见或建议。

【问题讨论】:

    标签: arduino scheduling priority-queue interrupt-handling preemption


    【解决方案1】:

    在这里使用 RTOS 有点过头了。你需要考虑的是:

    • 您将使用哪种类型的传感器:距离(将返回到对象的距离)或存在(仅指示是否存在障碍物)?距离传感器需要一些处理(运行 ADC 转换或读取 I2C),而存在传感器可以直接连接到 uC 的外部中断。
    • 如何确保您的汽车真正直行?你会发现即使理论上你命令它直走,它也可能会轻微转动。

    根据以上问题的答案:

    • 如果您使用存在传感器,请尽快处理它们。即使您正在运行任何其他控制算法(如某些 PID),中断它也不会成为问题。

    • 如果您使用模拟距离传感器,请使用 ADC 转换就绪中断。然后,如果您的传感器向侧面看,您可以使用返回值与墙壁保持恒定距离,从而直线行驶(查看微型鼠标机器人)

    底线:如果您想快速前进并避免撞墙 - 尽可能快地处理传感器。

    【讨论】:

    • 感谢您的所有建议。我对距离传感器的处理很好奇。我在想存在传感器将是一个直接的硬件中断,但距离传感器将被处理然后用作软件中断。这是错的吗?我打算使用距离传感器,但我的微控制器没有直接的软件中断。
    • 假设您将 Arduino 与 Atmega328 一起使用 - 您有 ISR(ADC_vect) 中断。如果您的处理不会花很长时间,只需将其放在这里。或者,只需在此处读取 ADC 值,并在它们到达后立即在主循环中处理它们。
    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    相关资源
    最近更新 更多