按照官方流程安装UE4和编译carla工程, 注意:
- 在安装和编译过程中需要终端有http代理,能访问部分外网(google,unrealengine)
- 安装过程会下载数个超大文件,建议仔细查找Setup.sh等文件中要下载的文件以及运行时出现的下载错误,然后手动下载放到指定目录
-
启动UE4中的carla工程
-
进入工程目录 cd /home/yourname/disk1/carla-source/Unreal/CarlaUE4/
-
启动 carla server /home/yourname/Desktop/CARLA/UnrealEngine-4.18/Engine/Binaries/Linux/UE4Editor "$PWD/CarlaUE4.uproject"
-
在UE4 editor中 点击 Play 按钮, 则仿真server启动
-
-
启动Python client
- client和server通过TCP协议通信,默认走127.0.0.1:2000端口,注意保证端口不被占用。
- 进入 client目录,cd /home/yourname/disk1/carla-source/PythonClient
- 运行 lidar_simulator.py 即可进入雷达仿真模式(仿真详细设置已于lidar_simulator.py中说明,恕不赘述)
-
RViz可视化&数据获取
- 在lidar_simulator中已设置相应的节点用来发布ROS sensormsg/PointCloud类型的消息,不同的lidar分别有不同的pubulisher,Rviz中订阅相应的话题即可。(设置多个lidar时,显示过程会产生延迟)
- 当要导出数据时,可以直接在 lidar_simulator.py 中把点云数据保存成numpy格式的文件,或者用ROSbag录制相应的topic.
- 自定义雷达的特性时,不需要修改UE4引擎,只需要修改Carla工程,具体需要修改源码 $PROJECT/Unreal/CarlaUE4/Plugins/Carla/Source/Carla/Sensor/Lidar.cpp以及相应等文件。
- 源码中部分类&函数(大多数以F开头)是属于UE4引擎内置类或者函数,可在官网search中查找相应的说明、API或开发者论坛。
- 修改完成后需要重新编译Carla工程(不需要编译整个工程,即不需要运行 Setup.sh),运行根目录下的 Rebuild.sh,编译成功后会自动调用UE4打开Carla工程,之后的步骤可见 “运行Carla”
- 若想自定义python与carla server的接口,可使用lidar_simulator.py 中预设调试变量 lidar.DebugFlag,若要继续增加功能接口,则需要修改carla server中的LidarDescription.cpp及相应.h文件。修改完成后要在pthon cilent中修改sensor类,添加新接口($Project/pythonclient/carla/sensor.py)
-
函数检查某一线雷达以某个角度射出是否会有障碍物
GetWorld()->LineTraceSingleByChannel()
-
这两个for循环完成了整帧点云的生成
for(auto Channel = 0u; Channel < ChannelCount; ++Channel)
{
for(auto i = 0u; i < PointsToScanWithOneLaser; ++i)
{
;
}
}