仿真器采集无人机仿真数据

仿真器采集无人机仿真数据

本文为博客的子文,介绍采用flightmare采集飞机飞行过程中的仿真数据,包括双目RGB图像,深度图像,全局场景点云,飞机的实时位姿。
网络训练需要输入:飞机的实时位姿,双目RGB图像,SGM计算的深度图像。
全局场景点云用于:网络训练轨迹的碰撞代价计算,以及用于全局规划。

仿真数据获取

代码构建了一个FlightmareBridge类,可以配置仿真环境,生成仿真数据。

class FlightmareBridge {
 public:
  FlightmareBridge(const ros::NodeHandle& nh, const ros::NodeHandle& pnh);
  void spawnObjects(const quadrotor_common::TrajectoryPoint& start_state);
  void generatePointcloud(const Eigen::Ref<Eigen::Vector3d>& min_corner,
                          const Eigen::Ref<Eigen::Vector3d>& max_corner,
                          const std::string& curr_data_dir);
  void disconnect();
  void getImages(const quadrotor_common::QuadStateEstimate& state_estimate,
                 const std::string curr_data_dir, const int frame_counter);
}

图像获取

给定飞机的位姿(temp_state_estimate),可以获取飞机在该位姿下采集的仿真RGB图像和真实深度图像。
SGM深度图像,采用OpenCV的SGM算法,输入采集的仿真双目RGB图像,得到计算的深度图像。
获取代码如下:

flightmare_bridge_->getImages(temp_state_estimate, "", 0);

场景点云获取

给定场景的最小点和最大点,即可获取仿真场景有限范围内的真实点云。场景获取之前要先在配置仿真场景,例如生成一些树和物体等。

flightmare_bridge_->spawnObjects(start_state);

仿真场景完成之后,可以调用如下函数,获取场景真实点云:

flightmare_bridge_->generatePointcloud(min_corner, max_corner,
                                           curr_data_dir_);

实时位姿获取

实时位姿需要飞机运行给定的轨迹,state_predictor才可以估计位姿,并保存下来。
这一步骤,可以参考博客,生成全局轨迹,再控制飞机运行,才能保存下来实时位姿。

获取的数据

网络训练代码运行过程中,会在 agile_autonomy_ws/src/agile_autonomy/planner_learning/data/train/路径下,生成仿真训练数据。
仿真器采集无人机仿真数据_第1张图片
其中img中保存仿真图像数据,示例如下:

你可能感兴趣的:(计算机视觉)