控制
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 的自训练交通信号灯检测。 这对避免交通灯很有用。