精华内容
下载资源
问答
  • 交通信号灯

    2019-01-22 13:15:36
    基于车速的自适应交通信号灯控制系统,实现无人驾驶的快速通行
  • 单片机_交通信号灯.zip单片单片机_交通信号灯.zip机_交通信号灯.zip单片机_交通信号灯.zip
  • 交通信号灯3D模型

    2019-12-26 18:32:49
    交通信号灯3D模型适用于交通信号灯模型设计。
  • 交通信号灯multisim源文件,单个路口的交通灯,multisim12及以上版本的软件可以正常打开仿真。
  • 交通信号灯硬件设计

    2018-12-27 14:22:05
    本团队设计的交通信号灯项目,由软硬两部分构成,手机软件端管理系统通过蓝牙通信的方式来实现对交通信号的基础设置,获取各信号灯的实时状态数据,同时对信号灯进行实时的故障监测。硬件部分,通过单片机来控制交通...
  • 利用LED光效高、功耗低的特点,采用光伏电池供电,设计出一款LED交通信号灯。分析交通信号灯的技术要求和LED交通灯的实现方法,深入研究LED光源几种连接方式的优缺点,确定以串并混联方式作为LED信号灯的连接方式,...
  • multisim交通信号灯仿真
  • 这学期我们java课程的课程设计项目----交通信号灯的线程设计实验目的:多线程设计,同步机制题意 设计一个交通信号灯类:变量:位置、颜色(红、黄、绿)、显示时间(秒)。方法:切换信号灯。创建并启动两个线程(东西向...

    这学期我们java课程的课程设计项目----交通信号灯的线程设计

    实验目的:多线程设计,同步机制

    题意 设计一个交通信号灯类:

    变量:位置、颜色(红、黄、绿)、显示时间(秒)。

    方法:切换信号灯。

    创建并启动两个线程(东西向、南北向)同时运行。

    实验要求

    设计线程。

    设计路口信号灯示意图界面。

    进一步将每个方向的信号灯分成3种车道灯:左转、直行和右转。

    根据车流量进行时间的模糊控制。

    在课程设计的开始并没有仔细看老师的要求,只知道是交通信号灯。然后就开始各种找资料,百度,网上大量的关于红绿灯的设计都是参考张孝祥老师的教程,大概的设计方法是创建了三个类 lamp、road、lampcontrol。

    然鹅......对.....然鹅又来了,在查了大概两天资料后,我又反过来看了一遍老师发的设计要求.....这这这.....,光控制灯就行了啊,不要车的啊,捂脸...

    所以设计思路马上就变得清晰,根据张老师的做法,每个路口都有三个灯,分别为左转、直行、右转,所以一共有12盏灯。按照要求,右转灯为常亮灯,左转和直行灯才有红绿交替。在除去右转灯的八个灯里面,又可以分为四组可以两两匹配的灯,分别为东西左转南北(平行转垂直)、南北直行(垂直通行)、南北左转东西(垂直转平行)、东西直行(平行通行)。

    于是我给这个12个灯编了个号:

    ac3dce693b86dbce75372b97589a5f06.png

    emmm 大概就是这样,但是跟生活中的红绿灯不同,生活中的都是看对面路口的灯,我们这里是模拟嘛....就各个路口用各个路口的灯呗.....

    大致解释一下,

    1号灯为由南向西的左转灯,2号灯为由南向北的直行灯,3号灯为由南向东的右转灯。

    4号灯为由东向北的右转灯,5号灯为由东向西的直行灯,6号灯为由东向南的左转灯。

    7号灯为由北向西的右转灯,8号灯为由北向南的直行灯,9号灯为由北向东的左转灯。

    10号灯为由西向北的左转灯,11号灯为由西向东的直行灯,12号灯为由西向南的右转灯。

    然后根据匹配的原则,大概就是这么一张图:

    7a600c5d5c16c0664a0fb5f747510e2e.png

    我们就可以得到:

    这四组信号灯。

    到这里我们思路就很清晰了,我们可以分别为每一组信号灯开一个进程,然后使四个进程循环交替进行就实现了绿灯的转换。使用了程的同步技术。

    当然,我们都已经开了四个进程了,为了锦上添花,我当然不介意再加个小车了hhhhhh

    实验结果图:

    ddbe4def14e3ac5f9cff687631f5beb0.png

    源代码:

    light类:

    package traffic;

    public class light {

    int x,y; //灯在画布上的位置

    boolean status; //灯的状态

    public light(int x,int y,boolean islight) {

    this.x=x;

    this.y=y;

    this.status=islight;

    }

    public void setlight(boolean sta) { //对外接口更改灯的状态

    this.status=sta;

    }

    }

    lamp类:

    package traffic;

    public class lamp implements Runnable {

    light opposite, now; //相互匹配的两个灯

    int greentime; //绿灯亮的时间

    int name; //编组

    boolean status; //状态

    static Object lock = new Object();

    public lamp(light l0, light l2,int gt, boolean st, int name) {

    now = l0;

    opposite = l2;

    status = st;

    greentime = gt;

    this.name = name;

    lightstatues();

    }

    public void change() {

    this.status = !(this.status);

    lightstatues();

    }

    public void setgreentime(int time) {

    this.greentime=time;

    }

    public int getgreentime() {

    return this.greentime;

    }

    public void lightstatues() {

    opposite.setlight(status);

    now.setlight(status);

    }

    public void run() {

    while (true) {

    synchronized (lock) { //使用synchronized实现进程间的互斥

    if (name == mainclass.panel.islight) { //使用辅助变量实现进程按顺序循环

    //System.out.println("now is: "+name);

    change();

    mainclass.panel.repaint();

    try {

    Thread.sleep(greentime);

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    lock.notifyAll(); //唤醒其他进程

    change();

    mainclass.panel.LampChange();

    mainclass.panel.repaint();

    try {

    lock.wait();

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    } else {

    try {

    lock.wait(); //挂起进程

    } catch (InterruptedException e) {

    e.printStackTrace();

    }

    }

    }

    }

    }

    }

    Mypanel类:

    package traffic;

    import java.awt.Color;

    import java.awt.Graphics;

    import java.util.ArrayList;

    import java.util.Random;

    import javax.swing.JPanel;

    public class Mypanel extends JPanel {

    light l0,l2,l3,l4,l5,l6,l7,l8,l9,l10,l11,l12; //十二个灯

    lamp lamp1,lamp2,lamp3,lamp4; //四组信号灯

    static int islight; //实现进程循环的辅助变量

    Random r=new Random();

    static public ArrayList lightlist= new ArrayList(); //使用list方便遍历每个灯

    static public ArrayList carlist= new ArrayList();          //方便遍历每个车

    public Mypanel() {

    // TODO Auto-generated constructor stub

    l0=addlist(l0, 212, 316, false);

    l2=addlist(l2, 242, 316, false);

    l3=addlist(l3, 272, 316, true);

    l4=addlist(l4, 316, 116, true);

    l5=addlist(l5, 316, 146, false);

    l6=addlist(l6, 316, 176, false);

    l7=addlist(l7,116 , 70, true);

    l8=addlist(l8, 146, 70, false);

    l9=addlist(l9, 176, 70, false);

    l10=addlist(l10, 70, 212, false);

    l11=addlist(l11, 70, 242, false);

    l12=addlist(l12, 70, 272, true

    lamp1=new lamp(l9,l0,2000,false,0);

    lamp2=new lamp(l11,l5,2000,false,1);

    lamp3=new lamp(l10,l6,2000,false,2);

    lamp4=new lamp(l8,l2,2000,false,3);

    islight = 0 ;

    Thread t1=new Thread(lamp1); //创建并启动线程

    Thread t2=new Thread(lamp2);

    Thread t3=new Thread(lamp3);

    Thread t4=new Thread(lamp4);

    t1.start();

    t2.start();

    t3.start();

    t4.start();

    }

    light addlist(light a,int x,int y,boolean sta) {

    a=new light(x,y,sta);

    lightlist.add(a);

    return a;

    }

    public void addcar() { //生成小车

    int now,next;

    now=r.nextInt(4);

    next=r.nextInt(4);

    car testcar=null;

    while(now==next)

    next=r.nextInt(4);

    switch(now) {

    case 0:

    testcar=new car(now,next,l0,l2,l3);

    break;

    case 1:

    testcar=new car(now,next,l6,l5,l4);

    break;

    case 2:

    testcar=new car(now,next,l9,l8,l7);

    break;

    case 3:

    testcar=new car(now,next,l10,l11,l12);

    break;

    }

    carlist.add(testcar);

    Thread catt=new Thread(testcar);

    catt.start();

    }

    public void LampChange() {

    islight=(islight+1)%4;

    }

    public void paint(Graphics g) {

    super.paint(g);

    g.setColor(Color.darkGray); //画路

    g.fillRect(0, 100, 400, 6);

    g.fillRect(0, 300, 400, 6);

    g.fillRect(100, 0, 6, 400);

    g.fillRect(300, 0, 6, 400);

    g.setColor(Color.gray);

    g.fillRect(0, 200, 400, 2);

    g.fillRect(200, 0, 2, 400);

    g.setColor(Color.blue);

    g.setColor(Color.black); //画信号灯板

    g.fillRect(202,306, 100, 40);

    g.fillRect(306,106, 40, 100);

    g.fillRect(106,60, 100, 40);

    g.fillRect(60,202,40, 100);

    light temp;

    car buf;

    for(int i=0;i

    buf=carlist.get(i);

    g.setColor(Color.BLUE);

    g.fillRect(buf.x, buf.y, 50, 50);

    }

    for(int i=0;i

    temp=lightlist.get(i);

    if(temp.status)

    g.setColor(Color.green);

    else

    g.setColor(Color.RED);

    g.fillOval(temp.x, temp.y, 20, 20);

    }

    }

    }

    welcomepanel类:

    package traffic;

    import java.awt.Color;

    import java.awt.Font;

    import java.awt.Graphics;

    import javax.swing.JPanel;

    public class welcomepanel extends JPanel implements Runnable{ //开始界面

    int info = 0;

    Boolean isLive=true;

    public void paint(Graphics g) {

    super.paint(g);

    g.fillRect(0, 0, 420,450);

    g.setColor(Color.red);

    g.setFont(new Font("微软雅黑", Font.BOLD, 30));

    if (info % 2 == 0) {

    g.drawString("多线程红绿灯模拟", 80, 150);

    }

    }

    public void run() {

    // TODO Auto-generated method stub

    while (true) {

    try {

    Thread.sleep(100);

    } catch (InterruptedException e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    }

    info++;

    this.repaint();

    if (isLive == false) {

    break;

    }

    }

    }

    }

    set类:

    package traffic;

    import java.awt.FlowLayout;

    import java.awt.GridLayout;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JButton;

    import javax.swing.JDialog;

    import javax.swing.JFrame;

    import javax.swing.JLabel;

    import javax.swing.JOptionPane;

    import javax.swing.JPanel;

    import javax.swing.JTextField;

    public class set extends JFrame implements ActionListener { //设置界面

    JLabel lab1,lab2,lab3,lab4;

    JTextField jtext1,jtext2,jtext3,jtext4;

    JPanel panel1,panel2,panel3,panel4;

    JButton jb1,jb2;

    int time1,time2,time3,time4;

    public set(){

    lab1=new JLabel("南北左转东西:");

    lab2=new JLabel("东西直行:");

    lab3=new JLabel("东西左转南北:");

    lab4=new JLabel("南北直行:");

    time1=mainclass.panel.lamp1.getgreentime();

    time2=mainclass.panel.lamp2.getgreentime();

    time3=mainclass.panel.lamp3.getgreentime();

    time4=mainclass.panel.lamp4.getgreentime();

    jtext1=new JTextField(String.valueOf(time1));

    jtext2=new JTextField(String.valueOf(time2));

    jtext3=new JTextField(String.valueOf(time3));

    jtext4=new JTextField(String.valueOf(time4));

    jb1=new JButton("确定");

    jb1.addActionListener(this);

    jb2=new JButton("取消");

    jb2.addActionListener(this);

    this.setLayout(new GridLayout(5,2,10,5));

    this.add(lab1);

    this.add(jtext1);

    this.add(lab2);

    this.add(jtext2);

    this.add(lab3);

    this.add(jtext3);

    this.add(lab4);

    this.add(jtext4);

    this.add(jb1);

    this.add(jb2);

    this.setLocationRelativeTo(null);

    this.setSize(200, 200);

    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

    this.setResizable(false);

    this.setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {

    if(e.getSource()==jb1) {

    if(jtext1.getText().length()==0||jtext2.getText().length()==0||jtext3.getText().length()==0||jtext4.getText().length()==0)

    JOptionPane.showMessageDialog(this, "请输入完整数据!", "错误", JOptionPane.INFORMATION_MESSAGE);

    else {

    mainclass.panel.lamp1.setgreentime(Integer.parseInt(jtext1.getText()));

    mainclass.panel.lamp2.setgreentime(Integer.parseInt(jtext2.getText()));

    mainclass.panel.lamp3.setgreentime(Integer.parseInt(jtext3.getText()));

    mainclass.panel.lamp4.setgreentime(Integer.parseInt(jtext4.getText()));

    this.dispose();

    }

    }else if(e.getSource()==jb2){

    this.dispose();

    }

    }

    }

    mainclass主类:

    package traffic;

    import java.awt.event.ActionEvent;

    import java.awt.event.ActionListener;

    import javax.swing.JFrame;

    import javax.swing.JMenu;

    import javax.swing.JMenuBar;

    import javax.swing.JMenuItem;

    import javax.swing.JOptionPane;

    public class mainclass extends JFrame implements ActionListener{

    static Mypanel panel;

    JMenuBar jmb;

    JMenu jm1, jm2;

    JMenuItem jmi1, jmi2,jmi3,jmi4;

    welcomepanel sp;

    mainclass(){

    this.setTitle("traffic lamp");

    this.setSize(420,450);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    jmb=new JMenuBar();

    jm1=new JMenu("控制");

    jm2=new JMenu("设置");

    jmi1=new JMenuItem("开始模拟");

    jmi1.addActionListener(this);

    jmi2=new JMenuItem("退出模拟");

    jmi2.addActionListener(this);

    jmi3=new JMenuItem("随机生成小车");

    jmi3.addActionListener(this);

    jmi4=new JMenuItem("更改绿灯时间");

    jmi4.addActionListener(this);

    jm1.add(jmi1);

    jm1.add(jmi2);

    jm1.add(jmi3);

    jm2.add(jmi4);

    jmb.add(jm1);

    jmb.add(jm2);

    this.setJMenuBar(jmb);

    sp=new welcomepanel();

    Thread t=new Thread(sp);

    t.start();

    this.setContentPane(sp);

    this.setLocationRelativeTo(null);

    this.setResizable(false);

    this.setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {

    if(e.getSource()==jmi1) {

    sp.isLive=false;

    this.remove(sp);

    panel = new Mypanel();

    this.setContentPane(panel);

    this.setVisible(true);

    }else if(e.getSource()==jmi2) {

    System.exit(0);

    }else if(e.getSource()==jmi3) {

    if(panel==null)

    JOptionPane.showMessageDialog(this, "请开始模拟再生成小车", "错误", JOptionPane.INFORMATION_MESSAGE);

    else panel.addcar();

    }else if (e.getSource() == jmi4) {

    if(mainclass.panel==null)

    JOptionPane.showMessageDialog(this, "请开始模拟再进行设置", "错误", JOptionPane.INFORMATION_MESSAGE);

    else new set();

    }

    }

    public static void main(String[] args) {

    new mainclass();

    }

    }

    多线程正确性测试:

    我们在lamp类的run()方法中添加了一句控制台打印命令,每次进程运行时即会打印此进程的name成员

    4db0bd80b5c0ea1fb5b4d7af09c40988.png

    正确的打印结果应该为 0-1-2-3-4-0-1-2-3-4-.......-1-2-3-....

    控制台的输出结果为:

    05eb5c92b6cd388095890d4f8fc41679.png

    符合预测结果,实验完成!

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    展开全文
  • ZN-ZNSDHX交通信号灯实训装置|交通信号灯实训系统设备 一、概述 本装置是PLC学习中典型的执行机构,本设备可模拟复杂的十字路口交通信号控制系统,包括车辆直行、行人直行、过街手动按钮等的逻辑控制。 二、主要...

    ZN-ZNSDHX交通信号灯实训装置|交通信号灯实训系统设备
    一、概述
    本装置是PLC学习中典型的执行机构,本设备可模拟复杂的十字路口交通信号控制系统,包括车辆直行、行人直行、过街手动按钮等的逻辑控制。
    在这里插入图片描述
    二、主要特点
    1、直观的环境界面,便于操作和理解。
    2、可做复杂交通环境的现场模拟。
    三、性能参数
    3、输入电源:AC220V±10%(单相三线);
    4、整机功率:<1kVA;
    5、外形尺寸:500×350×680mm。
    四、产品涉及课程
    可编程控制器及其应用等。
    五、试验内容
    6、机械:装置的机械安装与位置调整;
    7、电气:电器元件的布线;
    8、PLC:电气逻辑控制思路及编程应用。

    展开全文
  • 基于LabVIEW的交通信号灯,课设
  • 本实用新型涉及交通信息号灯控制领域,特别是涉及智能交通信号灯防堵塞控制系统。背景技术:目前已有的交通信号灯控制系统,大多只关注于单个路口的最大通行量,容易出现由于只考虑该路口通行量最大化,有时不但不会...

    本实用新型涉及交通信息号灯控制领域,特别是涉及智能交通信号灯防堵塞控制系统。

    背景技术:

    目前已有的交通信号灯控制系统,大多只关注于单个路口的最大通行量,容易出现由于只考虑该路口通行量最大化,有时不但不会缓解交通,甚至会导致相邻路口出现拥堵的情况。

    技术实现要素:

    基于此,有必要针对传统的信号灯控制系统缓解交通拥堵能力仍然不够理想的问题,提供一种智能交通信号灯防堵塞控制系统。

    一种智能交通信号灯防堵塞控制系统,

    在一定区域内,每个路口设置有4个路况信息获取装置、2个信号灯控制器和1个路口决策控制器,

    所述4个路况信息获取装置分别设置在路口的东侧、西侧、南侧和北侧,所述路口信息获取装置用于实时获取路口对应一侧的路况信息;

    所述2个信号灯控制器分别为东西方向信号灯控制器和南北方向信号灯控制器,所述东西方向信号灯控制器与路口东侧和西侧的路况信息获取装置相连,所述南北方向信号灯控制器与路口南侧和路口北侧的路况信息获取装置相连,所述东西方向信号灯控制器用于控制路口东西方向的信号灯的运转,所述南北方向信号灯控制器运用于控制路口南北方向信号灯的运转;

    所述路口决策控制器与所述2个信号灯控制器相连,所述路口决策控制器通过信号灯控制器接收路况信息获取装置获取的路况信息,并根据路况信息输出信号灯控制策略,通过信号灯控制策略控制2个信号灯控制器的运转;

    还包括在所述区域内设置的1个终端决策器,所述终端决策器与各个路口的路口决策控制器相连,用于获取各个路口决策控制器的数据,并根据各个路口决策控制器的数据输出区域信号灯控制策略。

    本系统通过路口决策控制器可以控制各个路口的信号灯的运转。当某个路口的拥堵情况超过阈值后,终端决策控制器可以获取该区域内各个路口的决策权,也就是各个路口的信号灯由终端决策控制器进行控制。终端决策控制器依据上述的区域信号灯控制策略统一控制整个区域的信号灯。这样可避免只关注于单个路口的最大通行量而造成相邻路口拥堵的情况。有利于解决交通拥堵问题。

    在其中一个实施例中,所述路况信息获取装置包括支持usb传输的电子摄像头和与所述电子摄像头连接的第一通信模块。

    在其中一个实施例中,所述第一通信模块采用skw77-wifi模块。

    在其中一个实施例中,所述信号灯控制器包括信号灯控制模块以及与信号灯控制模块相连的第二通信模块。

    在其中一个实施例中,所述第二通信模块采用skw77-wifi模块。

    在其中一个实施例中,所述路口决策控制器包括数据处理组件和与数据处理组件相连的第三通信模块。

    在其中一个实施例中,所述数据处理组件为nvidiajetsontk1开发组件。

    在其中一个实施例中,所述终端决策器包括数据处理组件和与数据处理组件相连的第四通信模块。

    在其中一个实施例中,所述数据处理组件为nvidiajetsontk1开发组件。

    附图说明

    图1为本实用新型的实施例的交通信号灯防堵塞控制系统的路口决策控制器与路况信息获取装置的连接关系示意图。

    图2为本实用新型的实施例的交通信号灯防堵塞控制系统的路口决策控制器与终端决策器的连接关系示意图。

    图3为本实用新型的实施例所采用的路口的示意图。

    其中:

    100、路口决策控制器

    210、东西方向信号灯控制器

    220、南北方向信号灯控制器

    300、路况信息获取装置

    400、终端决策器

    具体实施方式

    为使本实用新型的上述目的、特征和优点能够更加明显易懂,下面结合附图对本实用新型的具体实施方式做详细的说明。在下面的描述中阐述了很多具体细节以便于充分理解本实用新型。但是本实用新型能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本实用新型内涵的情况下做类似改进,因此本实用新型不受下面公开的具体实施例的限制。

    需要说明的是,当元件被称为“固定于”另一个元件,它可以直接在另一个元件上或者也可以存在居中的元件。当一个元件被认为是“连接”另一个元件,它可以是直接连接到另一个元件或者可能同时存在居中元件。

    除非另有定义,本文所使用的所有的技术和科学术语与属于本实用新型的技术领域的技术人员通常理解的含义相同。本文中在本实用新型的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本实用新型。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。

    如图1和图2所示,本实用新型的实施例提供了一种智能交通信号灯防堵塞控制系统,具体为:

    在一定区域内,每个路口设置有4个路况信息获取装置300、2个信号灯控制器和1个路口决策控制器100,

    所述4个路况信息获取装置300分别设置在路口的东侧、西侧、南侧和北侧,所述路口信息获取装置用于实时获取路口对应一侧的路况信息;

    所述2个信号灯控制器分别为东西方向信号灯控制器210和南北方向信号灯控制器220,所述东西方向信号灯控制器210与路口东侧和西侧的路况信息获取装置300相连,所述南北方向信号灯控制器220与路口南侧和路口北侧的路况信息获取装置300相连,所述东西方向信号灯控制器210用于控制路口东西方向的信号灯的运转,所述南北方向信号灯控制器220运用于控制路口南北方向信号灯的运转;

    所述路口决策控制器100与所述2个信号灯控制器相连,所述路口决策控制器100通过信号灯控制器接收路况信息获取装置300获取的路况信息,并根据路况信息输出信号灯控制策略,通过信号灯控制策略控制2个信号灯控制器的运转;

    还包括在所述区域内设置的1个终端决策器400,所述终端决策器400与各个路口的路口决策控制器100相连,用于获取各个路口决策控制器100的数据,并根据各个路口决策控制器100的数据输出区域信号灯控制策略。

    需要说明的是,上述区域可以包括n个路口,具体路口的数量可根据实际情况进行设定。

    本系统通过路口决策控制器100可以控制各个路口的信号灯的运转。当某个路口的拥堵情况超过阈值后,例如,将等待车流的长度作为判断依据,或者将等待的车流长度除以对应道路长度得到的拥堵值作为判断依据,如果,等待的车流长度超过阈值后,或者拥堵值超过阈值后,终端决策控制器可以获取该区域内各个路口的决策权,也就是各个路口的信号灯由终端决策控制器进行控制,不再由各个路口的路口控制决策控制器控制。终端决策控制器依据上述的区域信号灯控制策略统一控制整个区域的信号灯。

    这样设置,可避免只关注于单个路口的最大通行量而造成相邻路口拥堵的情况。有利于解决交通拥堵问题。而且,也有利于提高数据处理速度。因为各个路口的信号灯由各个路口的路口决策控制器100控制,只有在拥堵情况超过阈值后,终端决策器400才接管控制权。所以在通常情况下,各个路口相应数据是由路口决策控制器100进行处理。不需要集中由终端决策器400处理。这样有利于提高数据处理速度。

    需要说明的是,上述路口决策控制器100以及终端决策控制器可应用现有的决策控制器。现有的决策控制器一般是通过获得路口的路况信息,结合路口信号灯的信息,通过相应算法(例如dqn算法)获得信号灯最优控制策略。该策略可随决策控制器的不断学习而不断调整更新。

    本实施例中,所述路况信息获取装置300包括支持usb传输的电子摄像头和与所述电子摄像头连接的第一通信模块。

    具体的,所述第一通信模块采用skw77-wifi模块。当然也可以采用其它模块,只要能实现通信功能即可。

    本实施例中,所述信号灯控制器包括信号灯控制模块以及与信号灯控制模块相连的第二通信模块。所述第二通信模块与所述第一通信模块相连。同时,第二通信模块与信号灯相连。信号灯控制器通过第二通信模块向信号灯发送控制指令。

    具体的,所述第二通信模块采用skw77-wifi模块。当然也可以采用其它模块,只要能实现通信功能即可。

    本实施例中,所述路口决策控制器100包括数据处理组件和与数据处理组件相连的第三通信模块。所述第三通信模块与所述第二通信模块相连。具体的,第三通信模块可分别与2个信号灯控制器的第二通信模块分别相连。

    本实施例中,所述数据处理组件为nvidiajetsontk1开发组件。

    本实施例中,所述终端决策器400包括数据处理组件和与数据处理组件相连的第四通信模块。

    本实施例中,所述数据处理组件为nvidiajetsontk1开发组件。

    以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

    以上所述实施例仅表达了本实用新型的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对实用新型专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本实用新型构思的前提下,还可以做出若干变形和改进,这些都属于本实用新型的保护范围。因此,本实用新型专利的保护范围应以所附权利要求为准。

    展开全文
  • 交通信号灯.SchDoc

    2020-12-01 18:21:22
    基于51单片机设计的交通信号灯,这个是完整的电路原理图,其中数码管用的是两个一位红色共阳数码管(因为手头只有这些材料了)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,643
精华内容 1,057
关键字:

交通信号灯