Skip to content

Latest commit

 

History

History
50 lines (33 loc) · 2.92 KB

README.md

File metadata and controls

50 lines (33 loc) · 2.92 KB

lidar-optimization

Abstract:

LiDARs plays an important role in self-driving cars and its configuration such as the location placement for each LiDAR can influence object detection performance. This paper aims to investigate an optimal configuration that maximizes the utility of on-hand LiDARs. First, a perception model of LiDAR is built based on its physical attributes. Then a generalized optimization model is developed to find the optimal configuration, including the pitch angle, roll angle, and position of LiDARs. In order to fix the optimization issue with off-the-shelf solvers, we proposed a lattice-based approach by segmenting the LiDAR’s range of interest into finite subspaces, thus turning the optimal configuration into a nonlinear optimization problem. A cylinder-based method is also proposed to approximate the objective function, thereby making the nonlinear optimization problem solvable. A series of simulations are conducted to validate our proposed method. This proposed approach to optimal LiDAR configuration can provide a guideline to researchers to maximize the utility of LiDARs.

image

Requirement

Gurobi solver

How to run?

In folder "tool", folder "build", folder "c" and folder "matlab" are the source code offered by Gurobi. This is just for instruction. You can't directly git clone these three folders, and need to install gurobi software from Gurobi official website and then use the source code installed along with the software because there's a license issue.

Put the "main.m" in folder "src" into folder "matlab" installed and run it to get a ".lp" file which is the model created by Gurobi.

Then build and run "mip2_c.c" in folder "c" installed to get the positions of lidars in the model you designed in "main.m".

How to design the model?

I recommend that readers first read the paper and then go to the code.

main.m:

This is for generating the Gurobi optimization model.

At the beginning the parameters for lidar system are defined.

Be careful: Since the cylinders are defined to select and divide cubes in the ROI, the radius of the largest cylinder must be less than the length of the ROI to have cubes to select. So the parameters must satisfy: cyl_Num*cyl_r < max(cubeNumx, cubeNumy, cubeNumz)

If readers want to customize the lidar system, the supposed parameters to define are:

Nl: number of lidars Nr: number of lasers on each lidar cubeNumnx: number of cubes in half axis of x cubeNumny: number of cubes in half axis of y cubeNumnz: number of cubes in half axis of z theta: The angles of all lasers on one lidar model.lb/model.ub : the boundary of x,y,z

mip2_c.c

This is modified from official Gurobi example code.

Run this code to read the model generated by main.m.

./mip2_c model.lp

Then wait for the results.