### ROS 2 Control Integration with Mock Hardware Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/index.rst This snippet describes the integration of ros2_control for managing robot control structures. It points to xacro files that provide control descriptions for mock hardware and an example of a controlled robot using this setup. ```xacro urdf/ros2_control_mock_hardware.xacro - xacro providing the control description for mock_hardware. urdf/ur_mocked.urdf.xacro - an example for a controlled robot consisting of the kinematic description and the control description. urdf/inc/ur_joint_control.xacro - macro for describing the joints' control structure. urdf/inc/ur_sensors.xacro - macro for describing the robot's sensors for ros2_control ``` -------------------------------- ### CMakeLists.txt for UR ROS 2 Description Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CMakeLists.txt This CMakeLists.txt file configures the build process for the universal_robots_ros2_description package. It finds necessary packages like ament_cmake, installs directories containing URDF, meshes, and launch files, and sets up testing with pytest if enabled. ```cmake cmake_minimum_required(VERSION 3.5) project(ur_description) find_package(ament_cmake REQUIRED) install( DIRECTORY config launch meshes rviz urdf test DESTINATION share/${PROJECT_NAME} ) ament_export_dependencies(${THIS_PACKAGE_INCLUDE_DEPENDS}) if(BUILD_TESTING) find_package(ament_cmake_pytest REQUIRED) ament_add_pytest_test(ur_urdf_xacro test/test_ur_urdf_xacro.py) ament_add_pytest_test(view_ur_launch test/test_view_ur_launch.py) endif() ament_package() ``` -------------------------------- ### Add Definitions for Adding Targets in Install Folder Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Includes definitions necessary for adding targets to the install folder. This is crucial for package management and deployment, ensuring that generated files are correctly placed. ```cmake # Example CMakeLists.txt snippet for installing files install(DIRECTORY launch/ DESTINATION share/${PROJECT_NAME}/launch ) install(FILES urdf/ur10.urdf DESTINATION share/${PROJECT_NAME}/urdf ) ``` -------------------------------- ### YAML - Mesh Offsets Moved to Visual Parameters Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/migration/kilted.rst Mesh offsets for the shoulder and elbow joints, previously located in 'physical_parameters.yaml', have been moved to the 'visual_parameters.yaml' files. This change affects how visual properties are configured. ```yaml # Example of old physical_parameters.yaml (conceptual): # physical_parameters: # shoulder_mesh_offset: [0.01, 0.0, 0.0] # elbow_mesh_offset: [0.0, 0.01, 0.0] # Example of new visual_parameters.yaml (conceptual): # visual_parameters: # shoulder_mesh_offset: [0.01, 0.0, 0.0, 0.0, 0.0, 0.0] # elbow_mesh_offset: [0.0, 0.01, 0.0, 0.0, 0.0, 0.0] ``` -------------------------------- ### Redefining Global Property 'pi' Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Addresses a warning related to 'redefining global property: pi' starting from the Jade distribution. This change ensures that the 'pi' property is handled correctly to avoid such warnings. ```xacro ``` -------------------------------- ### URDF Common XACRO - Radius Definitions Removed Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/migration/kilted.rst The 'shoulder_radius' and similar definitions for other joints have been removed from the 'physical_parameters.yaml' files and subsequently from 'urdf/inc/ur_common.xacro'. Using older parser versions with these updated files will result in failures. ```xacro # Original ur_common.xacro might have contained: # # These properties are now removed. ``` -------------------------------- ### URDF - Mesh Offsets Defined with 6 DOF Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/migration/kilted.rst The 'visual_parameters.yaml' files now require mesh offsets to be defined for all 6 dimensions (3D translation and 3D rotation). URDF parsers expect this structure, and older configuration files lacking the full 'mesh_offset' entries will not be compatible. ```yaml # Required format for mesh_offset in visual_parameters.yaml: # mesh_offset: [tx, ty, tz, rx, ry, rz] # where tx, ty, tz are translations and rx, ry, rz are rotations (e.g., in radians or degrees depending on convention). ``` -------------------------------- ### Robot Kinematic Chain Structure Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/robot_frames.rst Illustrates the hierarchical structure of the robot's kinematic chain, starting from the base frames and extending to the end-effector. ```text base_link ├ base └ base_link_inertia └ shoulder_link └ upper_arm_link └ forearm_link └ wrist_1_link └ wrist_2_link └ wrist_3_link └ flange └ tool0 ``` -------------------------------- ### Launch File for Viewing UR Robots Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/index.rst This snippet describes the `view_ur.launch.py` launch file, which abstracts the configuration parameters for Universal Robots into a single `ur_type` argument. This simplifies the process of loading and visualizing different UR robot models. ```launch launch/view_ur.launch.py - Abstracts configuration parameters to a single `ur_type` argument for simplified robot loading and visualization. ``` -------------------------------- ### Supported File Formats Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/meshes/ur20/LICENSE.txt Lists the various file formats supported for Universal Robots ROS 2 description, including CAD and technical drawing formats. ```text STEP-Files (ISO 10303-21), Collada (.dae), STL files (.stl), GLB files (.glb), GLFT files (.glft) , Jupiter Tessellation files (.jt), E-plan files (.emp), electrical schematics, CAD files, and drawings including the contents of these technical files. ``` -------------------------------- ### Launch UR Description Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/README.md Launches the UR description for visualization. Allows specifying the robot type via the 'ur_type' argument. ```bash ros2 launch ur_description view_ur.launch.py ur_type:=ur5e ``` -------------------------------- ### Supported Technical Documentation File Formats Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/meshes/ur30/LICENSE.txt Lists the various file formats supported for technical documentation, including CAD, 3D model, and electrical schematic files. ```APIDOC Technical Documentation File Formats: - STEP-Files (ISO 10303-21) - Collada (.dae) - STL files (.stl) - GLB files (.glb) - GLFT files (.glft) - Jupiter Tessellation files (.jt) - E-plan files (.emp) - Electrical schematics - CAD files - Drawings including the contents of these technical files. ``` -------------------------------- ### Supported Technical Documentation File Formats Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/meshes/ur15/LICENSE.txt Lists the various file formats supported for technical documentation, including CAD, 3D model, and electrical schematic files. ```APIDOC Technical Documentation File Formats: - STEP-Files (ISO 10303-21) - Collada (.dae) - STL files (.stl) - GLB files (.glb) - GLFT files (.glft) - Jupiter Tessellation files (.jt) - E-plan files (.emp) - Electrical schematics - CAD files - Drawings including the contents of these technical files. ``` -------------------------------- ### CI/CD: Pre-commit Hooks and Dependency Updates Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Automates the update of pre-commit hooks and bumps several GitHub Actions dependencies. This maintains the project's development environment and ensures that CI processes utilize up-to-date tools and actions. ```bash # Example .github/workflows/ci.yml snippet name: CI jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v5 with: python-version: '3.x' - name: Install pre-commit run: pip install pre-commit - name: Run pre-commit run: pre-commit run --all-files # Example dependency bump for a specific action update_deps: runs-on: ubuntu-latest steps: - uses: peter-evans/create-pull-request@v6 with: commit-message: "Bump peter-evans/create-pull-request from 5 to 6" # ... other parameters ... ``` -------------------------------- ### CI/CD: Jazzy Testing Binary Build Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Updates the CI/CD pipeline to fix a reference for a scheduled jazzy testing binary build. This ensures that the documentation generation and testing process runs smoothly and uses the correct build artifacts. ```bash # Example GitHub Actions workflow snippet name: CI on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 # Other steps... - name: Build Jazzy documentation run: | # Command to build jazzy documentation, referencing the correct build artifact # Example: jazzy --build-dir ./build --output ./docs echo "Building Jazzy documentation..." ``` -------------------------------- ### ROS 2 Control Definitions and Gazebo/Ignition Support Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst This section highlights the migration to ROS 2 and the addition of support for Gazebo and Ignition simulators. It also mentions the inclusion of ROS 2 control definitions, which are crucial for integrating robots with the ROS 2 control framework. ```xml gazebo_ros2_control/GazeboDevicePlugin $(command echo '$(xacro:parse "$(find xacro)/xacro '$(arg urdf_file)')') ``` -------------------------------- ### ROS 2 Launch Argument Declaration Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Fixes an issue with multi-line strings in `DeclareLaunchArgument` nodes within ROS 2 launch files. This ensures that complex string configurations, such as paths or descriptions, are correctly parsed and used. ```python from launch import LaunchDescription from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration def generate_launch_description(): return LaunchDescription([ DeclareLaunchArgument( 'robot_description', default_value=''' This is a multi-line string describing the robot configuration. It should be correctly parsed. ''', description='Multi-line robot description' ) ]) ``` -------------------------------- ### Build Status Table Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/ci_status.md This HTML table displays the build status of the Universal Robots ROS 2 Description repository for different ROS 2 distributions (Humble, Jazzy, Kilted, Rolling). It includes links to GitHub Actions badges and ROS Buildfarm job status. ```HTML
Humble Jazzy Kilted Rolling
Branch humble jazzy rolling rolling
Repo builds Humble Binary Main
Humble Binary Testing
Jazzy Binary Main
Jazzy Binary Testing
Kilted Binary Main
Kilted Binary Testing
Rolling Binary Main
Rolling Binary Testing
Buildfarm
``` -------------------------------- ### Update to Catkin and Nested Python Directory Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst This update transitions the project to Catkin build system. Files from 'ur_driver' are now included in a nested Python directory, facilitating their inclusion in other packages. ```python # Example of including files from a nested Python directory # In setup.py or CMakeLists.txt: # Add the directory containing the Python files to the Python path # For setup.py: # data_files=[('share/your_package_name', ['path/to/your/python_files/*'])] # For CMakeLists.txt: # install(PROGRAMS scripts/your_script.py DESTINATION bin) # install(FILES path/to/your/python_files/your_module.py DESTINATION python/your_package_name) ``` -------------------------------- ### Configuration Files for Robot Parameterization Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/index.rst This snippet outlines the purpose of the four main configuration files used to parameterize Universal Robots models. These files allow for customization of kinematics, joint limits, physical properties, and visual aspects of the robot. ```yaml config/urXX/default_kinematics.yaml - Contains calibration values for precise robot matching. config/urXX/joint_limits.yaml - Allows modification of robot joint limits. config/urXX/physical_parameters.yaml - Tunes physics simulation parameters like inertia. config/urXX/visual_parameters.yaml - Specifies meshes for visual and collision properties. ``` -------------------------------- ### URDF/XACRO Structure and Usage Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/doc/index.rst This snippet details the structure of the Universal Robots ROS 2 Description package, highlighting the use of xacro macros for modularity and reusability. It explains the purpose of key files like `ur_macro.xacro`, `ur.urdf.xacro`, and configuration files for parameterization. ```xacro urdf/ur_macro.xacro - macro file with UR-manipulator description. This file is usually included into external projects to visualize and configure UR manipulators properly. An example how to use this macro is in ``urdf/ur.urdf.xacro`` file. urdf/ur.urdf.xacro - an example scene where the robot is standing alone without any environment. Arguments that have to be passed to the main ``ur.urdf.xacro`` file are: - kinematics_params - Filename to the ``default_kinematics.yaml`` (or equivalent specific kinematics) file - joint_limit_params - Filename to the ``joint_limits.yaml`` file - physical_params - Filename to the ``physical_parameters.yaml`` file - visual_params - Filename to the ``visual_params.yaml`` file ``` -------------------------------- ### Update ROS 2 Control Hardware Interface Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst This entry describes updates related to ROS 2 control hardware interfaces. It includes using `xacro.load_yaml` instead of a deprecated version and replacing `fake_components` with `mock_components` as required by changes in the `ros2_control` hardware interface. ```yaml hardware_interface: ros2_control_hardware_interface: # Configuration for the hardware interface # ... # Example of using xacro.load_yaml in a launch file: # from xacro import load_yaml # config = load_yaml('path/to/your/config.yaml') ``` -------------------------------- ### Add UR5 MoveIt Library and Kinematics Note Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst A MoveIt library for the UR5 is added. However, a note highlights that the Kinematics used by this library are unreliable and should be replaced with the 'ur_kinematics' package for better performance. ```yaml # Example configuration for MoveIt (conceptual) moveit_config_controllers: - name: "arm_controller" action_ns: "follow_joint_trajectory" type: "FollowJointTrajectory" default: True # Note: Kinematics configuration should point to ur_kinematics kinematics: planning_groups: - name: "manipulator" kinematics_solver: "ompl_geometric_planner" kinematics_yaml: | kinematics_solver: ur_kinematics/UR5KinematicsPlugin kinematics_solver_search_resolution: 0.005 kinematics_solver_timeout: 0.005 ``` -------------------------------- ### Prefix Versions of Gazebo and Transmission Macros Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Introduces prefixes for Gazebo and transmission macros. This helps in avoiding naming conflicts and allows for better organization and management of different macro versions. ```xacro ``` -------------------------------- ### Use '--inorder' for Jade+ XACRO on Indigo Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst This change utilizes the '--inorder' flag when processing XACRO files on Indigo with Jade+ compatibility. This ensures that XACRO includes are processed in the correct order, preventing potential issues. ```bash # Example command to use '--inorder' flag rosrun xacro xacro --inorder ur_common.xacro > ur_robot.urdf ``` -------------------------------- ### Add Joint Limited URDFs and MoveIt Packages Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Introduces joint-limited URDFs and associated MoveIt packages. The joint-limited versions are designed to be more compatible with default KDL IK solutions, offering a friendlier experience for motion planning. ```xacro ``` -------------------------------- ### Add ROS-I Base and Tool0 Frames Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Introduces standard ROS-Industrial base and tool0 frames. The 'base' frame is aligned with 'base_link' but rotated 180 degrees on the Z-axis to match visual/collision geometry origins. The 'tool0' frame is provided for users to attach their TCP frames, aligning with a zero TCP setting on the UR controller. ```xacro ``` -------------------------------- ### Add UR10 and Rename Packages Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst The UR10 model is added to the repository, and package renaming occurs. This consolidates robot descriptions and standardizes naming conventions across the project. ```yaml # Example package.xml modification (conceptual) universal_robots_description 1.2.0 URDF descriptions for Universal Robots (UR3, UR5, UR10) User Apache 2.0 catkin ur_description ``` -------------------------------- ### Add Multi-arm Support Configuration Fields Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst This snippet details the addition of new configuration fields for multi-arm support in Universal Robots. These include `trajectory_port`, `non_blocking_read`, and `keep_alive_count`, which enhance control over the trajectory sending interface, update rate, and handling of read timeouts. It also mentions the addition of the `${prefix}` argument for GPIOs and the force torque sensor in the `ur.ros2_control.xacro` file. ```xacro ``` -------------------------------- ### Fix XACRO Warnings in Jade Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Resolves XACRO warnings encountered in the Jade distribution, as referenced in issue #251. This ensures cleaner output and better compatibility with Jade. ```xacro ``` -------------------------------- ### Remove Extra STL Files and Fix Indentations Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Unnecessary STL files are removed from the repository, and code indentations within the XACRO and URDF files are corrected. This improves code readability and reduces clutter. ```xacro ``` -------------------------------- ### Update Pre-commit Workflows Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst This entry indicates that the pre-commit workflows have been updated to their current versions. Pre-commit hooks are used to automatically check code for style and quality before commits are made. ```yaml # .pre-commit-config.yaml repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.4.0 # Updated revision hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-yaml - id: check-ast - repo: https://github.com/psf/black rev: 23.3.0 # Updated revision hooks: - id: black language_version: python3.10 ``` -------------------------------- ### Rename Packages and New Groovy Version Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Packages are renamed, and compatibility with the Groovy distribution is established. This involves updating package names and ensuring all configurations work correctly with Groovy. ```yaml # Example package.xml modification (conceptual) universal_robots_description 1.2.0 URDF descriptions for Universal Robots User Apache 2.0 catkin roscpp sensor_msgs ``` -------------------------------- ### UR20 Model Description and Meshes Source: https://github.com/universalrobots/universal_robots_ros2_description/blob/rolling/CHANGELOG.rst Adds the UR20 robot model description and associated meshes to the repository. This includes updating joint limits for the UR20, adhering to Universal Robots A/S's Terms and Conditions for Use of Graphical Documentation. ```yaml # Example URDF file snippet for UR20