Data Modelsο
Core data structures for representing robots.
Robotο
- class linkforge.core.Robot(name, version='1.1', materials=<factory>, metadata=<factory>, resource_resolver=<factory>, links=<factory>, joints=<factory>, sensors=<factory>, transmissions=<factory>, ros2_controls=<factory>, gazebo_elements=<factory>, semantic=<factory>)[source]ο
Bases:
objectComplete robot description containing links, joints, and metadata.
Acts as the central hub of the LinkForge IR, maintaining rigid bodies (Links) connected by kinematic constraints (Joints), along with sensors, transmissions, and simulation-specific metadata. It provides high-level assembly and traversal APIs.
- Parameters:
name (
str)version (
str)resource_resolver (
IResourceResolver)transmissions (
Sequence[Transmission])ros2_controls (
Sequence[Ros2Control])gazebo_elements (
Sequence[GazeboElement])semantic (
SemanticRobotDescription)
- resource_resolver: IResourceResolverο
- transmissions: Sequence[Transmission]ο
- ros2_controls: Sequence[Ros2Control]ο
- gazebo_elements: Sequence[GazeboElement]ο
- semantic: SemanticRobotDescriptionο
- normalized()[source]ο
Return a new Robot with all components sorted by name.
This ensures that structural equality checks are order-independent.
- Return type:
- prefix_all(prefix)[source]ο
Add a namespace prefix to all components in the robot.
This is a recursive operation that updates names for links, joints, sensors, transmissions, ros2_control interfaces, and semantic data. It is primarily used during βRobotBuilder.attach()β to prevent name collisions.
- merge(component, at_link, joint_name, prefix='', joint_type=JointType.FIXED, origin=None, axis=None, limits=None)[source]ο
Merge another robot model into this one at a specific link.
This operation combines the kinematic tree, sensors, transmissions, hardware interfaces, and semantic metadata. A new joint is created to connect this robotβs at_link to the sub-robotβs root link.
- Parameters:
component (
Robot) β The sub-robot model to attach.at_link (
str) β The link in the current robot to attach to.joint_name (
str) β Unique name for the new connecting joint.prefix (
str) β Optional namespace prefix for all elements in the sub-robot.joint_type (
JointType) β Type of the connecting joint (default: FIXED).origin (
Transform|None) β Optional relative transform for the connection.axis (
Vector3|None) β Optional joint axis (required for non-fixed types).limits (
JointLimits|None) β Optional joint limits.
- Return type:
- Returns:
The current robot instance (self) for method chaining.
- Raises:
RobotValidationError β If the attachment link is not found or if merging results in name collisions or kinematic cycles.
- add_link(link, overwrite=False)[source]ο
Add a link to the robot and update indices.
- Parameters:
- Raises:
RobotValidationError β If a link with the same name already exists and overwrite is False, or if naming conventions are violated.
- Return type:
- add_joint(joint)[source]ο
Add a joint to the robot and update indices.
- Parameters:
joint (
Joint) β The Joint object to add.- Raises:
RobotValidationError β If the joint name is a duplicate or if the referenced parent/child links do not exist.
- Return type:
- link(name)[source]ο
Retrieve a link by name, raising an error if it does not exist.
- Parameters:
name (
str) β The name of the link to find.- Return type:
- Returns:
The Link object.
- Raises:
RobotValidationError β If the link is not found.
- joint(name)[source]ο
Retrieve a joint by name, raising an error if it does not exist.
- Parameters:
name (
str) β The name of the joint to find.- Return type:
- Returns:
The Joint object.
- Raises:
RobotValidationError β If the joint is not found.
- get_joints_for_link(link_name, as_parent=True)[source]ο
Get all joints where the link is parent or child.
- get_parent_joint(link_name)[source]ο
Get the joint that has this link as its child.
In a tree structure, a link has at most one parent joint.
- get_root_link()[source]ο
Get the root link of the kinematic tree.
- Return type:
- Returns:
The root Link object.
- Raises:
RobotValidationError β If no root link is found or multiple root links exist.
- add_sensor(sensor)[source]ο
Attach a sensor to the robot model.
- Parameters:
sensor (
Sensor) β The Sensor object to add.- Raises:
RobotValidationError β If the sensor name is a duplicate or referenced link does not exist.
- Return type:
- sensor(name)[source]ο
Retrieve a sensor by name, raising an error if it does not exist.
- Parameters:
name (
str) β The name of the sensor to find.- Return type:
- Returns:
The Sensor object.
- Raises:
RobotValidationError β If the sensor is not found.
- add_transmission(transmission)[source]ο
Define a mechanical transmission for one or more joints.
- Parameters:
transmission (
Transmission) β The Transmission definition to add.- Raises:
RobotValidationError β If the transmission name is a duplicate or referenced joints do not exist.
- Return type:
- get_transmission(name)[source]ο
Retrieve a transmission by name.
- Parameters:
name (
str) β The name of the transmission to find.- Return type:
- Returns:
The Transmission object if found, otherwise None.
- transmission(name)[source]ο
Retrieve a transmission by name, raising an error if it does not exist.
- Parameters:
name (
str) β The name of the transmission to find.- Return type:
- Returns:
The Transmission object.
- Raises:
RobotValidationError β If the transmission is not found.
- add_ros2_control(ros2_control)[source]ο
Register a ros2_control hardware system.
- Parameters:
ros2_control (
Ros2Control) β The hardware configuration to add.- Raises:
RobotValidationError β If the configuration name is a duplicate.
- Return type:
- update_ros2_control(ros2_control)[source]ο
Update an existing ros2_control configuration.
- Parameters:
ros2_control (
Ros2Control) β The updated Ros2Control configuration.- Return type:
- get_ros2_control(name)[source]ο
Retrieve a ROS2 Control configuration by name.
- Parameters:
name (
str) β The name of the configuration to find.- Return type:
- Returns:
The Ros2Control object if found, otherwise None.
- ros2_control(name)[source]ο
Retrieve a ROS2 Control configuration by name, raising an error if it does not exist.
- Parameters:
name (
str) β The name of the configuration to find.- Return type:
- Returns:
The Ros2Control object.
- Raises:
RobotValidationError β If the configuration is not found.
- add_gazebo_element(element)[source]ο
Add simulation-specific metadata (Gazebo tags).
- Parameters:
element (
GazeboElement) β The GazeboElement definition.- Raises:
RobotValidationError β If the referenced link/joint does not exist.
- Return type:
- get_gazebo_elements(reference=None)[source]ο
Get Gazebo elements, optionally filtered by reference.
- add_group(name, links=None, joints=None, chains=None, subgroups=None, base_link=None, tip_link=None)[source]ο
Add a planning group for MoveIt.
- Parameters:
name (
str) β Unique group name.chains (
list[Chain] |None) β List of kinematic Chain objects.subgroups (
list[str] |None) β List of other planning group names to include.base_link (
str|None) β Shorthand for a single chain base link.tip_link (
str|None) β Shorthand for a single chain tip link.
- Return type:
- Returns:
The robot instance for chaining.
- Raises:
RobotValidationError β If any referenced link, joint, or subgroup does not exist.
- disable_collisions(link1, link2, reason='Adjacent')[source]ο
Disable collision checking between two links.
- Parameters:
- Return type:
- Returns:
The robot instance for chaining.
- Raises:
RobotValidationError β If link1 or link2 is not found.
- disable_all_collisions(links, reason='Adjacent')[source]ο
Disable collision checking between all pairs in the provided list.
- enable_collisions(link1, link2, reason=None)[source]ο
Explicitly re-enable collision checking between two links.
- disable_default_collisions(link)[source]ο
Disable all default collisions for a specific link.
- Parameters:
link (
str) β Link name.- Return type:
- Returns:
The robot instance for chaining.
- Raises:
RobotValidationError β If the link is not found.
- add_joint_property(joint_name, property_name, value)[source]ο
Add a custom property/metadata to a joint.
- Parameters:
- Return type:
- Returns:
The robot instance for chaining.
- Raises:
RobotValidationError β If the joint is not found.
- approximate_link_collision(link, spheres)[source]ο
Add sphere-based collision approximation for a link.
- Parameters:
link (
str) β Name of the link.spheres (
list[SrdfSphere]) β List of SrdfSphere objects.
- Return type:
- Returns:
The robot instance for chaining.
- Raises:
RobotValidationError β If the link is not found.
- property graph: KinematicGraphο
Get the formal kinematic graph representing the robotβs structure.
This is built on demand (and cached) to ensure it reflects the current state of links and joints with optimal performance.
- property root_link: Linkο
Get the root link of the kinematic tree.
The root link is the one that is never a child in any joint.
- export_srdf(validate=True, pretty_print=True)[source]ο
Export the assembled semantic description to SRDF XML.
- summary()[source]ο
Return a detailed architectural summary and validity status.
This method performs a deep kinematic analysis, which may be computationally expensive on first call as it builds the graph.
- Return type:
- resolve_resource(uri, relative_to=None)[source]ο
Resolve a resource URI using the robotβs configured resolver.
- __init__(name, version='1.1', materials=<factory>, metadata=<factory>, resource_resolver=<factory>, links=<factory>, joints=<factory>, sensors=<factory>, transmissions=<factory>, ros2_controls=<factory>, gazebo_elements=<factory>, semantic=<factory>)ο
- Parameters:
name (
str)version (
str)resource_resolver (
IResourceResolver)transmissions (
Sequence[Transmission])ros2_controls (
Sequence[Ros2Control])gazebo_elements (
Sequence[GazeboElement])semantic (
SemanticRobotDescription)
Linkο
- class linkforge.core.Link(name, inertial=None, physics=<factory>, visuals=<factory>, collisions=<factory>)[source]ο
Bases:
objectRobot link representing a rigid body in a kinematic chain.
A link is a rigid body defined by its name, physical properties (inertial), and geometric representations (visual/collision). It serves as a node in the kinematic graph.
- Parameters:
- physics: LinkPhysicsο
- property inertia: InertiaTensorο
Get link inertia tensor (zero tensor if not defined).
- class linkforge.core.Visual(geometry, origin=Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0)), material=None, name=None)[source]ο
Bases:
objectVisual representation of a link.
- Parameters:
- origin: Transform = Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0))ο
- class linkforge.core.Collision(geometry, origin=Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0)), name=None)[source]ο
Bases:
objectCollision representation of a link.
- origin: Transform = Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0))ο
- class linkforge.core.Inertial(mass, origin=Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0)), inertia=<factory>)[source]ο
Bases:
objectInertial properties of a robot link.
- Parameters:
mass (
float)origin (
Transform)inertia (
InertiaTensor)
- origin: Transform = Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0))ο
- inertia: InertiaTensorο
- __post_init__()[source]ο
Validate inertial properties.
- Raises:
RobotPhysicsError β If mass is negative.
- Return type:
- __init__(mass, origin=Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0)), inertia=<factory>)ο
- Parameters:
mass (
float)origin (
Transform)inertia (
InertiaTensor)
- class linkforge.core.InertiaTensor(ixx, iyy, izz, ixy=0.0, ixz=0.0, iyz=0.0)[source]ο
Bases:
object3x3 inertia tensor representation.
Symmetric tensor with 6 unique components: [ ixx ixy ixz ] [ ixy iyy iyz ] [ ixz iyz izz ]
The tensor must be physically plausible. Diagonals must be positive values, and the principal moments must satisfy the triangle inequality for rigid body mass distribution.
β¦ autoclass:: linkforge.core.models.link.LinkPhysics
- members:
- undoc-members:
- show-inheritance:
Jointο
- class linkforge.core.Joint(name, type, parent, child, origin=Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0)), axis=None, limits=None, dynamics=None, mimic=None, safety_controller=None, calibration=None)[source]ο
Bases:
objectRobot joint defining the kinematic connection between two links.
A joint couples a parent link to a child link with a specific degree of freedom (DOF) and mechanical limits. It defines the coordinate transformation from parent to child.
- Parameters:
name (
str)type (
JointType)parent (
str)child (
str)origin (
Transform)limits (
JointLimits|None)dynamics (
JointDynamics|None)mimic (
JointMimic|None)safety_controller (
JointSafetyController|None)calibration (
JointCalibration|None)
- origin: Transform = Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0))ο
- limits: JointLimits | None = Noneο
- dynamics: JointDynamics | None = Noneο
- mimic: JointMimic | None = Noneο
- __init__(name, type, parent, child, origin=Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0)), axis=None, limits=None, dynamics=None, mimic=None, safety_controller=None, calibration=None)ο
- Parameters:
name (
str)type (
JointType)parent (
str)child (
str)origin (
Transform)limits (
JointLimits|None)dynamics (
JointDynamics|None)mimic (
JointMimic|None)safety_controller (
JointSafetyController|None)calibration (
JointCalibration|None)
- class linkforge.core.JointType(*values)[source]ο
Bases:
StrEnumStandard robot joint types.
- REVOLUTE = 'revolute'ο
- CONTINUOUS = 'continuous'ο
- PRISMATIC = 'prismatic'ο
- FIXED = 'fixed'ο
- FLOATING = 'floating'ο
- PLANAR = 'planar'ο
- class linkforge.core.JointLimits(lower=None, upper=None, effort=10.0, velocity=1.0)[source]ο
Bases:
objectJoint limits for revolute/prismatic joints.
For CONTINUOUS joints, lower/upper are optional (only effort/velocity used).
- class linkforge.core.JointDynamics(damping=0.0, friction=0.0)[source]ο
Bases:
objectJoint dynamics properties defining physical behavior.
- class linkforge.core.JointMimic(joint, multiplier=1.0, offset=0.0)[source]ο
Bases:
objectJoint mimic configuration (this joint mimics another).
β¦ autoclass:: linkforge.core.models.joint.JointSafetyController
- members:
- undoc-members:
- show-inheritance:
Geometryο
- class linkforge.core.Box(size)[source]ο
Bases:
objectBox geometry representing a rectangular cuboid.
- Parameters:
size (
Vector3)
- property type: GeometryTypeο
Get the geometry primitive type (BOX).
- class linkforge.core.Cylinder(radius, length)[source]ο
Bases:
objectCylinder geometry aligned along the local Z-axis.
- property type: GeometryTypeο
Get the geometry primitive type (CYLINDER).
- class linkforge.core.Sphere(radius)[source]ο
Bases:
objectSphere geometry.
- Parameters:
radius (
float)
- property type: GeometryTypeο
Get the geometry primitive type (SPHERE).
- class linkforge.core.Mesh(resource, scale=<factory>)[source]ο
Bases:
objectMesh geometry from file or URI.
- property type: GeometryTypeο
Get the geometry primitive type (MESH).
- class linkforge.core.Vector3(x, y, z)[source]ο
Bases:
object3D vector representation for spatial coordinates, axes, and scaling.
- class linkforge.core.Transform(xyz=Vector3(x=0.0, y=0.0, z=0.0), rpy=Vector3(x=0.0, y=0.0, z=0.0))[source]ο
Bases:
objectSpatial transformation representing a 6-DOF pose.
Combines XYZ position (Vector3) and RPY (Roll-Pitch-Yaw) orientation in radians, following the standard robotics convention.
β¦ autoclass:: linkforge.core.models.geometry.GeometryType
- members:
- undoc-members:
- show-inheritance:
Sensorο
- class linkforge.core.Sensor(name, type, link_name, update_rate=30.0, always_on=True, visualize=False, camera_info=None, lidar_info=None, imu_info=None, gps_info=None, contact_info=None, force_torque_info=None, origin=<factory>, topic=None, plugin=None)[source]ο
Bases:
objectUnified sensor model for simulation and hardware abstraction.
Sensors are logical entities attached to robot links. They define data acquisition parameters (update rate, FOV, range) and are exported to simulation-specific formats (e.g., Gazebo <sensor> tags).
- Parameters:
name (
str)type (
SensorType)link_name (
str)update_rate (
float)always_on (
bool)visualize (
bool)camera_info (
CameraInfo|None)contact_info (
ContactInfo|None)force_torque_info (
ForceTorqueInfo|None)origin (
Transform)plugin (
GazeboPlugin|None)
- type: SensorTypeο
- camera_info: CameraInfo | None = Noneο
- plugin: GazeboPlugin | None = Noneο
- with_prefix(prefix)[source]ο
Create a new sensor with prefixed name, link, topic, contact_info, and plugin.
- __init__(name, type, link_name, update_rate=30.0, always_on=True, visualize=False, camera_info=None, lidar_info=None, imu_info=None, gps_info=None, contact_info=None, force_torque_info=None, origin=<factory>, topic=None, plugin=None)ο
- Parameters:
name (
str)type (
SensorType)link_name (
str)update_rate (
float)always_on (
bool)visualize (
bool)camera_info (
CameraInfo|None)contact_info (
ContactInfo|None)force_torque_info (
ForceTorqueInfo|None)origin (
Transform)plugin (
GazeboPlugin|None)
- class linkforge.core.SensorType(*values)[source]ο
Bases:
StrEnumEnumeration of supported sensor types in the LinkForge IR.
Note on LIDAR vs RAY: - LIDAR is the modern Gazebo Harmonic/GZ standard (βlidarβ) - RAY is provided for Gazebo Classic / ROS1 compatibility (βrayβ)
- CAMERA = 'camera'ο
- DEPTH_CAMERA = 'depth_camera'ο
- LIDAR = 'lidar'ο
- RAY = 'ray'ο
- GPU_LIDAR = 'gpu_lidar'ο
- IMU = 'imu'ο
- GPS = 'gps'ο
- FORCE_TORQUE = 'force_torque'ο
- CONTACT = 'contact'ο
- class linkforge.core.CameraInfo(horizontal_fov=1.047, width=640, height=480, format='R8G8B8', near_clip=0.1, far_clip=100.0, noise=None)[source]ο
Bases:
objectCamera-specific sensor information.
- Parameters:
- class linkforge.core.LidarInfo(horizontal_samples=640, horizontal_resolution=1.0, horizontal_min_angle=-1.5707963267948966, horizontal_max_angle=1.5707963267948966, vertical_samples=1, vertical_resolution=1.0, vertical_min_angle=0.0, vertical_max_angle=0.0, range_min=0.1, range_max=10.0, range_resolution=0.01, noise=None)[source]ο
Bases:
objectLIDAR/laser scanner sensor information.
- Parameters:
horizontal_samples (
int)horizontal_resolution (
float)horizontal_min_angle (
float)horizontal_max_angle (
float)vertical_samples (
int)vertical_resolution (
float)vertical_min_angle (
float)vertical_max_angle (
float)range_min (
float)range_max (
float)range_resolution (
float)noise (
SensorNoise|None)
- __init__(horizontal_samples=640, horizontal_resolution=1.0, horizontal_min_angle=-1.5707963267948966, horizontal_max_angle=1.5707963267948966, vertical_samples=1, vertical_resolution=1.0, vertical_min_angle=0.0, vertical_max_angle=0.0, range_min=0.1, range_max=10.0, range_resolution=0.01, noise=None)ο
- Parameters:
horizontal_samples (
int)horizontal_resolution (
float)horizontal_min_angle (
float)horizontal_max_angle (
float)vertical_samples (
int)vertical_resolution (
float)vertical_min_angle (
float)vertical_max_angle (
float)range_min (
float)range_max (
float)range_resolution (
float)noise (
SensorNoise|None)
- class linkforge.core.IMUInfo(angular_velocity_noise=None, linear_acceleration_noise=None)[source]ο
Bases:
objectIMU sensor information.
- Parameters:
- class linkforge.core.GPSInfo(position_sensing_horizontal_noise=None, position_sensing_vertical_noise=None, velocity_sensing_horizontal_noise=None, velocity_sensing_vertical_noise=None)[source]ο
Bases:
objectGPS sensor information.
- Parameters:
- __init__(position_sensing_horizontal_noise=None, position_sensing_vertical_noise=None, velocity_sensing_horizontal_noise=None, velocity_sensing_vertical_noise=None)ο
β¦ autoclass:: linkforge.core.models.sensor.ContactInfo
- members:
- undoc-members:
- show-inheritance:
β¦ autoclass:: linkforge.core.models.sensor.ForceTorqueInfo
- members:
- undoc-members:
- show-inheritance:
β¦ autoclass:: linkforge.core.models.sensor.SensorNoise
- members:
- undoc-members:
- show-inheritance:
Transmissionο
Standard URDF transmission model for ros_control/ros2_control integration.
While Ros2Control provides a modern dashboard-based workflow, Transmission remains fully supported for compatibility and standard URDF workflows.
- class linkforge.core.Transmission(name, type, joints=<factory>, actuators=<factory>, parameters=<factory>)[source]ο
Bases:
objectMechanical transmission mapping between joints and actuators.
Transmissions describe how mathematical joint states relate to physical actuator commands, including hardware interface specifications for ros2_control.
- Parameters:
name (
str)type (
str)joints (
Sequence[TransmissionJoint])actuators (
Sequence[TransmissionActuator])
- joints: Sequence[TransmissionJoint]ο
- actuators: Sequence[TransmissionActuator]ο
- with_prefix(prefix)[source]ο
Create a new transmission with prefixed name, joints, and actuators.
- Parameters:
prefix (
str)- Return type:
- classmethod create_simple(name, joint_name, actuator_name=None, mechanical_reduction=1.0, hardware_interfaces=None)[source]ο
Create a simple 1-to-1 transmission.
- Parameters:
name (
str) β Transmission namejoint_name (
str) β Name of the jointactuator_name (
str|None) β Name of the actuator (defaults to joint_name + β_motorβ)mechanical_reduction (
float) β Gear ratio (default 1.0)hardware_interfaces (
list[str] |None) β Interface types (default [HW_IF_POSITION])
- Return type:
- Returns:
Configured simple transmission
- classmethod create_differential(name, joint1_name, joint2_name, actuator1_name=None, actuator2_name=None, mechanical_reduction=1.0, hardware_interfaces=None)[source]ο
Create a differential transmission (2 actuators, 2 joints).
- Parameters:
name (
str) β Transmission namejoint1_name (
str) β First joint namejoint2_name (
str) β Second joint nameactuator1_name (
str|None) β First actuator name (defaults to joint1_name + β_motorβ)actuator2_name (
str|None) β Second actuator name (defaults to joint2_name + β_motorβ)mechanical_reduction (
float) β Gear ratio (default 1.0)hardware_interfaces (
list[str] |None) β Interface types (default [HW_IF_POSITION])
- Return type:
- Returns:
Configured differential transmission
- __init__(name, type, joints=<factory>, actuators=<factory>, parameters=<factory>)ο
- Parameters:
name (
str)type (
str)joints (
Sequence[TransmissionJoint])actuators (
Sequence[TransmissionActuator])
- class linkforge.core.TransmissionJoint(name, hardware_interfaces=<factory>, mechanical_reduction=1.0, offset=0.0)[source]ο
Bases:
objectJoint specification in a transmission.
- Parameters:
- with_prefix(prefix)[source]ο
Create a new transmission joint with a prefixed name.
- Parameters:
prefix (
str)- Return type:
- class linkforge.core.TransmissionActuator(name, hardware_interfaces=<factory>, mechanical_reduction=1.0, offset=0.0)[source]ο
Bases:
objectActuator specification in a transmission.
- Parameters:
- with_prefix(prefix)[source]ο
Create a new transmission actuator with a prefixed name.
- Parameters:
prefix (
str)- Return type:
Materialο
- class linkforge.core.Material(name, color=None, texture=None)[source]ο
Bases:
objectMaterial properties defining the visual surface of a robot link.
Gazeboο
- class linkforge.core.GazeboElement(reference=None, properties=<factory>, plugins=<factory>, material=None, static=None, stop_cfm=None, stop_erp=None, provide_feedback=None, implicit_spring_damper=None)[source]ο
Bases:
objectSimulation-specific metadata container for Gazebo.
Encapsulates parameters that are not part of the standard URDF spec but are required for high-fidelity physics (e.g., DART/ODE parameters) or visual appearance in Gazebo.
All mutable inputs (
propertiesdict,pluginssequence) are converted to immutable structures in__post_init__to guarantee true deep immutability even though the class isfrozen=True.- Parameters:
- plugins: Sequence[GazeboPlugin]ο
- with_prefix(prefix)[source]ο
Create a new gazebo element with prefixed reference and plugins.
- Parameters:
prefix (
str)- Return type:
- __deepcopy__(memo)[source]ο
Deep copy: Since this object is deeply immutable, return self.
- Parameters:
- Return type:
- __init__(reference=None, properties=<factory>, plugins=<factory>, material=None, static=None, stop_cfm=None, stop_erp=None, provide_feedback=None, implicit_spring_damper=None)ο
- class linkforge.core.GazeboPlugin(name, filename, parameters=<factory>, raw_xml=None)[source]ο
Bases:
objectGazebo plugin specification for functional extensions.
parametersis stored as an immutableMappingProxyTyperegardless of what is passed at construction time, ensuring that thefrozen=Truecontract is not silently violated by callers mutating the dict.- with_prefix(prefix)[source]ο
Create a new plugin with a prefixed name.
- Parameters:
prefix (
str)- Return type:
ROS2 Controlο
- class linkforge.core.Ros2Control(name, type='system', hardware_plugin='', joints=<factory>, sensors=<factory>, parameters=<factory>)[source]ο
Bases:
objectHardware interface abstraction for ROS 2 Control.
This model describes a hardware system (system, actuator, or sensor), its associated joints/sensors, and the hardware plugin used to communicate with the physical or simulated hardware.
- Parameters:
name (
str)type (
str)hardware_plugin (
str)joints (
Sequence[Ros2ControlJoint])sensors (
Sequence[Ros2ControlSensor])
- joints: Sequence[Ros2ControlJoint]ο
- sensors: Sequence[Ros2ControlSensor]ο
- with_prefix(prefix)[source]ο
Create a new control block with prefixed name and joints.
- Parameters:
prefix (
str)- Return type:
- class linkforge.core.Ros2ControlJoint(name, command_interfaces=<factory>, state_interfaces=<factory>, parameters=<factory>)[source]ο
Joint configuration in a ros2_control block.
- Parameters:
- with_prefix(prefix)[source]ο
Create a new control joint with a prefixed name.
- Parameters:
prefix (
str)- Return type:
- class linkforge.core.models.ros2_control.Ros2ControlSensor(name, state_interfaces=<factory>, parameters=<factory>)[source]ο
Bases:
objectSensor configuration in a ros2_control block.
- with_prefix(prefix)[source]ο
Create a new control sensor with a prefixed name.
- Parameters:
prefix (
str)- Return type: