§4 xArm 850

How the Machine Works

How the controller turns commands into joint motion, how the arm knows where its tool is, and how it senses a bump.

Start Here

This section explains how the controller turns a command into joint motion, how the arm knows where its tool is, and how it senses a bump. Every tier below starts from the same three facts.

  • 17-bit

    encoders on the joint motors1

  • 0–5

    collision sensitivity, where 0 is off2

  • 250 Hz

    fastest command rate in servo mode3

  • Six rotary joints move the arm, from Joint 1 at the base to Joint 6 at the tool4.
  • The control box is the core of the system: it holds the arm's control system5.
  • What the arm positions is a point on its tool, called the Tool Center Point, or TCP6.

S2 in one line: S2 is the xArm 850 arm that picks up incoming material and moves it between receiving, staging and production78.

Look Back

A question from earlier on, to keep it fresh. Skip it if you like; nothing depends on it.

q-s03-b-02 Which part actually touches and holds the workpiece?
  1. Check option (a)

    Correct. Yes. It mounts on the wrist and does the work.21

  2. Check option (b)

    Not this one. The control box houses the control system. It sits away from the arm and never touches the part.60

  3. Check option (c)

    Not this one. Joint 1 is at the base. The tool attaches at the other end, at Joint 6.4

q-s03-b-01Safety Where is the 850's emergency stop button?
  1. Check option (a)

    Correct. Right. That is why the control box must sit where you can reach it, outside the arm's working range.6162

  2. Check option (b)

    Not this one. The wrist has a user button with a blue LED, and its function is left for the user to define. It is not an emergency stop. The e-stop is on the control box.6361

  3. Check option (c)

    Not this one. Studio has a STOP button, but it is a software stop that leaves the arm's power on. The emergency stop is the button on the control box.646561

Choose your depth

Four depths, one page. Switch at any time: every tier stays open to everyone. What the four tiers mean

1Beginner

The Ideas Behind the Motion

For: Anyone with no robotics background: a visitor, a new operator, a manager
Kind of task: Recognize and recall, with plain-language explanations and pictures

In this part you learn the few ideas that explain every move the arm makes: joints that turn, a box that decides, a point on the tool that the arm aims, and a way of sensing a bump that is useful but is not a safeguard. No robotics background is needed.

Six Joints, One After Another

Six rotary joints sit one after another along the arm, from Joint 1 at the base to Joint 6 at the tool end. Each one turns, and together they place the tool4.

A line drawing of the 850 arm with Joint 1 to Joint 6 labeled and a curved arrow at each joint showing its direction of rotation.
Joint 1 at the base to Joint 6 at the tool, each turning about its own axis4. Image: UFACTORY

The Control Box Decides

  • The control box is the core of the system: it holds the arm's control system5.
  • UFACTORY describes Studio as software that runs inside the control box9. In the lab you open it with the Studio desktop app10.

The Point the Arm Aims

  • The arm positions one point on its tool, the Tool Center Point, or TCP. If no offset is set, the TCP is the center of the flange at the end of the arm. An offset moves it to the real tip of the tool6.
  • Positions are measured from the arm's base. X is front and back, Y is left and right, and Z is up and down11.

Teaching by Hand

  • In manual mode the arm compensates for its own weight, which UFACTORY calls "zero gravity". A person can then move it by hand and record the positions12.
  • How easily the arm gives under your hand is a teach sensitivity setting13.

When the Power Is Off

With the power off, brakes inside the joints hold the arm in its pose14.

Sensing a Bump

  • The 850 notices a collision from motor current. The controller works out from a model of the arm how much current each joint should draw, compares that with the current it measures, and reports a collision when the two differ by more than a set threshold15.
  • That means it notices a bump from the motor current, once contact has happened15.
  • The UFACTORY sources do not call this detection safety-rated16. This project's advice is to treat it as a controller feature, never as a validated safeguard17.
  • So the rule stays the same: keep out of the arm's working area while it runs18.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s04-b-01 What is the TCP?
  1. Check option (a)

    Correct. Right. It is the Tool Center Point, the reference point the arm positions.6

  2. Check option (b)

    Not this one. The network address is the controller's IP address. Here TCP means Tool Center Point. The same three letters also name a network protocol, which Section 8 covers.19620

  3. Check option (c)

    Not this one. The base is where positions are measured from. The TCP is at the tool end.116

