跳过主要内容

控制

PID 控制器

为了将我们的航点转换为“油门、转向和制动”控制,我们使用了比例积分微分 (PID) 控制器,该控制器能够根据汽车位置和速度,通过与所需航点的比较来调整油门、转向和制动。 代码可被在此找到 operator/pid_control_op.py

pid的更多信息,请至 我们的 pid 细节页面

控制

应用于汽车的实际命令在 oasis_agent 内进行控制。

全循环图

我们现在有全部入门套件节点。 他们看起来像这样:

nodes:
- id: oasis_agent
custom:
inputs:
control: pid_control_op/control
tick: dora/timer/millis/400
outputs:
- position
- speed
- image
- objective_waypoints
- lidar_pc
- opendrive
source: shell
# args: >
# python3 $SIMULATE --output
# --oasJson --criteriaConfig $CRITERIA
# --openscenario $XOSC
# --agent $TEAM_AGENT
# --agentConfig $TEAM_AGENT_CONF
# --destination $DESTINATION
#
# or for Carla Standalone:
#
args: python3 ../../carla/carla_source_node.py

- id: carla_gps_op
operator:
python: ../../carla/carla_gps_op.py
outputs:
- gps_waypoints
inputs:
opendrive: oasis_agent/opendrive
objective_waypoints: oasis_agent/objective_waypoints
position: oasis_agent/position

- id: yolov5
operator:
outputs:
- bbox
inputs:
image: oasis_agent/image
python: ../../operators/yolov5_op.py

- id: obstacle_location_op
operator:
outputs:
- obstacles
inputs:
lidar_pc: oasis_agent/lidar_pc
obstacles_bbox: yolov5/bbox
position: oasis_agent/position
python: ../../operators/obstacle_location_op.py

- id: fot_op
operator:
python: ../../operators/fot_op.py
outputs:
- waypoints
inputs:
position: oasis_agent/position
speed: oasis_agent/speed
obstacles: obstacle_location_op/obstacles
gps_waypoints: carla_gps_op/gps_waypoints

- id: pid_control_op
operator:
python: ../../operators/pid_control_op.py
outputs:
- control
inputs:
position: oasis_agent/position
speed: oasis_agent/speed
waypoints: fot_op/waypoints

- id: plot
operator:
python: ../../operators/plot.py
inputs:
image: oasis_agent/image
obstacles_bbox: yolov5/bbox
obstacles: obstacle_location_op/obstacles
gps_waypoints: carla_gps_op/gps_waypoints
position: oasis_agent/position
waypoints: fot_op/waypoints
control: pid_control_op/control

至运行一个运行中的车示例:

dora up
dora start graphs/oasis/oasis_full.yaml --attach

😎我们现在有一辆工作中的自动驾驶汽车!

您可能已经注意到,改进可以在很多地方进行。

在此若您需要灵感,我们建议您检查:

  • operators/yolop_op.py 为您启用检测车道。 它可以传递到障碍物定位,以获得车道的 3D 位置。 然后,可将这些通道的 3D 位置传给 fot,在地面上采取规划考虑车道。
  • operators/strong_sort.py 启用通过时间 跟踪 2D 边界框。 如果您要避免移动车辆,这可能很有用。
  • opertators/traffic_sign.py 即基于 Yolov7 和 TT100K 的自训练交通信号灯检测。 这对避免交通灯很有用。