MotoROS2

repository·main·Indexed 41 days ago

https://github.com/yaskawa-global/motoros2

MotoROS2 enables Yaskawa Motoman industrial robot controllers (DX200, YRC1000, YRC1000micro) to be controlled by ROS 2 applications via a micro-ROS Agent. It supports ROS 2 versions Foxy, Galactic, Humble, and Jazzy using FastDDS. The documentation provides guides for installation, binary verification, S2C parameter configuration, and managing the micro-ROS Agent bridge.

Tokens
15.1K
Snippets
32
Records
79
Agent score
51%

What's inside MotoROS2

  1. Check MotoROS2 Controller Compatibility

    main

    MotoROS2 is manipulator agnostic but is limited by the supported Yaskawa controller series.

    Supported Controllers:

    • DX200
    • YRC1000
    • YRC1000micro

    Unsupported Controllers:

    • DX100
    • FS100

    Robot Types:

    • Supported: Any robot using the supported controllers (including Scara, Palletizing, and Welding robots where the arm motion is controlled by MotoROS2).
    • Not Supported: SDA (dual-arm) robots and Delta robots (due to controller limitations).

    Note for Welding Robots: MotoROS2 controls the motion of the arm only. It does not provide process controls and cannot control the welding power source. To control the power source, your ROS 2 application must interface with the welder directly. It is not compatible with UWI or Weldcom2.

  2. Understand the MotoROS2 TF transform tree

    main

    MotoROS2 broadcasts standard ROS transforms via the tf topic. The tree structure follows ROS-Industrial conventions.

    Transform Hierarchy

    1. world $\rightarrow$ base: From the Yaskawa BF (Base Frame) to the origin of the current Yaskawa RF (Reference Frame).
      • Note: In multi-robot setups (e.g., R1+R2), this transform is only correct after the robot groups have been calibrated.
    2. base $\rightarrow$ flange: From the Yaskawa RF to the ROS-Industrial flange frame.
      • Note: The flange frame follows REP-103 (X+ forward, Y+ left, Z+ up) to ensure consistent EEF attachment.
    3. flange $\rightarrow$ tool0: From the flange to the tool0 frame (an "all zeros toolframe").
      • Note: This is a static transform coinciding with an unconfigured tool file on the controller. It is not the same as Yaskawa's Tool No. 0.
    4. flange $\rightarrow$ tcp_N: From the flange to the currently active Yaskawa TCP.
  3. Get the controller and PC on the same subnet

    main

    If the controller and PC are on different subnets, use one of the following three methods to establish communication:

    1. Modify the configuration file: Update the agent_ip_address key in motoros2_config.yaml to an IP address on the robot's subnet. You must then propagate these changes to the Yaskawa controller. Ensure the PC running the micro-ROS agent uses this same static IP on the network port connected to the controller.
    2. Modify the controller: Change the robot controller's IP and subnet mask so it matches the PC's subnet.
    3. Add a gateway: Modify the robot controller's network settings to add a gateway that can reach the PC's subnet.
  4. Handle Functional Safety Unit (FSU) interactions

    main

    The Functional Safety Unit (FSU) can limit robot motion (speed, workspace, or emergency stops).

    • In MotoROS2 versions 0.1.1 and older: FSU limitations result in undefined/incomplete trajectory execution with no notification to the client. You must monitor the /joint_states topic to verify if the robot is following the planned trajectory.
    • In MotoROS2 versions 0.1.2 and newer: MotoROS2 attempts to execute the complete trajectory, but may do so at a reduced speed if the FSU imposes a limit.

    Note for Motion Planners (e.g., MoveIt): You must configure planners to allow for these potential slowdowns to prevent them from prematurely aborting trajectories. MotoROS2 does not currently report FSU activation status or speed reduction ratios.

  5. Work around lack of asynchronous motion and partial goals

    main

    MotoROS2 currently only supports synchronous motion across all configured motion groups. This means:

    1. Motion groups cannot execute independently.
    2. Partial goals are not supported: Every goal submitted must include information for all groups and all joints configured on the controller.

    Work-around: To simulate motion for only a subset of groups/joints, retrieve the current state of all groups and update the target poses for only the desired groups/joints, while keeping the target poses of all other groups/joints static.

  6. Manage trajectory length limits

    main

    MotoROS2 imposes a hard limit of 200 JointTrajectoryPoints per JointTrajectory within control_msgs/FollowJointTrajectory action goals. This limit is due to controller resource constraints and micro-ROS implementation details.

    Important Notes:

    • This limit applies to the number of points, not the total time duration.
    • MotoROS2 cannot validate if a trajectory is too long or notify the client if it exceeds this limit.
    • If a trajectory exceeds the limit, the robot may not receive the command at all.

    Work-around: If you need to execute a long motion, split the trajectory into smaller sections, each containing no more than 200 points. Note that this will break motion continuity between sections.

    // Example logic for client-side splitting
    if (trajectory.points.length > 200) {
      const chunks = splitTrajectory(trajectory, 200);
      // Send chunks sequentially
    }
  7. Understand the micro-ROS Agent role

    main

    MotoROS2 is built on the micro-ROS stack. Because micro-ROS applications cannot communicate directly with ROS 2 RMWs, a micro-ROS Agent is required.

    • Role: Acts as a transparent bridge between MotoROS2 and ROS 2.
    • Deployment: The agent must run on the host PC that is sending commands to the MotoROS2 node.
    • Requirement: The micro-ROS Agent must always be running for MotoROS2 to function correctly.
  8. MotoROS2 Licensing Requirements

    main

    Understanding the MotoPlus SDK license requirements for MotoROS2:

    • Deployment: Does NOT require a MotoPlus SDK license to run on a supported Yaskawa controller.
    • Development (MotoROS2): DOES require a MotoPlus SDK license if you are building MotoROS2 from source.
    • Development (ROS 2 App): Does NOT require a MotoPlus SDK license to develop a ROS 2 application that interfaces with MotoROS2.
  9. Option Function and MotoPlus compatibility

    main

    MotoROS2 (v0.2.1) is not compatible with the following:

    • Simple Connect: This application (often used for arc-welding configurations) must be removed to run MotoROS2.
    • Absolute Accuracy Compensation: MotoROS2 does not currently support Cartesian motion, so it cannot benefit from this feature. Compatibility for Cartesian motion is under investigation.
  10. Quickstart guide for MotoROS2

    main

    To get MotoROS2 running with a Yaskawa Motoman controller, follow these high-level steps:

    1. Check Prerequisites: Ensure your controller meets the hardware and software requirements.
    2. Download & Prepare: Download the latest release, extract it onto a USB stick, and edit the configuration file (specifically the Agent IP and port).
    3. Install on Controller:
      • Maintenance Mode: Load the MotoPlus application (.out file) onto the controller based on your model:
        • DX200: mr2_dx2_*.out
        • YRC1000: mr2_yrc1_*.out
        • YRC1000micro: mr2_yrc1m_*.out
      • Online Mode:
        • DX200: Insert USB stick with motoros2_config.yaml into CN106 in the controller cabinet.
        • YRC1000/YRC1000micro: Load motoros2_config.yaml via USER DEFINED FILES.
    4. Setup ROS 2 Side: Start a micro-ROS Agent instance on a PC.
    5. Finalize: Reboot the controller and verify the installation.
  11. Configure Network Settings for DX200

    main

    To allow the robot controller to communicate with the PC running the micro-ROS Agent, you must set the controller's IP address to a manual setting.

    Physical Connection:

    • Connect a LAN cable to the LAN port.

    Configuration Steps:

    1. Boot the controller while holding {MAIN MENU} on the pendant keypad to enter Maintenance mode.
    2. Upgrade to MANAGEMENT security level by touching [System Info] $\rightarrow$ [Security] (default password is all 9's).
    3. Touch [System Info] $\rightarrow$ [Setup] and select OPTION FUNCTION.
    4. Navigate to NETWORK SETTING and then to HOST SETUP.
    5. Ensure IP ADDRESS SETTING is set to MANUAL SETTING.
      • Note: If it is not, ensure DNS SETTING and SNTP SETTING are not set to DHCP SETTING before switching to MANUAL SETTING.
    6. Press {ENTER} on the pendant keypad and touch [OK].