/
r.d.karimov
/
EmbodiedAI
Обзор
Документация
Войти
/
r.d.karimov
/
EmbodiedAI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Main.java
81 строка
3 KB
r.d.karimov
upload files
19 янв 2025, 21:02
19 янв 2025, 21:02
8af564b
Код
Авторство
О чём код?
package main; import com.fasterxml.jackson.databind.ObjectMapper; import UpperLevel.NLPModule; import UpperLevel.TaskPlanner; import LowerLevel.Navigation; import LowerLevel.Manipulation; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class Main { public static void main(String[] args) { try { // Чтение входного JSON ObjectMapper objectMapper = new ObjectMapper(); File inputFile = new File("test.json"); Map<String, Object> inputData = objectMapper.readValue(inputFile, HashMap.class); // Извлечение данных String instruction = (String) inputData.get("instruction"); Map<String, Object> sceneData = (Map<String, Object>) inputData.get("scene"); Scene scene = objectMapper.convertValue(sceneData, Scene.class); // Верхний уровень: Планирование NLPModule nlpModule = new NLPModule(); Map<String, String> command = nlpModule.parseInstruction(instruction); TaskPlanner taskPlanner = new TaskPlanner(); List<String> plan = taskPlanner.generatePlan(command); // Нижний уровень: Навигация и манипуляция Navigation navigation = new Navigation(); Manipulation manipulation = new Manipulation(); List<Position> path = new ArrayList<>(); for (String task : plan) { if (task.startsWith("NAVIGATE_TO")) { String location = task.split(" ")[1]; Position position = findPositionByName(scene, location); if (position != null) { path.add(position); navigation.navigateTo(location); } } else if (task.startsWith("PICK")) { String object = task.split(" ")[1]; manipulation.pick(object); } else if (task.startsWith("PLACE")) { String object = task.split(" ")[1]; manipulation.place(object); } } // Создание траектории Trajectory trajectory = new Trajectory(); trajectory.setId(1); // Уникальный ID траектории trajectory.setPath(path); // Запись выходного JSON File outputFile = new File("output.json"); objectMapper.writerWithDefaultPrettyPrinter().writeValue(outputFile, trajectory); System.out.println("Траектория успешно сохранена в output.json"); } catch (Exception e) { e.printStackTrace(); } } private static Position findPositionByName(Scene scene, String name) { for (SceneObject object : scene.getObjects()) { if (object.getName().equals(name)) { return object.getPosition(); } } return null; } }