How ROS Takes Over an Industrial Robotic Arm
Industrial robotic arms have long been a familiar face in factories, and are almost indispensable especially in repetitive tasks such as welding, assembly, and transportation. However, traditional control systems are mostly closed architectures, making it difficult to expand or access new functions, and are not friendly to users with innovative needs. Embodied intelligence, which has become a hot topic in the robotics circle recently, proposes that intelligent agents should have the ability to integrate perception, decision-making and execution, and be able to flexibly adapt to the environment. Industrial robotic arms are the ideal carrier to realize this concept. In this regard, more and more developers will ROS(Robot Operating System) Introducing a robotic arm control system and leveraging its open architecture and modular design to build an intelligent system with sensing, planning and control capabilities.

This article will focus on the combination of "industrial robotic arm + ROS", from structural modeling, system access to path planning, to sort out the complete control process and core mechanism. Let you understand how the ROS system connects to and controls industrial robotic arms.
01 Robotic arm structure and software modeling
In the field of industrial automation, a robotic arm is composed of multiple joints and links. Each joint gives the robotic arm a certain degree of freedom of movement. These hardware components jointly determine the range of motion and flexibility of the robotic arm.

What is URDF
In the ROS system, we cannot directly use the physical structure of the real robotic arm, but need to describe its kinematic structure in digital form. This description method is URDF (Unified Robot Description Format). URDF uses XML format to define information such as joints, links, rotation axes, and motion limits of the robotic arm. Through URDF, ROS can correctly render the robotic arm model in visualization tools (such as Rviz), and provide an accurate basis for subsequent use of MoveIt for path planning and simulation control.
Taking a URDF configuration in the CR3 robot arm as an example, we can see how it describes the complete information of a joint.
<joint
name="joint1"
type="revolute">
<origin
xyz="0 0 0.1283"
rpy="0 0 0" />
<parent
link="base_link" />
<child
link="Link1" />
<axis
xyz="0 0 1" />
<limit
lower="-3.14"
upper="3.14"
effort="0"
velocity="0" />
</joint>
This URDF defines a file named joint1 Revolving joint (type="revolute"), its main parameters are as follows:
1. Installation location:
Specify the spatial position of the joint relative to base_link through < origin xyz=”0 0 0.1283” rpy=”0 0 0”>, which means that it is installed at z = 0.1283 meters with no deflection in the direction;
2. Connection relationship:
< parent link="base_link"> and < child link="Link1"> specify the two connected links, where base_link is the parent link and Link1 is the child link;
3. Definition of rotation axis:
<axis xyz=”0 0 1”> indicates that the joint rotates around the Z axis;
4. Exercise restrictions:
< limit lower=”-3.14″ upper=”3.14”> Limit the joint rotation angle to between -π and π, which means it can rotate a full circle (±180°);
<effort value=”0”> means that the maximum torque is not defined (setting to 0 usually means not to consider);
<velocity value=”0”> means the maximum speed is not specified (also set to 0 to mean default or ignored).
In short, URDF is the "digital bridge" connecting the robotic arm hardware and the ROS system. Subsequent developments such as MoveIt, controller plug-ins, etc. all rely on this model for function construction and instruction generation.
02 How ROS controls industrial robotic arms
In industrial systems, ROS does not directly control the motor. It is more like the brain of the robotic arm, responsible for task decision-making and path planning; while the actual execution of actions is completed by the control cabinet. The control cabinet itself has mature underlying functions, such as Motor drive, joint interpolation, status acquisition wait. Therefore, what we have to do is not to "replace" the control cabinet, but to connect ROS and the control cabinet through a network or bus protocol to establish a control structure with a clear division of labor.

If you wish to use MoveIt To control this robotic arm, the system needs to build a complete set of processes from path planning to execution control, which mainly includes the following links:
Driver docking
Establish communication between ROS and control cabinet This usually relies on brand driver packages, such as UR, Staubli, FANUC and other robotic arms, all of which have ROS interfaces provided by official or ROS-Industrial. The driver allows ROS to read the joint status and send trajectory instructions to the control cabinet.
structural modeling
Let ROS understand the robotic arm A complete model of the robotic arm needs to be provided, and a URDF file is usually used to describe the structure, connection relationship, rotation range, etc. of each joint and link. Some complex structures also need to be equipped with inverse kinematics plug-ins, such as UR's ur_kinematics.
Configure MoveIt
After preparing the model and communication interface, end control can be performed through MoveIt. It automatically completes inverse solution, obstacle avoidance, and trajectory interpolation based on the target pose, and outputs joint control instructions and sends them to the control cabinet for execution.
03 How does MoveIt complete path planning?
In the ROS system, MoveIt is the core module responsible for path planning, focusing on solving the problem of "how to move from the current position to the target position". Its operation relies on the structural model provided by URDF/SRDF. The entire process is as follows:

Build a kinematic model
When MoveIt starts, it first reads URDF (hardware information such as geometric size, mass, joint type, etc.) and SRDF (semantic information such as planning group, end effector, redundant joints, etc.), and builds a complete kinematics model in memory.
Inverse Kinematics (IK) Solver
When you give a target pose (end position + attitude), MoveIt must first convert it to the corresponding joint angle. Common IK plug-ins include KDL (universal), IKFast (generates table-driven code extremely fast), and Trac-IK (balances convergence and accuracy). Industrial robots can also call the manufacturer's own IK to keep the values consistent with the control cabinet.
Path search and optimization
Sampling type:
Default OMPL (RRT, PRM, etc.) to quickly find collision-free paths.
Optimization formula:
Connect to plug-ins such as CHOMP/STOMP to further smooth the trajectory.
Collision and constraint checking
Use FCL (or Bullet) throughout the entire process to detect external/self-collision, and check kinematic constraints such as joint limits, speeds, and postures to ensure that the path is executable and safe.
Time parameterization and command issuance
A JointTrajectory is generated and sent to the control cabinet via ros_control or the manufacturer's driver, where the underlying controller interpolates and drives the motor for execution.
As long as the model configuration is reasonable, MoveIt can complete a complete set of action planning processes from goal setting to path generation.
This method of handing over high-level control to ROS and handing over low-level execution to the control cabinet not only retains the original stability and safety mechanism of the industrial robotic arm, but also makes the system more scalable. Developers can easily access vision, force sense, deep learning and other modules to give the robotic arm more intelligent functions without having to delve into the underlying control logic.