q-s04-b-02 In manual mode you can push the arm around by hand. Why does it not drop?
  1. Check option (a)

    Correct. Yes. Manual mode is "zero gravity" teaching.12

  2. Check option (b)

    Not this one. In manual mode the arm is powered and compensating for gravity. With the power really off, the brakes hold it instead.1214

  3. Check option (c)

    Not this one. The gripper holds workpieces. Gravity compensation holds the arm.2112

q-s04-b-03Safety The 850 detects collisions. Does that make it safe to walk into its path?
  1. Check option (a)

    Not this one. It detects a collision from motor current, after contact. The UFACTORY sources do not call it safety-rated. Keep out while the arm runs.151618

  2. Check option (b)

    Correct. Right. This project's advice is to treat it as a configurable function, not a validated safeguard.17

2Novice

Modes and Motion Types

For: Someone who will work near or with the cell: operator, trainee technician
Kind of task: Explain and sequence: put steps in order, match parts to their functions

In this part you learn the two ways the arm can be told to move, what is inside a joint, and how a command travels from a program to the motors. It is for someone who will work near or with the cell.

Two Ways to Move

  • A joint move goes point to point in joint space: you give each joint an angle, in degrees, and the tool follows whatever path those angles produce22.
  • A TCP move, or linear move, drives the tool along a path you choose in space, such as a straight line or an arc22.
  • This project's advice: pick the TCP move when the path itself matters, for example lowering a part straight down into a slot, and the joint move when only the end point matters23.

Why Six Joints Matter

With six joints the 850 has full six-degree-of-freedom control, so any reachable tool position and orientation can be asked for. The five-joint xArm 5 cannot do this. UFACTORY's article does not name the 850, so this is Inferred24.

What Is Inside a Joint

  • The joints use harmonic drives and servomotors with 17-bit encoders. UFACTORY says they support 24/7 operation and ±0.02 mm repeatability; that is the maker's own claim25.
  • The joint modules also contain brakes that hold the pose when power is lost26.

From a Program to the Motors

This platform pieces the path together from UFACTORY's descriptions of each part, so it is Inferred27.

  1. A program or Studio on a computer sends a command over Ethernet to the control box27.
  2. The controller in the box works out the motion27.
  3. The box powers the arm at 48 V DC and sends the joints their commands over an RS-485 line27.
  4. The joints turn, and the tool moves274.

Sensing a Bump from Motor Current

  • For each joint, a dynamic model of the arm predicts the motor current it should draw. The controller compares that with the current it actually measures, and triggers when the difference passes a preset threshold28.
  • So this collision detection works from the motor current in each joint15.
  • It is still a controller feature, not a validated safeguard17.

Manual Mode Has a Number

Programs refer to hand teaching as mode 2. In it the arm compensates for gravity so its links can be moved by hand, and it should be switched back to mode 0 when teaching is done29.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s04-n-01 Which kind of move keeps the tool on a straight line?
  1. Check option (a)

    Correct. Right. A TCP move drives the tool along a Cartesian path, such as a line or an arc.22

  2. Check option (b)

    Not this one. A joint move goes point to point in joint space, from one set of joint angles to the next. The tool's path in between is not a straight line you chose.22

  3. Check option (c)

    Not this one. Manual mode is for guiding the arm by hand under gravity compensation. Straight-line paths come from a TCP move.2922

q-s04-n-02 How does the 850's built-in collision detection notice a bump?
  1. Check option (a)

    Correct. Right. When the difference passes a threshold, the controller reports a collision.1528

  2. Check option (b)

    Not this one. UFACTORY's collision detection works from motor current: it compares each joint's measured current with the current a dynamic model predicts.15

  3. Check option (c)

    Not this one. Collision detection does not rely on the encoders. It compares each joint's measured motor current with the current a dynamic model predicts.28

q-s04-n-03Safety You set collision sensitivity to 5, the highest level. Can you now work beside the running arm?

About:2

  1. Check option (a)

    Correct. Right. The UFACTORY sources do not call it safety-rated, and UFACTORY says no people should be in the working area while the arm operates.1618

  2. Check option (b)

    Not this one. It reacts to a difference in motor current, so it notices contact rather than preventing it, and it is not safety-rated. Keep out while the arm runs.151718

