# carweb_backend **Repository Path**: miao-qifeng/carweb_backend ## Basic Information - **Project Name**: carweb_backend - **Description**: 萧山电子科技大学双边拍卖小车 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-03-11 - **Last Updated**: 2024-11-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 双边拍卖 ![key process (2)](img/README/key.png) 1. 先得到本次拍卖的EVs和RSU的信息。(得到数量n和m)(映射到Map:{1:id1, 2:id2} 2. 随机初始化mu和lambda信息 3. 调用IDA过程 4. 得到最后的P、Q、X、Y。 5. 判断处理P和Q,得到任务配对关系。Task(任务内容, Pij,和Qji) 目前的判断逻辑是P对应位置的值应大于Q,认为合理值,分配给对应的小车。 6. 记录信息。 ## 用户接口 ![image-20230317220255855](img/README/image-20230317220255855.png) ## 拍卖信息接口 - POST注册拍卖信息:入参:admin指的是创建这次拍卖的管理员id, rsu和ev都是本次参与拍卖的角色,多个用户用逗号拼接id为字符串,如ev:5,7,8,9。taskId表示每个RSU选择的任务id,分别用逗号分隔,propertyValue表示每个任务的属性,用|分隔。 ![image-20230416102033735](img/README/image-20230416102033735.png) - 获取单个拍卖信息:localhost:3000/auction/{id} - 获取所有拍卖信息(可以用于展示历次拍卖)localhost:3000/auction/list - 双边拍卖接口,入参:因为之前注册会返回本次拍卖的id,传入该id表示进行本次拍卖localhost:3000/auction/ida/{id},该接口会返回本轮拍卖迭代次数,这里是20, 以及返回一个任务分配列表,列表中是AuctionTask对象, 其中ev和rsu表示这个任务计算出分配给对应的这两者,每个任务都关联着auction_id,因此可以通过auction_id得到本次拍卖的所有任务。 - 【新增】返回列表taskId表示这个任务执行的具体的默认任务id。 - 【新增】tasks表示一个taskObj列表,分别是该任务的各个属性和消耗 - 【新增】cost表示该任务需要消耗多少能量 ![image-20230416121929934](img/README/image-20230416121929934.png) ## 拍卖任务接口 - 获取所有auction的生成的任务,localhost:3000/auction_task/list - 【新增】获取某一次auction生成的任务,localhost:3000/auction_task/auction/{id} - 根据ev的id获取该ev所有的任务,localhost:3000/auction_task/ev/{id} ![image-20230416122557724](img/README/image-20230416122557724.png) 这里获得的信息可以之后传入小车拒绝任务接口。 - 根据rsu的id获取该rsu发布的任务,localhost:3000/auction_task/rsu/{id} ## 【新增】能量相关 更改小车能量 ![image-20230416123211071](img/README/image-20230416123211071.png) 查询小车能量 ![image-20230416123602581](img/README/image-20230416123602581.png) ## todo 可以给任务增加 状态属性(1完成 2未完成 3完成中)后续再加。 ## 估计小车完成任务的代价 目前的想法管理员可以先预定义几个可选的任务,比如: 1. taskName = "photo", propertyList = "distance, number", payList = "1, 5" 2. taskName = "video", propertyList = "distance, videoLen", payList = "1,1" | Id | task_name | Property_list | Pay_list | | ---- | --------- | ------------------ | -------- | | 1 | Photo | Distance, number | 1, 5 | | 2 | Video | Distance, videoLen | 1, 1 | todo(待修改) - 注册拍卖信息:(已完成) - RSU需要确定选择的任务, 以及任务的要求。 - 进行拍卖:(已完成) - 得到auctionTask,auctionTask需要增加几个属性,比如任务id, - 提供查看小车剩余能量、更新能量的接口。(已完成) - 小车决定是否接受任务(这里carId, taskId都是可以根据前面的接口获取的) - execute = no 表示小车3拒绝了37号任务 ![image-20230416124221889](img/README/image-20230416124221889.png) - execute = yes, 表示执行这个任务 - 剩余能量不足 ![image-20230416125141412](img/README/image-20230416125141412.png) - 执行, 表示做任务消耗了60, 之后rsu给了0.23*100 ![image-20230416130306033](img/README/image-20230416130306033.png) 1. 电动汽车在执行数据收集任务时,会消耗电力和计算资源。(电力和计算资源 =》 energy能量)=》 查询和修改。 2. 成本与 EV 收集的数据量 和 位置远近 两个因素相关, 增加了RSU发布任务时设置数据量和距离,计算开销。 3. EV可以根据自身电量判断是否接受该任务,如果接受,则完成任务后,消耗自身能量,获得RSU支付的能量补偿。 # 拍卖注册register /auction/register 需要更新传给后端的参数以及从后端接收的参数 # 双边拍卖接口 /auction/ida/{id} 需要更新从后端接收的参数 # 拍卖任务接口 获取某一次auction生成的任务,/auction_task/auction/{id} # 能量相关 /car/energy POST方式 修改,输入车id以及一个数表示对能量的修改 /car/energy 查询,输入车的id得到能量值 GET方式 # 小车判断是否接受任务 /car/judge POST 前端传carid,taskid,execute,表示某辆车是否执行某任务 后端根据不同情况返回不同的msg ## GPS Module - [x] 显示英文地图以及当前GPS定位位置,以及虚假GPS位置。 - [x] 区分两个位置的图标。 ![image-20230524133331476](img/README/image-20230524133331476.png) ## 获取小车电量 - [x] 调研得到小车电量的方法,MAX17043芯片。 - [ ] 实际去利用MAX17043去测得小车电量,作为衡量执行任务的代价。(芯片刚到,还在研究0-0) ## 拍卖算法通信延迟 - [x] 执行拍卖算法的时间消耗 - [x] 小车执行任务的时间消耗 ## 通信开销 - [x] 由于小车执行任务后,数据上传至阿里云,目前的数据形式是图片,因此对图片的开销进行了计算。 ![image-20230524134339432](img/README/image-20230524134339432.png) ## 会议纪要 - 思考如何将现有的工作/任务 结合到小车上(音频攻击,图像攻击,隐蔽通信),要求mqf和cyz同学思考一下,单独找时间交流。 - 通信开销这块理解有问题,应该是 从建立连接开始的 握手环节..等等,才是开销。 - 找时间室外演示, 看能不能检测具体的目标(涉及到目标检测,这个不急),主要是室外看能不能跑。 - 测电量这块尽快完成。 # 通信开销调研 ## python调用wireshark - https://subscription.packtpub.com/book/cloud-and-networking/9781789958096/2/ch02lvl1sec08/interacting-with-wireshark-with-pyshark - https://github.com/KimiNewt/pyshark/ ## Java调用wireshark - https://www.jnetpcap.com/ - https://github.com/slytechs-repos cyztest