import React from "react"; import { Weight, Activity, Layers, Cog } from "lucide-react"; import ParameterItem from "./ui/parameter-item"; import { useUrdf } from "@/hooks/useUrdf"; const RobotParameters: React.FC = () => { // Get robot data from the UrdfContext const { currentRobotData } = useUrdf(); // If no data is available, show an error message if (!currentRobotData) { return (

Parameters

No robot parameters available
); } // Use data from the context const data = currentRobotData; // Format the mass with units const formatMass = (mass?: number) => { return mass ? `${mass.toFixed(1)}kg` : "Unknown"; }; // Create sub-items for links with masses const massSubItems = data?.links ?.filter((link) => link.name && link.mass !== undefined && link.mass > 0) .map((link) => ({ label: link.name || "Unnamed Link", value: `${link.mass?.toFixed(1)}kg`, })) || []; // Create sub-items for joint types const jointSubItems = []; if (data?.joints?.revolute) { jointSubItems.push({ label: "Revolute", value: data.joints.revolute }); } if (data?.joints?.prismatic) { jointSubItems.push({ label: "Prismatic", value: data.joints.prismatic }); } if (data?.joints?.other) { jointSubItems.push({ label: "Other", value: data.joints.other }); } if (data?.joints?.continuous) { jointSubItems.push({ label: "Continuous", value: data.joints.continuous }); } if (data?.joints?.fixed) { jointSubItems.push({ label: "Fixed", value: data.joints.fixed }); } // Create sub-items for materials const materialSubItems = data.materials ?.filter((material) => material.name && material.percentage) .map((material) => ({ label: material.name || "Unknown Material", value: `${material.percentage}%`, })) || []; return (

Parameters

} color="bg-sidebar/50 dark:bg-sidebar-accent/30" subItems={massSubItems.length > 0 ? massSubItems : undefined} /> } color="bg-sidebar/50 dark:bg-sidebar-accent/30" /> 0 ? `${materialSubItems.length} materials` : "Unknown" } icon={} color="bg-sidebar/50 dark:bg-sidebar-accent/30" subItems={materialSubItems.length > 0 ? materialSubItems : undefined} /> 0 ? jointSubItems.length + " types" : "Unknown" } icon={} color="bg-sidebar/50 dark:bg-sidebar-accent/30" subItems={jointSubItems.length > 0 ? jointSubItems : undefined} />
); }; export default RobotParameters;