3Intermediate

Modes, States and What They Mean

For: Someone who will set up, program or maintain the arm: technician, student engineer
Kind of task: Apply: work through written scenarios that need a decision (which mode, which setting, what to do about this error), with feedback on each choice

In this part you learn to read the controller's modes and states, so you can tell why the arm is ignoring you, and you meet the maths that turns a tool pose into joint angles. It is for someone who will set up, program or maintain the arm.

Modes: How the Arm Takes Commands

The controller's modes and states match the Python SDK calls set_mode() and set_state()30.

  • Mode 0, position control. The controller enters it by default after start-up31.
  • Mode 1, servo mode. It runs only the latest target received, with no buffer32.
  • Mode 2, manual mode, for teaching by hand. Switch back to mode 0 when you are done29.
  • Mode 4, joint velocity control: each joint gets a speed33.
  • Mode 5, Cartesian velocity control: the TCP gets a velocity34.
  • Velocity commands take a duration: a positive value stops the motion after that many seconds, and 0 keeps the speed until it is changed35.
  • Mode 6, joint online trajectory planning: each new command interrupts the current motion and is re-planned from where the arm is36.
  • Mode 7, Cartesian online trajectory planning, which uses only the base coordinate system37.

States: What the Arm Is Doing Now

  • State 0 is what you set to put the arm in standby and clear the error code. The reported state then changes to 2 on its own38.
  • State 1 means the robot is moving39.
  • State 2 is ready to receive and execute commands, in the Studio manual's words40. The Python SDK calls the same state "sleeping", so the sources disagree on its name41.
  • State 3 pauses a running motion; setting state 0 resumes it42.
  • State 4 stops the arm at once, and it then accepts no new commands until the state is set back to 0. The controller also goes to state 4 on its own when any error occurs43.
  • State 5 comes on its own after a critical setting changes, such as the mode, the payload, the TCP offset or the collision sensitivity. The arm accepts no commands until state 0 is set44.
  • State 6 makes the arm perform a decelerated stop at once45.

From a Tool Pose to Joint Angles

  • For a straight-line or circular move, the controller must solve inverse kinematics: it turns the tool pose you asked for into joint angles. A solution may not exist, may not be unique, or may only be approximate46.
  • UFACTORY describes the tool's orientation as roll, pitch and yaw: rotations about the fixed X, Y and Z axes of the base frame47.
  • Units depend on the interface. The Python SDK and Blockly use degrees for joint angles and for roll, pitch and yaw; the raw protocol uses radians. Positions are in millimeters in all three48.

False Bumps from a Wrong Payload

  • Collision detection can trigger falsely if the payload mass or center of mass is set wrongly49.
  • In pick-and-place programs, UFACTORY's support article says the payload is typically set before the pick command and reset after the place command49.
  • Changing the payload is itself a critical setting, so the arm then waits in state 5 until you set state 044.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s04-i-01 You changed the TCP payload and now the arm ignores your commands. Why?
  1. Check option (a)

    Correct. Right. Changing a critical setting such as the payload puts the arm in state 5, and it accepts no commands until state 0 is set.44

  2. Check option (b)

    Not this one. State 1 means the robot is in motion. A payload change puts it in state 5, which waits for state 0.3944

  3. Check option (c)

    Not this one. A wrong payload can cause false collision triggers, but that is not what happened here. Any payload change puts the arm in state 5 until state 0 is set.4944

q-s04-i-02 Which mode do you use for hand teaching, and which mode must you be in first?
  1. Check option (a)

    Correct. Right. Mode 2 can only be entered from mode 0; from any other mode, the first request switches to mode 0 and a second one enters mode 2.2950

  2. Check option (b)

    Not this one. Mode 1 is servo mode, which runs only the latest target. Hand teaching is mode 2, entered from mode 0.322950

  3. Check option (c)

    Not this one. Mode 3, Cartesian teaching, is marked invalid in the Python SDK. Hand teaching is mode 2.5129

q-s04-i-03Safety A pick-and-place program keeps raising false collisions. A colleague suggests setting collision sensitivity to 0. What do you do instead?

