This repository contains code implementations related to the development of a low-cost mobile platform and its use for 3D crop mapping.
The follo youtube video shows the data collection experiment with a terrestrial robotic platform and a 2D Hokuyo LiDAR into a citrus crop in Tolima Colombia:
Download the data cloud of interest in LAS format and upload it to the website https://plas.io/
This work was carried out with the use of an unmanned ground vehicle developed in the general framework of our project. The details of our platform called alphaRover can be found in the following repository: https://github.com/HaroldMurcia/AlphaROVER
The UGV has a 2D sensor on board that captures a profile of the cangecation environment at a 45-degree angle to the ground.
The mode of operation is offline, in the field the platform makes a route in which it acquires data in a rosbag format. At the end, the data is downloaded and processed with an algorithm that converts the data into a TXT file (details in the following repository: https://github.com/HaroldMurcia/alphaROVER-raw2LAS) which is then transformed into LAS with the LAS2TXT tool of the LASTools software.
This project is powered by Linux and an Ubuntu 20.04 operating system was used for data processing. The visualisation of the point clouds can be done in LAS or TXT format, for which an online visualisation website PLAS and the free software CloudCompare were used.
The algorithms were implemented in Python 3 and made use of the following additional libraries:
- pandas
- scipy
- warnings
- sklearn
Download the data and add it to the following path: <~YOUR-REPO/data>
- miniRover PointCloud txt
- Ground plane points alphaRover
- Ground plane coefficients alphaRover
- Reference values
- Measurements obtained from the miniRover's point cloud
access the /src folder of the repository from the Linux console and then run the following instructions.
python3 morphologicalParameters.py ../data/laser_alphaRover_12_paper.txt
Character | Function | Number | Parameter estimation | |
---|---|---|---|---|
space | Groove change | 0 | ||
z | Save measurements | 1 | Tree high | |
f | Fullscreen/Minimize | 2 | Distance between trees | |
g | Grid on/off | 3 | Distance between grooves | |
p | Move graph | 4 | Diameter of canopy | |
s | Save graph | 5 | ||
k | Maximize x-axis | 6 | ||
l | Maximize y-axis | 7 | ||
q | Quit graph and finish | 8 | ||
9 |
The section of each tree is done manually. Using the mouse the user have to put the cursor on center of the tree that want mark. With left-click holding, move the cursor to outer point of tree. A red _x_ will be appear in center marked and yellow _x_ in the outer point , also will be printed a red circle around selected zone center on red _x_.
As the instructions suggest, click on the center of each tree and hold it up to the outer edge of the groove to mark the center of the tree and the suggested radius. This process is repeated until the line of trees is completed, to move to another groove press on the figure the 'space' key and repeat the process. To finish, press the '1', '2', '3' and '4' keys to obtain the measurements, the 's' key to save the image the 'z' key to save the records of the measurements obtained and 'q' key to exit.
Finally, to validate y calculate the error parameters
python3 ErrorCalculation.py
Universidad de Ibagué
Harold MURCIA
Sebastian TILAGUY