【Apollo源码分析】系列的第二部分【perception】
perception
perception:感知模块 仍然是 处于待完善的状态。只有200行代码左右。
下面简单介绍一下。
perception模块的主要作用是根据激光雷达Lidar, 摄像机camera等传感器 sensors接收的数据来感知周围环境。
主要任务是对物体进行检测,对行人进行识别,对交通信号灯进行判断,对道路车辆进行感知判断。
感知模块与其他模块一样是一个独立的进程。与其他模块通过tcp/共享内存进行通信。
perception/perception.h
class Perception : public apollo::common::ApolloApp {
public:
std::string Name() const override;//模块名
apollo::common::Status Init() override;//初始化步骤
apollo::common::Status Start() override;//模块工作内容:主要是检测交通信号灯和障碍物等。
void Stop() override; //清理函数
};
using apollo::common::adapter::AdapterManager;
using apollo::common::Status;
std::string Perception::Name() const { return "perception"; }//模块名称
Status Perception::Init() { //模块启动初始化
AdapterManager::Init();
return Status::OK();
}
目前整个模块的核心:
Status Perception::Start() {
ros::AsyncSpinner spinner(1);
spinner.start();
ros::waitForShutdown();
spinner.stop();
ros::Rate loop_rate(FLAGS_perception_loop_rate);//感知频率,默认是10hz
while (ros::ok()) {
AdapterManager::Observe();///进行一次感知测量/检测
PerceptionObstacles perceptionObstacles;///检测障碍物实例