About:2

  1. Check option (a)

    Correct. Right. A wrongly set payload mass or center of mass is a known cause of false triggers, and this is UFACTORY's usual pattern.49

  2. Check option (b)

    Not this one. Level 0 disables collision detection altogether. Fix the cause, which is often a wrongly set payload.249

4Expert

Kinematics and Its Limits

For: Someone who designs, integrates or changes the cell: integrator, engineer, agent developer
Kind of task: Analyze and decide: weigh trade-offs, resolve contradictions, critique a configuration

In this part you work with the arm's kinematics directly, see where Cartesian control breaks down, and learn how fast the controller can be fed commands. It is for someone who designs, integrates or changes the cell.

Forward and Inverse

  • Forward kinematics runs from joints to tool: given the six joint angles and the arm's geometry, there is exactly one resulting TCP pose. This rests on a vendor's general definition rather than on UFACTORY, so it is Inferred52.
  • Inverse kinematics runs the other way, from a tool pose to joint angles, and its answer may not exist, may not be unique, or may be approximate46.
  • UFACTORY publishes both modified and standard Denavit-Hartenberg (D-H) parameters, and link mass parameters, so you can model the arm's kinematics and dynamics yourself53.
  • Section 3's expert tier lists the link lengths; for example, the upper arm, a2, is 390 mm54.

Where Cartesian Control Breaks Down

  • Near a singularity, the arm cannot carry out a planned straight-line or circular move; it stops instead. UFACTORY advises avoiding the central area near the base55.
  • In Cartesian moves, the joints can exceed their maximum speed and acceleration, because joint space and Cartesian space are related non-linearly56.
  • Error 24 means speed is over its limit57. This platform infers that a Cartesian move asking a joint for more than its maximum is one likely cause; the UFACTORY sources do not link the two58.

Feeding Servo Mode

  • In servo mode the controller accepts commands at up to 250 Hz. Commands sent faster are lost3.
  • UFACTORY suggests sending smoothed, interpolated track points at a fixed rate, preferably 100 Hz or 200 Hz, and a rate within 30-250 Hz for Cartesian servo3.
  • Remember that servo mode runs only the latest target it receives, with no buffer32.

Reading Mode and State from Outside

  • In UFACTORY's Modbus TCP map, holding register 32 (0x20) is the robot mode and holding register 33 (0x21) is the robot state59.
  • That manual names no robot model. It is Inferred that the 850 behaves the same, until an 850 document or the controller at S2 shows it59.
  • Mode 3, Cartesian teaching, is marked invalid in the Python SDK, so do not plan on it51.

Check Yourself

Answer, then check. Each option has its own feedback, and nothing is scored.

q-s04-e-01 A straight-line move that passes near the base stops dead. Why, and what do you change?
  1. Check option (a)

    Correct. Right. Near a singularity the arm cannot carry out a planned Cartesian move and stops instead.55

  2. Check option (b)

    Not this one. Stopping on a Cartesian path near the base is the documented singularity behavior. UFACTORY advises avoiding the central area near the base.55

  3. Check option (c)

    Not this one. Commands sent too fast in servo mode are lost, which is a different problem. A dead stop on a straight line near the base points to a singularity.355

q-s04-e-02 A Cartesian move raises error 24. Explain.

About:57

  1. Check option (a)

    Correct. Right, as this platform infers it. Error 24 means speed over its limit, and in Cartesian moves a modest tool speed can still ask a joint for more than it is allowed.575658

  2. Check option (b)

    Not this one. That is error 23. Error 24 means speed is over its limit.57

  3. Check option (c)

    Not this one. Self-collision is error 22. Error 24 means speed is over its limit.57

q-s04-e-03Safety You plan a fast straight-line move that passes close to the base, near where a person might stand. Which of these hold? Choose all that apply.
  1. Check option (a)

    This one applies. Yes. UFACTORY advises keeping Cartesian moves away from the central area near the base.55

  2. Check option (b)

    This one applies. Yes. Joint and Cartesian space are related non-linearly, so joints can exceed their speed and acceleration limits.56

  3. Check option (c)

    This one does not apply. Collision detection is not a validated safeguard, and UFACTORY says no people should be in the working area while the arm operates.1718

Not settled

Open Questions · 2

