10 #include <sys/socket.h> 11 #include <netinet/in.h> 12 #include <netinet/tcp.h> 15 #include <arpa/inet.h> 17 #include <opencv2/opencv.hpp> 18 #include <opencv2/core/core.hpp> 19 #include <opencv2/highgui/highgui.hpp> 20 #include <opencv2/imgproc/imgproc.hpp> 22 #include <octomap/octomap.h> 24 #include "../include/eigen/Eigen/Dense" 25 #include "../include/eigen/Eigen/src/Geometry/Quaternion.h" 27 #include "../include/se2/se2.h" 57 for (
int rid = 0; rid <
map_rows; ++rid)
59 for (
int rid = 0; rid <
map_rows; ++rid)
61 for (
int cid = 0; cid <
map_cols; ++cid)
64 m_cellmap[rid][cid].
isFree =
false;
89 m_tree =
new octomap::OcTree(resolution);
105 const double camera_factor = 1000;
106 const double camera_cx = 320.5;
107 const double camera_cy = 240.5;
108 const double camera_fx = 554.38;
109 const double camera_fy = 554.38;
110 const int scan_max_range = 3000;
113 const int MAXRECV = 10240;
114 const int frame_rows = 480;
115 const int frame_cols = 640;
116 char *server_ip =
"192.168.180.128";
142 for (
int i = 0; i <
rbt_num; i++)
144 m_rgb.push_back(cv::Mat(frame_rows, frame_cols, CV_8UC3));
145 m_depth.push_back(cv::Mat(frame_rows, frame_cols, CV_16UC1));
149 m_pose.resize(rbt_num);
150 for (
int i = 0; i <
rbt_num; ++i)
155 m_frustum_contours.clear();
156 m_frustum_contours.resize(rbt_num);
158 m_free_space_contours2d.clear();
159 m_free_space_contours2d.resize(rbt_num);
162 m_pose2d.resize(rbt_num);
180 bool create_connection();
183 bool getRGBDFromServer();
185 bool rcvRGBDFromServer();
187 bool getPoseFromServer();
189 bool rcvPoseFromServer();
191 void scanSurroundingsCmd();
193 bool socket_move_to_views(std::vector<std::vector<double>> poses);
196 void insertAFrame2Tree(cv::Mat & depth, std::vector<float> pose);
199 void fuseScans2MapAndTree();
202 std::vector<cv::Point> loadIdealFrustum(Eigen::MatrixXd r, Eigen::Vector3d t);
205 void fillTrivialHolesKnownRegion();
208 void SetUpSurroundings();
211 void findExtraFreeSpace(
int rid, cv::Mat depth, std::vector<float> pose);
214 std::pair<Eigen::MatrixXd, Eigen::Vector3d> coord_trans_7f_rt(std::vector<float> pose);
217 iro::SE2 coord_trans_7f_se2(std::vector<float> pose);
220 std::vector<double> coord_trans_se22gazebo(
iro::SE2 pose);
223 Eigen::Vector2i coord_trans_oc2cell(Eigen::Vector3d p_oc);
226 Eigen::Vector2i coord_trans_oc2cell(Eigen::Vector3d p_oc,
double node_size,
int scale);
229 void projectOctree2Map();
232 cv::Mat visCellMap();
235 cv::Mat showCellMap();
238 cv::Mat showStatement();
256 m_recon3D.
m_tree->writeBinary(
"/home/bamboo/catkin_ws/src/co_scan/temp/dsy_octree.bt");
std::vector< std::vector< float > > m_set_pose
std::vector< iro::SE2 > m_pose2d
const double free_voxel_porject_height
std::vector< std::vector< float > > m_pose
Recon3D(float resolution)
std::vector< cv::Mat > m_rgb
const double project_min_height
std::vector< cv::Mat > m_depth
std::vector< std::vector< cv::Point > > m_free_space_contours2d
const double project_max_height
std::vector< std::vector< cv::Point > > m_frustum_contours