文章目录
- 一、Carla的使用
- 1.1 二进制Carla的安装
- 1.2 Carla API的使用
- 1.2.1 增加行人流和车流
- 1.2.3 改变服务器的时间,光照,天气
- 1.2.3 手动控制车辆
- 1.1.4 车辆的自动驾驶
- 二、Universe与Carla联调
- 2.1 设置OpenPlanner
- 2.2 重新编译并运行
本文介绍了 Autoware.universe 与 Carla 二进制版的联调过程。Autoware.universe 是一个开源的自动驾驶软件平台,而 Carla 则是一个用于自动驾驶仿真的开源工具。将这两者联调起来可以在仿真环境中测试和验证 Autoware.universe 的功能和性能,为自动驾驶系统的开发和测试提供有力支持。其中Autoware.universe的安装参考我的另一篇文章:Ubuntu20.04安装Autoware.universe并与Awsim联调
一、Carla的使用
1.1 二进制Carla的安装
二进制包github地址:https://github.com/carla-simulator/carla/releases,下载第一个.tar.gz压缩包:
解压后可以直接运行,出现如下的服务器界面:
tar -zxvf CARLA_0.9.13.tar.gz
cd CARLA_0.9.13
./CarlaUE4.sh
去/home/autoware/CARLA_0.9.13/PythonAPI/examples下运行API:
python manual_control.py
即可开启Carla仿真驾驶,界面如下:
命令行选项:启动Carla时有一些可用的配置选项,它们可以按如下方式使用:
./CarlaUE4.sh -quality-level=Low
启动 CARLA 时,有一些配置选项可用:
carla-rpc-port=N
:侦听端口 N 处的客户端连接。默认情况下,流式端口 Streaming port 设置为 N+1;carla-streaming-port=N
:指定用于传感器数据流的端口。 使用 0 获取随机未使用的端口。 第二个端口将自动设置为 N + 1;quality-level={Low,Epic}
:更改图形质量级别;-carla-server
:让 carla以服务的方式运行;-benchmark -fps=15
:引擎以1/15秒的固定时间逐步运行;
1.2 Carla API的使用
这里介绍常用的几个API,首先打开carla:./CarlaUE4.sh
1.2.1 增加行人流和车流
执行CARLA_0.9.13/PythonAPI/examples路径下的generate_traffic.py文件:
python generate_traffic.py -w 10 -n 10
可以看到,carla服务器中的街道上多了很多运动的车辆和行人。后面的参数 -n 10 -w 10分别代表车辆和行人的数量,这个脚本还有很多其他的参数:
--host
#主机服务器ip-p --port
#端口-n --number-of-vehicles
#车辆数量-w --number-of-walkers
#行人数量--safe
#避免碰撞--filterv
#车辆滤波器--filterw
#行人滤波器--generationv
#限制某些车辆生成--generationw
#限制某些行人生成
1.2.3 改变服务器的时间,光照,天气
执行CARLA_0.9.13/PythonAPI/examples路径下的dynamic_weather.py文件
python dynamic_weather.py -s 5
参数-s 5意思是把天气变化加速了5倍。这个脚本里是按照仿真时间,修改服务器中设置天气的参数carla.WeatherParameters
,按照一定的顺序自动的调整系统的光照和天气。光照条件包括:太阳高度和太阳角度;天气条件包括:云,雨,水坑,风,雾,湿度。
更多天气参数的设置可以查看/pythonAPI/python_api.md中的carla.WeatherParameters.
1.2.3 手动控制车辆
执行CARLA_0.9.13/PythonAPI/examples路径下的manual_control.py文件:
python manual_control.py
键盘B按键可以切换自动控制和人工控制,pygame操作手册如下:
按键 | 功能 | 备注 |
---|---|---|
W | 前进 | ↑ 键也可以前进 |
S | 刹车 | ↓ 键也可以刹车 |
A/D | A左转 D 右转 | ← 也可以左转,→ 也可以右转 |
Q | 倒车档 | Q+W可以倒车 |
Space | 手刹 | - |
P | 开启/关闭自动驾驶模式 | - |
M | 自动档/手动档 | - |
,和 . | 加减挡 | ,减档 . 加档 |
CTRL + W | 按一下 CTRL + W,匀速前进 | 车会一直以 60 km/h 的速度前进 |
L | 控制车灯 | 切换雾灯、近光灯等切换 |
SHIFT + L | 切换远光灯 | - |
Z/X | 转向灯 | Z 左转向,X 右转向 |
I | 车内照明灯 | - |
TAB | 切换视角 | - |
N | 切换不同类型的 camera 和 lidar | 每按下一次,sensor |
[1-9] | 顺序切换切换不同类型的 camera 和 lidar | 按下数字键,可直接切换到对应sensor |
G | 打开/关闭 毫米波雷达 | - |
C | 切换天气 | Shift+C切换顺序和C相反 |
Backspace | 换车型 | - |
V | 选地图图层 | Shift+V ,切换顺序和V 相反 |
B | 加载当前的地图图层 | Shift+B 卸载当前的地图图层 |
O | 打开/关闭所有车门 | - |
T | 切换到车辆的自动测量记录传导 | 在carla客户端界面显示 |
R | 记录车辆走行情况 | CTRL + R : 切换到 R做的记录 |
CTRL + P | 回放R的记录 | - |
F1 | 显示/不显示左侧sensor相关信息例如加速度,陀螺仪,GNSS等 | - |
H | 可以弹出帮助命令 | - |
ESC | 退出pygame | - |
1.1.4 车辆的自动驾驶
执行CARLA_0.9.13/PythonAPI/examples路径下的automatic_control.py文件
python automatic_control.py
会弹出一个pygame窗口,车辆正在进行自动驾驶
到达终点后,自动关闭
二、Universe与Carla联调
参考文章:https://blog.csdn.net/yuteng12138/article/details/130102293
2.1 设置OpenPlanner
(1)下载拓展代码
cd ~/autoware_universe
mkdir op_carla && cd op_carla/
git clone https://github.com/hatem-darweesh/op_bridge.git -b ros2
git clone https://github.com/hatem-darweesh/op_agent.git -b ros2
git clone https://github.com/hatem-darweesh/scenario_runner.git
(2)从https://drive.google.com/drive/folders/1Or0CMS08AW8XvJtzzR8TfhqdY9MMUBpS下载Town01.pcd 和 Town01.osm地图。创建 Town01 文件夹,将 Town01.pcd 和 Town01.osm 复制到Town01_map 文件夹中。
- Town01.pcd重命名为pointcloud_map.pcd
- Town01.osm重命名为lanelet2_map.osm
(3)修改文件:op_carla/op_bridge/op_scripts/run_exploration_mode_ros2.sh
,在第8行,如果不在同一台电脑上运行仿真,需要设置运行仿真的电脑的 IP 地址。如下:
export SIMULATOR_LOCAL_HOST=“192.168.11.5”
如果在本机上运行仿真需要修改为:
export SIMULATOR_LOCAL_HOST=“localhost”
(4)修改文件:op_carla/op_agent/start_ros2.sh
,在第15行,按照实际的安装路径修改。
source ${YouPath}/autoware_universe/autoware/install/setup.bash
在第18行,按照实际的安装路径修改启动Autoware的launch文件路径,按照Town01的路径修改map_path。
ros2 launch \
${YouPath}/src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml \
map_path:=${YouPath}/autoware_universe/autoware/src/${map_name} \
vehicle_model:=sample_vehicle \
sensor_model:=sample_sensor_kit
(5)修改文件: src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml
在第11行添加如下,用于将Carla点云转换为Autoware.universe使用的点云:
<arg name="launch_carla_interface" default="true" description="convert carla sensor data to autoware suitable format"/>
在第17行将launch_sensing_driver中的true改成false,关闭自带的传感器驱动,可以直接复制以下替换第17行。
<arg name="launch_sensing_driver" default="false" description="launch sensing driver"/>
在第23行将use_sim_time中的false改成true,使用仿真时间,可以直接复制以下替换第23行。
<arg name="use_sim_time" default="true" description="use_sim_time"/>
注意
:这里改了之后,如果再使用非仿真测试时要改回来,否则将不能定位。另外也可以不改参数文件,在launch时添加参数,例如:
ros2 launch \
${YouPath}/src/launcher/autoware_launch/autoware_launch/launch/autoware.launch.xml \
map_path:=${YouPath}/${map_name} \
vehicle_model:=sample_vehicle \
sensor_model:=sample_sensor_kit \
use_sim_time:=true
在第52行添加如下,将Carla点云转化为Universe可用的点云:
<!-- CARLA -->
<group if="$(var launch_carla_interface)">
<node pkg="carla_pointcloud" exec="carla_pointcloud_node" name="carla_pointcloud_interface" output="screen"/>
</group>
(6)修改文件: src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_launch/launch/gnss.launch.xml
,在第4行将coordinate_system中的1改成2,坐标系使用MGRS,可以直接复制以下替换第4行。
<arg name="coordinate_system" default="2" description="0:UTM, 1:MGRS, 2:PLANE"/>
在第5行添加如下:
<arg name="plane_zone" default="0"/>
(7)修改文件:src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_description/config/sensor_kit_calibration.yaml
,由于修改较多,可以直接全部替换:
sensor_kit_base_link:
camera0/camera_link:
x: 0.7
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
camera1/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
camera2/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
camera3/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
camera4/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
camera5/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
traffic_light_right_camera/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
traffic_light_left_camera/camera_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
velodyne_top_base_link:
x: 0.0
y: 0.0
z: 0.8
roll: 0.0
pitch: 0.0
yaw: 0.0
velodyne_left_base_link:
x: -0.5
y: 0.0
z: 0.8
roll: 0.0
pitch: 0.0
yaw: 0.0
velodyne_right_base_link:
x: 0.5
y: 0.0
z: 0.8
roll: 0.0
pitch: 0.0
yaw: 0.0
gnss_link:
x: 0.0
y: 0.0
z: 0.8
roll: 0.0
pitch: 0.0
yaw: 0.0
tamagawa/imu_link:
x: 0.0
y: 0.0
z: 0.8
roll: 0.0
pitch: 0.0
yaw: 0.0
(8)修改文件:src/sensor_kit/sample_sensor_kit_launch/sample_sensor_kit_description/config/sensors_calibration.yaml
,由于修改较多,可以直接全部替换:
base_link:
sensor_kit_base_link:
x: 0.0
y: 0.0
z: 1.6
roll: 0.0
pitch: 0.0
yaw: 0.0
velodyne_rear_base_link:
x: 0.0
y: 0.0
z: 0.0
roll: 0.0
pitch: 0.0
yaw: 0.0
(9)修改环境变量
gedit ~/.bashrc
根据安装位置修改路径后,再添加到环境变量中。
export CARLA_ROOT=/yourpath/carla
export SCENARIO_RUNNER_ROOT=/home/username/autoware_universe/op_carla/scenario_runner
export LEADERBOARD_ROOT=/home/username/autoware_universe/op_carla/op_bridge
export TEAM_CODE_ROOT=/home/username/autoware_universe/op_carla/op_agent
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/util
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/agents
# 注意下面的文件名称要对,可以去Carla文件夹看看(我的是,3.7)
export PYTHONPATH=$PYTHONPATH:${CARLA_ROOT}/PythonAPI/carla/dist/carla-0.9.13-py3.7-linux-x86_64.egg
2.2 重新编译并运行
把上面改动的几个包重新编译(ROS2需要把所有文件复制到install,因此包里任何文件修改均需重新编译)一下:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --packages-select autoware_launch sample_sensor_kit_description
安装依赖:
pip install py-trees networkx tabulate transforms3d
sudo apt-get install ros-galactic-sensor-msgs-py
运行Carla服务器:
cd $CARLA_ROOT
./CarlaUE4.sh -quality-level=Epic -world-port=2000 -resx=800 -resy=600
再打开一个终端运行Universe,同时启动Carla ros2 bridge:
cd ${YouPath}/autoware_universe/op_carla/op_bridge/op_scripts
source ~/autoware_universe/install/setup.bash
./run_exploration_mode_ros2.sh
成功加载地图
自动驾驶测试: