.. _component_ports: ROS Topic ========= .. image:: images/ros_topic.png Within a **Component** or **Component Assembly**, a **ROS Topic** is represented by a **GenericDomainModelPort** with the following **Attributes.** +-------------+---------------------------------------------------+-------------------------------------------------------------+ | Attributes | Value | Description | +=============+===================================================+=============================================================+ | Type | topic | | +-------------+---------------------------------------------------+-------------------------------------------------------------+ | Attribute 0 | force_name | Use the GenericDomainModelPort's name as the ROS Topic name | +-------------+---------------------------------------------------+-------------------------------------------------------------+ | Attribute 2 | *[msg type]* | ROS Topic Msg Type *- e.g. WrenchStamped* | +-------------+---------------------------------------------------+-------------------------------------------------------------+ | Attribute 7 | ros | | +-------------+---------------------------------------------------+-------------------------------------------------------------+ A **ROS Topic** is used to connect ROS Topic Publishers and ROS Topic Subscribers. For each netlist of connected ports, the Interpreter will check that the the port types all match *(e.g. a ROS Topic Publisher cannot broadcast to a ROS Service Server)* and that the Topic Msg types *(if specified)* all match. If a port's **Attribute 0 Value** is **force_name**, then all ports on that netlist will be assigned the forcing GenericDomainModelPort's name. If two or more ports have their **Attribute 0 Value** set to **force_name**, then one of their names will be picked at random and assigned to all ports on that netlist. Be careful using **force_name**. Otherwise, a unique ROS Topic name will be generated and assigned to ports in that netlist. ROS Service =========== .. image:: images/ros_service.png Within a **Component** or **Component Assembly**, a **ROS Service** is represented by a **GenericDomainModelPort** with the following **Attributes.** +-------------+---------------------------------------------------+---------------------------------------------------------------+ | Attributes | Value | Description | +=============+===================================================+===============================================================+ | Type | service | | +-------------+---------------------------------------------------+---------------------------------------------------------------+ | Attribute 0 | force_name | Use the GenericDomainModelPort's name as the ROS Service name | +-------------+---------------------------------------------------+---------------------------------------------------------------+ | Attribute 2 | *[msg type]* | ROS Service Msg Type *- e.g. Trigger* | +-------------+---------------------------------------------------+---------------------------------------------------------------+ | Attribute 7 | ros | | +-------------+---------------------------------------------------+---------------------------------------------------------------+ A **ROS Service** is used to connect ROS Service Servers and ROS Service Clients. For each netlist of connected ports, the Interpreter will check that the the port types all match *(e.g. a ROS Topic Publisher cannot broadcast to a ROS Service Server)* and that the Service Msg types *(if specified)* all match. If a port's **Attribute 0 Value** is **force_name**, then all ports on that netlist will be assigned the forcing GenericDomainModelPort's name. If two or more ports have their **Attribute 0 Value** set to **force_name**, then one of their names will be picked at random and assigned to all ports on that netlist. Be careful using **force_name**. Otherwise, a unique ROS Service name will be generated and assigned to ports in that netlist. ROS Action ========== .. image:: images/ros_action.png Within a **Component** or **Component Assembly**, a **ROS Action** is represented by a **GenericDomainModelPort** with the following **Attributes.** +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attributes | Value | Description | +=============+===================================================+==============================================================+ | Type | action | | +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attribute 0 | force_name | Use the GenericDomainModelPort's name as the ROS Action name | +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attribute 2 | *[msg type]* | ROS Action Type *- e.g. Trajectory* | +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attribute 7 | ros | | +-------------+---------------------------------------------------+--------------------------------------------------------------+ A **ROS Action** is used to connect ROS Action Servers and ROS Action Clients. For each netlist of connected ports, the Interpreter will check that the the port types all match *(e.g. a ROS Topic Publisher cannot broadcast to a ROS Service Server)* and that the Action types *(if specified)* all match. If a port's **Attribute 0 Value** is **force_name**, then all ports on that netlist will be assigned the forcing GenericDomainModelPort's name. If two or more ports have their **Attribute 0 Value** set to **force_name**, then one of their names will be picked at random and assigned to all ports on that netlist. Be careful using **force_name**. Otherwise, a unique ROS Action name will be generated and assigned to ports in that netlist. URDF Link ========= Within a **Component** or **Component Assembly**, a **URDF Link Port** is represented by a **GenericDomainModelPort** with the following Attributes. +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attributes | Value | Description | +=============+===================================================+==============================================================+ | Type | urdf_link | | +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attribute 7 | ros | | +-------------+---------------------------------------------------+--------------------------------------------------------------+ A URDF Link Port allows a designer to connect a ROS Node Model with a Component that contains a physical model (generally a CAD Model). URDF Link Target ================ Within a **Component** or **Component Assembly**, a **URDF Link Target Port** is represented by a **GenericDomainModelPort** with the following Attributes. +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attributes | Value | Description | +=============+===================================================+==============================================================+ | Type | urdf_link_target | | +-------------+---------------------------------------------------+--------------------------------------------------------------+ | Attribute 7 | ros | | +-------------+---------------------------------------------------+--------------------------------------------------------------+ A URDF Link Target Port allows a designer to connect a ROS Node Model with a Component that contains a physical model (generally a CAD Model).