What the sources do not settle for this section. Nothing here is papered over with a plausible number.

  • Kind: Contradiction

    The Python SDK and the Studio manual name state 2 differently: the SDK's get_state and state documentation call it 'sleeping', while the Studio manual calls it ready to receive and execute commands.

    See reference 41
  • Kind: Gap

    Per-joint component data for the 850 (motor model and rating, harmonic-drive ratio, encoder type and whether it is single- or multi-turn absolute, and joint-module sizes for J1–J6) is not published in the product page, the manuals or the URDF fetched.

    See reference 66
Provenance

References · 66

Each number in the text points here. Every entry states its confidence class in words and keeps its evidence one click away. How to read the labels.

Key to the badges
Confidence: Verified
A manufacturer or IntelliMake document says so, the project owner stated it as the design, or it was observed directly. It does not mean anyone measured it at S2.
Confidence: Inferred
Reasoned from Verified facts. The reasoning is printed with the record.
Confidence: Assumed
Plausible but untested. The record says how it would be checked.
Kind: Gap
Not known. No figure or answer is given in its place.
Kind: Contradiction
Sources disagree. Both sides are shown, and the site does not pick one silently.
Kind: Recommendation
Project advice drawn from the records it cites. Not a fact about the machine and not a confidence class, so the filter never hides it.
Awaiting cell access
Awaiting cell access: could be confirmed or corrected once the physical S2 cell can be observed.
This project's simulation and agent design, not the physical cell
This project's simulation and agent design, not the physical cell.

Image Credits

  • A line drawing of the 850 arm with Joint 1 to Joint 6 labeled and a curved arrow at each joint showing its direction of rotation. © UFACTORY (Shenzhen UFACTORY Co., Ltd.). Source. Used with UFACTORY's written permission (2026-09-23), on the condition that each image links back to its source page.
  • 3D model: © 2018 UFACTORY Inc., BSD-3-Clause, from UFACTORY Inc. (xArm-Developer/xarm_ros2). License text · Source

Sources for This Section

  • Collision Detection in UFACTORY Robotic Arms: Current and Dynamic Model-based Feature (UFACTORY support article) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 4 records here · Open the source
  • IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org (IntelliMake)
    © IntelliMake.org. Used with permission; redrawn for this platform. · Cleared for use by its owner · retrieved 2026-09-21 · cited by 2 records here · Project copy; not published on this site.
  • Kinematic and Dynamic Parameters of UFACTORY 850 (support article) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • Owner statements from 2026-09-24 onward (verbatim; S40 and later) · Derek Stringfellow (project owner)
    Derek Stringfellow, project record · Project-internal record · retrieved 2026-10-04 · cited by 1 record here · Project copy; not published on this site.
  • Robot Kinematics (Mech-Mind Software Suite manual 2.1.2, appendix) · Mech-Mind Robotics (secondary)
    © Mech-Mind Robotics · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • The difference between UFACTORY xArm5, UFACTORY xArm6 and UFACTORY xArm7 (Help Center article) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source Plain http: this publisher has no certificate for that name, so what loads cannot be verified.
  • UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 3 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • UFACTORY 850 Hardware Manual (online), Preface · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY 850 product page · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 5 records here · Open the source
  • UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 6 records here · Open the source
  • UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Release Note v2.7.0 · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 16 records here · Open the source
  • UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 8 records here · Open the source
  • UFACTORY Studio User Manual (online), 3. Connection · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-10-13 · cited by 2 records here · Open the source
  • UFACTORY Studio User Manual (online), 9. Motion Characteristics · UFACTORY (manufacturer)
    © UFACTORY · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 5 records here · Open the source
  • UFACTORY USA 850 product page · UFACTORY USA (manufacturer)
    © UFACTORY USA · All rights reserved; quoted briefly as evidence · retrieved 2026-09-21 · cited by 1 record here · Open the source
  • xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 2 records here · Open the source
  • xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xArm-Python-SDK, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 6 records here · Open the source
  • xarm_ros2 (branch humble), xarm_description/config/kinematics/default/uf850_default_kinematics.yaml · UFACTORY (manufacturer)
    © UFACTORY Inc., xArm-Developer/xarm_ros2, BSD 3-Clause License · BSD-3-Clause · retrieved 2026-09-21 · cited by 1 record here · Open the source

IntelliMake diagrams are redrawn as native figures, © IntelliMake.org. UFACTORY does not endorse this platform.

All sources and attribution