LabviewCarla仿真平台搭建一:平台设计及仿真视频可视化实现

=

文章目录

  • 背景
  • 一、平台设计
  • 二、视频显示模块实现
    • 1、视频模块实现框架
    • 2、python-camera数据生成
    • 3、labview-camera数据可视化
  • 三、效果展示


背景

在使用carla的时候,有平台的话可以提高效率,因此想结合labview和carla设计一个仿真平台-labcar。其实carla对python的兼容性更强,想过用pyqt或者vue+flask方法去设计仿真平台,但是考虑到上位机的UI设计和硬件控制还是labview更有优势一点,加上我的labview用的也比较熟练,所以就选择了labview。


一、平台设计

1、UI的话简单地设计了一下布局,不过后期的话肯定要修改跟完善的,不过下面这些设计基本也够使用的了。

在这里插入图片描述

2、平台框架

这种方式不跑在实时机,但是数据如果统一由python调度,加上can端用python-can控制canoe去控制报文发送,这种模式应该还是挺稳定的。
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1644725ec19e462590b673d89439431b.png

二、视频显示模块实现

1、视频模块实现框架

在这里插入图片描述

2、python-camera数据生成

1)展示python处理视频数据部分,用线程实现,因为后续会有多个camera。这里的内容就比较简单,调用carla生成camera图像,然后再通过camera.listen()去回调函数处理image data,并发送至labview。

class GenarateCamera(threading.Thread):def __init__(self, world, ego_vehicle, camera_para):super(GenarateCamera, self).__init__()self.camera_para = camera_paraself.tcp_socket = TcpSocketSetup(socket_port=self.camera_para.tcp_port)self.ego_vehicle = ego_vehicleself.camera_para = camera_paraself.world = worldself.camera = Noneself.start()def camera_callback(self, data):# image是RGBA图像数据image = np.frombuffer(data.raw_data, dtype=np.uint8).reshape((data.height, data.width, 4))# 从RGBA数据中提取RGB数据rgb_image = image[:, :, :3]# 将image转换成数组rgb_image_bytes = rgb_image.tobytes()self.send_image_to_platform(rgb_image_bytes)def send_image_to_platform(self, image_bytes):self.tcp_socket.send_data(image_bytes)def genarate_camera(self):camera_bp = self.world.get_blueprint_library().find('sensor.camera.rgb')camera_bp.set_attribute('image_size_x', str(self.camera_para.width))camera_bp.set_attribute('image_size_y', str(self.camera_para.height))relative_x = self.camera_para.relative_x if self.camera_para.relative_x != -999 else 0relative_y = self.camera_para.relative_y if self.camera_para.relative_y != -999 else 0relative_z = self.camera_para.relative_z if self.camera_para.relative_z != -999 else 0pitch = self.camera_para.pitch if self.camera_para.pitch != -999 else 0yaw = self.camera_para.yaw if self.camera_para.yaw != -999 else 0roll = self.camera_para.roll if self.camera_para.roll != -999 else 0# 设置Camera的安装坐标系camera_transform = carla.Transform(carla.Location(relative_x, relative_y, relative_z),carla.Rotation(pitch, yaw, roll))# 生成Cameraself.camera = self.world.spawn_actor(camera_bp, camera_transform, attach_to=self.ego_vehicle,attachment_type=carla.libcarla.AttachmentType.Rigid)#接收camera数据self.camera.listen(self.camera_callback)def run(self):try:self.genarate_camera()while True:passfinally:self.camera.destroy()

3、labview-camera数据可视化

1)abview通过NI vision模块,将python发送过来的rgb数据可视化,python在传输数据的时候将image data转换成字节流了,labview接收到字节流之后先转换成字节数组,然后3个为一组取出rgb的数据,再根据图像的宽高排列成二维簇数据,然后使用NI vision的IMAQ ColorValueToInteger VI将rgb簇转换成u32位的像素值,最后再使用IMAQ ArrayToColorImage VI将数据可视化。
2)NI这部分我花了好长时间才试出来,因为网上根本没有案例。。

在这里插入图片描述


三、效果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/15729.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DASBOOK】Mark loves cat

文章目录 一、工具下载二、Mark loves cat解题感悟 一、工具下载 克隆dirsearch仓库: git clone https://github.com/maurosoria/dirsearch.git下载 githack工具 git clone https://github.com/lijiejie/GitHack.git二、Mark loves cat 用dirsearch扫描目录&…

talib 安装

这里写自定义目录标题 talib 安装出错 talib 安装出错 https://github.com/cgohlke/talib-build/releases 这里找到轮子 直接装。

DatePicker日期选择框(antd-design组件库)简单使用

1.DatePicker日期选择框 输入或选择日期的控件。 2.何时使用 当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。 组件代码来自: 日期选择框 DatePicker - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:…

简单3步,ERP、OA、CRM等客户端,安全远程访问服务端

如今,企业员工出差远程办公和分支机构的协同工作变得越来越普遍。然而,如何确保在不同地点的员工都能安全、便捷地访问公司内网的C/S(Client/Server)架构办公系统,是一个亟待解决的问题。 贝锐花生壳内网穿透服务提供…

基于JAVA GUI体育馆管理系统的会员功能

