Files
Lidar-Scanner/README.md
2024-11-13 17:08:31 +01:00

74 lines
2.3 KiB
Markdown

# Lidar-Scanner
# Obrada Lidar podataka
Obradu koordinata sam radio po ovom principu. Za kooridnate od lidara sam koristio simulator, taj deo možeš i da preskočiš.
1. Učitavanje lidar podataka
2. Klasterovanje podataka
3. Proveravanje dimenzija klastera
4. Računanje brzine i ubrzanja
# Učitavanje lidar podataka
Simulator predstavlja jenostavnu puthon skriptu koja ima centralnu tačku i prati njene projekcije na svaku oblast u njenoj okolini.
Fomrat učitavanja podataka je (x, y) što bi trebalo da se izmeni da odgovara pravim lidar podacima.
Pretpostavke za lidar tačke
- Tačke se ciklično prosledjuju
- Dve tačke ne mogu imati isti ugao od centra do sebe tj. ne može jedna tačka biti iza druge
![Logo](source/b.png)
# Klasterovanje podataka
Pristup klasterovanja već korišćen od strane ostalih
![Logo](source/a.jpg)
```c++
bool arePointsInSameCluster(const Point& p1, const Point& p2, double thresholdAngle, double radiusMultiplier)
{
double angleDifference = std::fabs(p1.angle - p2.angle);
if (angleDifference > M_PI)
angleDifference = 2 * M_PI - angleDifference;
double adaptiveThreshold = std::min(p1.r, p2.r) * std::sin(angleDifference) / std::sin(thresholdAngle - angleDifference);
double distance = std::sqrt(std::pow(p2.x - p1.x, 2) + std::pow(p2.y - p1.y, 2));
return distance <= adaptiveThreshold* radiusMultiplier;
}
```
Moj pristup samo ne koristimo ugao već razdaljinu
```c++
bool arePointsInSameCluster2(const Point& p1, const Point& p2, double thresholdAngle)
{
double distance = std::sqrt(std::pow(p2.x - p1.x, 2) + std::pow(p2.y - p1.y, 2));
return distance <= thresholdAngle;
}
```
# Proveravanje dimenzija klastera
Posle toga odredjujemo da li selektovana erija pripada odredjenom području.
U suštini proveravano najdalj tačke u sva četiri smera da li se nalaze u odredjenom pravugaoniku kako bi bili sigurni da se radi o protivniku.
# Računanje brzine i ubrzanja
Za računanje ubrzanja i brzine prvo pronalazimo centar kruga i čuvamo ga sa trenutnim vremenom.
Treba proveriti na pravom primeru kako radi.
Čuvamo trenutnu i 2 prošle tačke koje su nam dovoljne da izračunamo ubrzanje i vektor kretanja.
# Pokretanje
colcon build
source install/setup.bash
ros2 run lidarProject subscriber_node