Carla自动驾驶仿真十:Carlaviz三维可视化平台搭建

2024-08-31 07:52

本文主要是介绍Carla自动驾驶仿真十:Carlaviz三维可视化平台搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前言
  • 一、环境准备
      • 1、docker安装
      • 2、websocket-client安装
      • 3、carlaviz代码下载
  • 二、carlaviz使用
      • 1、打开carla客户端
      • 2、输入启动命令
      • 3、进入carlaviz
      • 4、修改manual_control.py脚本
      • 5、运行manual_control.py脚本
      • 6、运行carlaviz官方脚本(推荐)


前言

Carlaviz是一个开源的可视化工具,主要用于Carla三维场景、传感器数据以及自车数据的可视化,能够作为观测平台使用,本文主要介绍Carlaviz的安装以及基本使用;


一、环境准备

1、docker安装

1)根据所属环境下载对应的docker,然后直接安装即可

点击进入docker官网下载

2、websocket-client安装

1)进入终端输入:pip3 install websocket_client

3、carlaviz代码下载

carlaviz github链接

1)打开终端输入 docker pull mjxu96/carlaviz:0.9.14,请下载与自己carla版本一致的carlaviz,只需修改后面的版本号,如下载0.9.15版本的carlaviz:

在这里插入图片描述

二、carlaviz使用

1、打开carla客户端

在这里插入图片描述

2、输入启动命令

1)windows
终端输入:docker run -it -p 8080-8081:8080-8081 mjxu96/carlaviz:0.9.14 --simulator_host host.docker.internal --simulator_port 2000,注意carla的版本号一定要对上;

2)linux
终端输入:docker run -it --network="host" mjxu96/carlaviz:0.9.14 --simulator_host localhost --simulator_port 2000,注意carla的版本号一定要对上‘

windows输入启动命令后结果:
在这里插入图片描述

3、进入carlaviz

1)打开浏览器输入http://localhost:8080/,或者从docker软件进入,进入carlaviz如下图所示,能够正确加载到路网相关信息,此时没有ego信息以及摄像头画面是正常的,是因为需要启动python脚本生成车辆以及摄像头;

在这里插入图片描述

4、修改manual_control.py脚本

1、启动前需要将manual_control.py中主车的名称改成ego
在这里插入图片描述

5、运行manual_control.py脚本

1)运行脚本后正确接收到主车信息,摄像头画面等信息;

在这里插入图片描述

6、运行carlaviz官方脚本(推荐)

1)我们也可以运行官方脚本,有激光雷达点云信息;