Java GUI即Java图形用户界面,是一种使用图形化元素(如窗口、按钮、文本框等)来构建用户界面的技术。它基于Java的Swing框架,可以用于创建各种复杂的用户界面,包括窗口、对话框、菜单、按钮、文本框、复选框、下拉列表等…

SQL学习小记(一)

SQL学习小记(一) 1. 存储过程&存储函数1.1. 存储过程1.2. 存储函数 2. DEFINER3. INSERT INTO(插入新记录)4. REPLACE()…AS…5. SUM()函数6. CASE WHEN7. STR_TO_DATE日期时间处理函数8. SUBSTRING函数9. dateFormat函数10. …

神奇动物在哪里?斯洛文尼亚旅游之野生动物寻踪

不仅拥有优美动人的自然风光,斯洛文尼亚还以其丰富的生物多样性而闻名。得益于国家对大自然开展的保护工作,斯洛文尼亚超过三分之一的国土面积都被规划为保护区,拥有约1.5万种动物和6000种植物,其中不乏众多特有、稀有和濒危动植物…

DT浏览器有一些特点和优势,可能是人们选择使用的原因

DT浏览器有一些特点和优势,可能是人们选择使用的原因: - 好评如潮:DT浏览器在网络上获得了众多用户的好评,口碑良好。 - 使用微软搜索引擎技术:DT浏览器采用了微软的搜索引擎技术,在搜索内容上提供了国内…

Gitlab安装

配置文件: /etc/gitlab/gitlab.rb日志文件: /var/log/gitlab/数据文件: /var/opt/gitlab/静态文件和网页内容: /opt/gitlab/embedded/service/gitlab-rails/public/ # 查看当前状态 git status # 提交本地更改 git commit -m &q…

通过Wirtinger流进行相位恢复:理论与算法

文章目录 1. 简介2. 算法描述2.1 初始化(Initialization)2.2 迭代更新(Iterative Updates)2.3 学习率调整(Learning Rate Adjustment) 3. 代码实现3.1 一维信号测试 (Gaussian model)3.2 一维信号测试 (Coded diffract…

【C++】牛客——BC157 素数回文

✨题目链接: BC157 素数回文 ✨题目描述 现在给出一个素数,这个素数满足两点: 只由1-9组成,并且每个数只出现一次,如13,23,1289。 位数从高到低为递减或递增,如2459,87631。 请你判断一下&…

从零开始搭建Springboot项目脚手架4:保存操作日志

目的:通过AOP切面,统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面,把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…

最新文章合集

GitHub宝藏项目:每天一个,让你的技术库增值不停! STORM、SuperMemory、Awesome Chinese LLM、AI写作助手、资料搜集、文章生成、视角问题引导、模拟对话策略、内容导入、浏览器插件、资源库、开源微调模型 开发者必看:Linux终端…

Vue 3指令与事件处理

title: Vue 3指令与事件处理 date: 2024/5/25 18:53:37 updated: 2024/5/25 18:53:37 categories: 前端开发 tags: Vue3基础指令详解事件处理高级事件实战案例最佳实践性能优化 第1章 Vue 3基础 1.1 Vue 3简介 Vue 3 是一个由尤雨溪(尤大)领导的开源…

方言和大语言模型

方言多样性及其对语言模型的影响 语言的演变是不可避免的,反映并推动了重大的社会变革和传统。语言接触往往会推动我们说话方式的创新,在美国全球文化的影响下,一种新的叙事正在其语言织锦中展开。 例如,在佛罗里达州南部&#…

Qt 在windows下显示中文

Qt在windows平台上显示中文,简直是一门玄学,经过测试,有如下发现: 1, 环境:Qt 5.15.2 vs2019 64位 win11系统 默认用Qt 创建的文件使用utf-8编码格式,此环境下 中文没有问题 ui->textE…

Nginx实现负载均衡与故障检查自动切换

创作灵感来源于个人项目的一个稳定性规划,单节点的项目稳定性方面可能有很大的缺漏,因此需要升级为多节点,保证服务故障后,依然有其他服务可用,不会给前端用户造成影响。 (前面讲选型,想直接看…

IPv6 地址创建 EUI-64 格式接口 ID 的过程

IPv6 接口标识符 IPv6 地址中的接口标识符(ID)用于识别链路上的唯一接口,有时被称为 IPv6 地址的 “主机部分”。接口 ID 在链路上必须是唯一的,始终为 64 位长,并且可以根据数据链路层地址动态创建。 MAC 地址 中的…

Jenkins安装 :Aws EC2下Docker镜像安装

1 安装docker # 安装docker $ sudo yum install -y docker# 启动docker daemon $ sudo systemctl start docker# 用户加入docker组 $ sudo usermod -aG docker username 2 docker安装jenkins $ docker pull jenkins/jenkins:lts# 安装成功 $ docker images REPOSITORY …

逻辑这回事(一)----编码规范

说明:优先级是M的规则为强制项,优先级为R的规则为建议项。 通用约束 应有全局观念。 优先级:M 说明:你所编写的代码在成为最终硅片上的一部分之前,需要经过许多设计者利用各种各样的工具进行各种各样的处理。有时&…