update pt1
This commit is contained in:
71
README.md
71
README.md
@ -1,3 +1,74 @@
|
||||
# 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
|
||||
|
||||

|
||||
|
||||
# Klasterovanje podataka
|
||||
|
||||
Pristup klasterovanja već korišćen od strane ostalih
|
||||
|
||||

|
||||
|
||||
|
||||
```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
|
||||
Reference in New Issue
Block a user