第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

时间:2024-05-23 21:38:46

我发布这一个博客只是为了方便来者去看比赛的规则,不关心版权等问题  如有问题请与我联系

以下部分是国赛的初赛部分的 规则

第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

 

 

 

关于wifi网络的说明

第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

 

 

 

UDP发送端指令源代码:

 

class Program

{

private static Socket sock;

private static IPEndPoint iep1;

private static byte[] data;

static void Main(string[] args)

{

    string hostName = Dns.GetHostName();//获取本机名

    IPHostEntry localhost = Dns.GetHostByName(hostName);//获取本机IPv4的地址

    IPAddress localaddr = localhost.AddressList[0];//本机IP地址

 

    //对IP地址进行操作,最后一位拼接为255,做为广播IP地址

    string strNowIP = localaddr.ToString();

    string[] strNowIPs = strNowIP.Split('.');

    string strNewIP = strNowIPs[0] + "." + strNowIPs[1] + "." + strNowIPs[2] + ".255";

 

    sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

    //iep1 = new IPEndPoint(IPAddress.Broadcast, 9050);//这个是自带的广播地址,但是地址为255.255.255.255,不能用,屏蔽掉

 

    //生成广播地址和端口号,端口号为9050

    iep1 = new IPEndPoint(IPAddress.Parse(strNewIP), 9050);

    Console.WriteLine("正式广播地址:" + iep1.Address.ToString() + " 广播端口号:9050");

 

    Console.Write("请输入指令,回车进行发送:");

    string content = Console.ReadLine();

    Console.WriteLine(content);

 

    if (!string.IsNullOrEmpty(content))

    {

string hostname = content;// Dns.GetHostName();

data = Encoding.ASCII.GetBytes(hostname);

sock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);

 

//开启一个线程,因为此处广播的需求是一直发送消息,所以为了避免卡死现象,开启线程,BroadcastMessage方法中while循环一直发送指令

Thread t = new Thread(BroadcastMessage);

t.Start();

Console.WriteLine("指令持续发送中....");

    }

    else

    {

Console.WriteLine("发送指令为空,发送失败,请重新启动发送程序,回车结束");

    }

 

    Console.ReadKey();

}

/// <summary>

/// 线程

/// </summary>

private static void BroadcastMessage()

{

    while (true)

    {

//线程中,死循环不间断的发送指令

sock.SendTo(data, iep1);

Thread.Sleep(500);

    }

}

}

 

 

UDP任务指令接收设置(以ESP8266为例):

1、设置STA模式:AT+CWMODE=1;

2、将通信模块加入热点:AT+CWJAP="GXDS2019","xnsq2019";(竞赛WiFi的SSID为"GXDS2019",密码为"xnsq2019");

3、开启单路连接:AT+CIPMUX=0;

4、作为客户端模式加入指定IP的UDP或者广播域:AT+CIPSTART="UDP","192.168.3.50",9050,9050,2;(IP地址为比赛公布地址,9050表示目标UDP端口,9050表示本地端口,2表示远端可变)。

// 博主说:这个其实就是一个 很简单的尝试, 参赛队用ESP8266 傻瓜式的自动连接wifi 然后利用UDP协议的广播功能 将任务信//息 广播到局域网内,然后所有的参赛队一起接收随机生成的任务信息 很简单的一个过程。。。。

//有限的难度应该就是在UDP数据的解包过程, 我用的是DMA   一次收一串的那种。。数据处理?  直接卡位置读就好了

//想要知道怎么处理的可以看我接下来可能会写的代码分析部分(其他博客)

 

决赛现场是在虚拟社区 临时生成新的任务,所有队伍 相同时间一起开始调试 改代码!  真的很考验实力

虚拟社区拍摄的图片,很震撼,全国最牛(之一)的那一撮本科生几乎都到

第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

这是决赛的场地图(虚拟社区结束回收了)、

第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

图片自己去调整吧  ,为了不让图片失真,,

最终我们抽签使用的是如下图所示的方案

第六届全国大学生工程训练竞赛国赛 -智能物料搬运-规则

 

 

这篇博客的意义在于方便后来人去看这一次比赛。  如果举办方不希望我公开这些资料请联系我  我将删除这些资料