赞
踩
CANBus:对接车辆的底盘,做一些数据的收发,如油门,方向盘转角
HDMap:
git clone XXX
git checkout vXXXX
bash docker/scripts/dev_start.sh #编译时间较长
bash docker/scripts/dev_into.sh #进入apollo环境
主要的任务模块可以在apollo/modules
看到, common_msg模块是表示数据类型,dreamview用于数据可视化,drivers包括各种传感器的驱动
模块文件夹下:
/conf:参数配置文件,输入输出话题的订阅
/launch:启动模块的启动文件,会启动某个dag文件
/dag: 包括调用流程,加载的模块是什么,订阅的通道,使用的config文件
/XXX: 该模块下具体的方法(算法),可能有多个文件夹
cyber_monitor #监控个个topic的信息
cyber_launch start/stop modules/localization/..../xxx.launch #启动/关闭模块
cyber_recorder -h #可以显示出和数据集.bag相关的指令,比如bag包信息,播放等
bash scripts/bootstrap.sh #打开可视化,可以进入一个网页端,默认为“mkz standard debug”,车型可选为“mkz lgsvl321”,地图可选“sunnyvale big loop”
播放数据之后,窗口内就会开始变化了。播放时可在终端按空格暂停,然后可以输入指令启动其他想要的模块,加载完成后就可以接着播放数据了。
基于UE4开发的开源无人驾驶仿真器
0.9.15新特性
版本:
apollo v8.0.0: https://github.com/ApolloAuto/apollo/tree/v8.0.0
CARLA 0.9.14: https://carla.org/2022/12/23/release-0.9.14
基础使用:
import carla import random import time #客户端连接 actor_list = [] carla_client = carla.Client('172.17.0.1', 2000) #carla默认端口为2000 #172.17.0.1为dorcker默认地址 carla_client.set_timeout(4.0) #切换地图 carla_client.load_world("Town03") #默认为town10 world = carla_client.get_world() #添加动态天气 weather = carla.WeatherParameters(cloudiness=10.0, precipitation=10.0, sun_altitude_angle=20.0) #cloudiness=99时,天黑了 #sun_altitude_angle 太阳角度 world.set_weather(weather) # 添加车辆 bp_lib = world.get_blueprint_library() vehicle_bp = bp_lib.find('vehicle.tesla.model3') spawn_points = world.get_map().get_spawn_points() transform_v = random.choice(spawn_points) vehicle = world.spawn_actor(vehicle_bp, transform_v) actor_list.append(vehicle) print('created %s' % vehicle.type_id) # 设定视角 spectator = world.get_spectator() #把视角调整成和车一致,一般carla的车原点在底盘中间,实现可以从车后方进行观察 transform = carla.Transform(vehicle.get_transform().transform(carla.Location(x=-4, z=2.5)), vehicle.get_transform().rotation) spectator.set_transform(transform) #添加传感器 camera_bp = bp_lib.find('sensor.camera.rgb') camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4)) camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle) actor_list.append(camera) camera.listen(lambda image: image.save_to_disk('out/%06d.png' % image.frame)) camera.stop() #不stop的话会存很多很多照片 print('created %s' % camera.type_id) # 随机添加车辆位置 仿真测试 for _ in range(0, 10): transform = random.choice(spawn_points) bp = random.choice(bp_lib.filter('vehicle')) npc = world.try_spawn_actor(bp, transform) if npc is not None: actor_list.append(npc) npc.set_autopilot(True, 6000) print('created %s' % npc.type_id) time.sleep(1) vehicle.apply_control(carla.VehicleControl(throttle=1.0, steer=-1.0)) vehicle.set_autopilot(True, 6000) print('destroying actors') camera.destroy() #一定要把车和传感器销毁掉,否则下一次打开可能会报错 client.apply_batch([carla.command.DestroyActor(x) for x in actor_list]) print('done.')
还可以在终端跑脚本实现手动控制车辆
python manual_control.py
基础逻辑:carla中构建环境,信息传入apollo的算法,得到控制的结果后再传回carla实现车辆的控制
CARLA Apollo Bridge: https://github.com/guardstrikelab/carla_apollo_bridge?tab=readme-ov-file
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。