Adaptación del proyecto fields ignition para campos de manzanas.
En el contexto del proyecto de grado, cuyo objetivo es evaluar distintos algoritmos de detección y conteo de manzanas, surge el problema de conseguir datos con los cuales experimentar. Es por esto que surge la posibilidad de adaptar el proyecto fields ignition, que genera campos de tomates para simular ambientes de prueba para robots agrícolas, de forma tal de generar campos de manzanas.
- http://wiki.ros.org/noetic/Installation
- http://wiki.ros.org/catkin/Tutorials/create_a_workspace
- Se asume que el workspace se crea en
~/catkin_ws/
- Se asume que el workspace se crea en
apt-get -q -y install ignition-fortress
Nota: Para ignition Fortress solo se puede instalar desde Source. Definiendo export IGNITION_VERSION=fortress
.
Para generar los campos de manzanas se debe tener instalado Blender en su versión 3.3.
git clone https://gitlab.fing.edu.uy/facundo.gutierrez/apple_fields_ignition
en la carpeta src del workspacerosdep install --from-paths src --ignore-src -r -y
en la carpeta del workspace- ejecutar
catkin_make
Se provee una interfaz de gestión que permite lanzar, grabar y generar instancias del simulador.
Para lanzar la interfaz se debe ejecutar el comando:
source devel/setup.sh
en la carpeta del workspace.
Y luego
roslaunch fields_ignition fields_ignition.launch
Abriéndose la siguiente interfaz:
Para lanzar una instancia del simulador se debe elegir una de las opciones de la lista desplegable y luego hacer clic en launch.
Para grabar un recorrido del simulador, se debe definir el nombre del recorrido, seleccionar si se desea grabar el bag o el video, y posteriormente hacer clic en "Grabar".
Para finalizar la grabación se debe presionar "Parar". Esto genera un directorio <fields_ignition>/generated/<instancia>/experiments/<nombre_del_experimento>
en el directorio de la instancia seleccionada, donde se guarda el video y el bag grabados.
Para generar un nuevo campo de manzanas se debe modificar el JSON del campo de texto y hacer clic en "Generar". Para más detalles del funcionamiento ver Generación de campos de manzanas
Los detalles de cada campo del JSON se detallan a continuación:
Propiedad | Descripición |
---|---|
world_name | Nombre del mundo generado. |
field_id | Nombre identificador de la instancia del simulador. Si se mantiene un valor existente, se sobrescribe. |
row_count | Cantidad de filas. |
row_length | Cantidad de árboles por fila. |
row_dist | Distancia entre cada fila. |
crop_dist | Distancia entre árboles por fila. |
tree_properties | Propiedades de los árboles generados. |
origin_coordinates | Coordinadas de origen para la posición de los árboles. |
camera_position | Posición inicial de la cámara. Ver: "pose" en SDF Camera Sensor |
husky_initial_position | Posición inicial del robot. Ver: "pose" en SDF World Model |
Acá se listan las propiedades más importantes. Para ver todas las propiedades, además de cómo ejecutar de manera independiente la generación de árboles, ver Generación de árboles de manzanas.
Propiedad | Descripición |
---|---|
fruits/count_proportion | Probabilidad de agregar una fruta en un nodo. Rango: [0,1] |
fruits/size_range | Intervalo de tamaños de las frutas en metros. |
leaf/count_proportion | Probabilidad de agregar una hoja en un nodo. Rango: [0,1] |
leaf/size_range | Intervalo de tamaños de las hojas en metros. |