条件1
pCParams->distanceToNext > 0
在decisionmaker中搜索:
pValues->distanceToNext = bestTrajectory.closest_obj_distance;
pValues结构体中有这个变量,
void DecisionMaker::CalculateImportantParameterForDecisionMaking(const PlannerHNS::VehicleState& car_state,
const int& goalID, const bool& bEmergencyStop, const std::vector<TrafficLight>& detectedLights,
const TrajectoryCost& bestTrajectory)
不知道TrajectoryCost怎么定义的,于是放弃。
谁要想看,自己去TrajectoryCosts.cpp里看吧。
根据名字盲猜一下,目标轨迹下,最近障碍物的距离?回头再修正。
2
pCParams->distanceToNext < m_pParams->minDistanceToAvoid
最近障碍物距离小于avoid距离,一样是盲猜,但是这个最小避障距离阈值我在autoware app那没看到参数设置,难道是写死的?不可能吧,这多难在线标定,回头再看看。
3
!pCParams->bFullyBlock
decision里面初始定义是
pValues->bFullyBlock = false;
这个定义盲猜也很好理解,是否当前所有轨迹都被阻止,!0=1,正常,才能继续执行避障。
4
&& pCParams->iCurrSafeTrajectory != pCParams->iPrevSafeTrajectory)
看完了也盲猜到了是什么,当前轨迹不等以预测的安全轨迹,就是当前轨迹被阻止。
1&2&3&4=1,简述就是,当前轨迹被阻止,别的轨迹还可以继续。最近的目标很近,要避障碍。
总结,就是静止障碍物就选轨迹,动的障碍物一旦距离远了,那我也跳出当前状态去下一个状态前进,很简单,但是千里之行,始于足下。