import carla
import random
import time
# from carla_painter import CarlaPainterdef do_something(data):passdef main():try:# initialize one painter# painter = CarlaPainter('localhost', 8089)client = carla.Client('localhost', 2000)client.set_timeout(10.0)world = client.get_world()for blue_print in world.get_blueprint_library():if blue_print.id.startswith("sensor"):print(blue_print)# set synchronous modeprevious_settings = world.get_settings()world.apply_settings(carla.WorldSettings(synchronous_mode=True,fixed_delta_seconds=1.0 / 30.0))# randomly spawn an ego vehicle and several other vehiclesspawn_points = world.get_map().get_spawn_points()blueprints_vehicles = world.get_blueprint_library().filter("vehicle.*")ego_transform = spawn_points[random.randint(0, len(spawn_points) - 1)]other_vehicles_transforms = []for _ in range(3):other_vehicles_transforms.append(spawn_points[random.randint(0, len(spawn_points) - 1)])blueprints_vehicles = [x for x in blueprints_vehicles if int(x.get_attribute('number_of_wheels')) == 4]# set ego vehicle's role name to let CarlaViz know this vehicle is the ego vehicleblueprints_vehicles[0].set_attribute('role_name', 'ego') # or set to 'hero'batch = [carla.command.SpawnActor(blueprints_vehicles[0], ego_transform).then(carla.command.SetAutopilot(carla.command.FutureActor, True))]results = client.apply_batch_sync(batch, True)if not results[0].error:ego_vehicle = world.get_actor(results[0].actor_id)else:print('spawn ego error, exit')ego_vehicle = Nonereturnother_vehicles = []batch = []for i in range(3):batch.append(carla.command.SpawnActor(blueprints_vehicles[i + 1], other_vehicles_transforms[i]).then(carla.command.SetAutopilot(carla.command.FutureActor, True)))# set autopilot for all these actorsego_vehicle.set_autopilot(True)results = client.apply_batch_sync(batch, True)for result in results:if not result.error:other_vehicles.append(result.actor_id)# attach a camera and a lidar to the ego vehiclecamera = None# blueprint_camera = world.get_blueprint_library().find('sensor.camera.rgb')blueprint_camera = world.get_blueprint_library().find('sensor.camera.instance_segmentation')# blueprint_camera = world.get_blueprint_library().find('sensor.camera.depth')blueprint_camera.set_attribute('image_size_x', '640')blueprint_camera.set_attribute('image_size_y', '480')blueprint_camera.set_attribute('fov', '110')blueprint_camera.set_attribute('sensor_tick', '0.1')transform_camera = carla.Transform(carla.Location(y=+3.0, z=5.0))camera = world.spawn_actor(blueprint_camera, transform_camera, attach_to=ego_vehicle)camera.listen(lambda data: do_something(data))lidar = None# blueprint_lidar = world.get_blueprint_library().find('sensor.lidar.ray_cast')blueprint_lidar = world.get_blueprint_library().find('sensor.lidar.ray_cast_semantic')blueprint_lidar.set_attribute('range', '30')blueprint_lidar.set_attribute('rotation_frequency', '10')blueprint_lidar.set_attribute('channels', '32')blueprint_lidar.set_attribute('lower_fov', '-30')blueprint_lidar.set_attribute('upper_fov', '30')blueprint_lidar.set_attribute('points_per_second', '56000')transform_lidar = carla.Transform(carla.Location(x=0.0, z=5.0))lidar = world.spawn_actor(blueprint_lidar, transform_lidar, attach_to=ego_vehicle)lidar.listen(lambda data: do_something(data))# tick to generate these actors in the game worldworld.tick()# save vehicles' trajectories to draw in the frontendtrajectories = [[]]while (True):world.tick()ego_location = ego_vehicle.get_location()trajectories[0].append([ego_location.x, ego_location.y, ego_location.z])# draw trajectories# painter.draw_polylines(trajectories)# draw ego vehicle's velocity just above the ego vehicleego_velocity = ego_vehicle.get_velocity()velocity_str = "{:.2f}, ".format(ego_velocity.x) + "{:.2f}".format(ego_velocity.y) \+ ", {:.2f}".format(ego_velocity.z)# painter.draw_texts([velocity_str],#             [[ego_location.x, ego_location.y, ego_location.z + 10.0]], size=20)time.sleep(0.05)finally:if previous_settings is not None:world.apply_settings(previous_settings)if lidar is not None:lidar.stop()lidar.destroy()if camera is not None:camera.stop()camera.destroy()if ego_vehicle is not None:ego_vehicle.destroy()if other_vehicles is not None:client.apply_batch([carla.command.DestroyActor(x) for x in other_vehicles])if __name__ == "__main__":

在这里插入图片描述

综上,完成carlaviz的安装及使用,确实是一个较只管的观测平台,如果能在基础上做控制的开发那就完美了。

这篇关于Carla自动驾驶仿真十:Carlaviz三维可视化平台搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

Python数据分析与可视化的全面指南(从数据清洗到图表呈现)

《Python数据分析与可视化的全面指南(从数据清洗到图表呈现)》Python是数据分析与可视化领域中最受欢迎的编程语言之一,凭借其丰富的库和工具,Python能够帮助我们快速处理、分析数据并生成高质... 目录一、数据采集与初步探索二、数据清洗的七种武器1. 缺失值处理策略2. 异常值检测与修正3. 数据

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

Windows Server 2025 搭建NPS-Radius服务器的步骤

《WindowsServer2025搭建NPS-Radius服务器的步骤》本文主要介绍了通过微软的NPS角色实现一个Radius服务器,身份验证和证书使用微软ADCS、ADDS,具有一定的参考价... 目录简介示意图什么是 802.1X?核心作用802.1X的组成角色工作流程简述802.1X常见应用802.

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动