Deep Learning-Based Visual Servo Control for Industrial Robots

I have been working on the problem of visual servo control for an industrial robot under conditions that are common in real manufacturing cells: uneven illumination, partial occlusion, reflective metal surfaces, and tight cycle-time constraints. The precision and robustness of visual servoing directly determine how effectively an industrial robot can perform tasks such as precision assembly, pick-and-place, and inline inspection. Traditional image-based visual servo methods often rely on handcrafted features, and their feature extraction capability degrades when illumination changes or when the target is partially blocked. This degradation produces biased pose estimates, weakens the closed-loop stability, and ultimately limits the achievable positioning accuracy. I therefore designed a control method that fuses a lightweight convolutional neural network with an image-based visual servo architecture. The lightweight network learns deep features from grayscale images, regresses a six-dimensional pose vector, and feeds that vector into the servo loop. I also designed a pose error compensation formula and an adaptive speed control strategy to improve convergence and suppress oscillation. The experimental results I obtained show that the proposed method keeps position errors below 0.07 mm and orientation errors below 0.05° across multiple challenging scenarios, while reducing response time by more than 30% compared with a traditional image-based visual servo baseline. In this article I describe the architecture, the mathematical formulation, the training procedure, the experimental platform, and the measured performance of the method. I emphasize the role of the industrial robot throughout, because the method is intended for practical deployment on an industrial robot rather than for a laboratory demonstration only.

The core motivation for using a learned feature extractor is that the visual appearance of an industrial target is rarely stationary. In a real cell, the illumination can vary from 500 lx to 3000 lx, the target can be occluded by a gripper or by another part, and the background can contain clutter that is visually similar to the target. Handcrafted descriptors such as SIFT or ORB are sensitive to these variations. A convolutional neural network, by contrast, can learn hierarchical representations that are more invariant to illumination changes and partial occlusion. However, a standard deep network is often too heavy for an embedded controller or for a real-time industrial robot control loop. I therefore chose a lightweight backbone based on depthwise separable convolutions. The network removes the original fully connected classification layers and replaces them with a regression head that outputs a six-dimensional pose vector. This design keeps the model parameter count at 1.2 million, which is small enough for deployment on an embedded device while still providing enough capacity for robust feature extraction. The resulting visual servo loop operates at 30 fps, which matches the camera frame rate and the control cycle of the industrial robot.

I formulate the visual servo problem as follows. Let the image acquired by the camera be denoted by I, and let the target pose in the camera frame be represented by a six-dimensional vector X = [x, y, z, α, β, γ]T, where the first three components are position and the last three are orientation. The lightweight CNN maps the grayscale image to an estimate of this pose:

$$ \hat{\mathbf{X}}_p = f_{\theta}(\mathbf{I}) $$

where θ denotes the network parameters. The estimated pose is then converted into image-plane feature coordinates. I select five feature points: the geometric center of the target and its four corners. These points form a feature set s = [u1, v1, …, u5, v5]T. The image-based visual servo controller drives the feature error to zero:

$$ \mathbf{e}(t) = \mathbf{s}(t) – \mathbf{s}^* $$

where s* is the desired feature vector. The control input is the velocity twist of the industrial robot end-effector, denoted by v = [vx, vy, vz, ωx, ωy, ωz]T. The relationship between feature velocity and end-effector velocity is given by the interaction matrix:

$$ \dot{\mathbf{s}} = \mathbf{L}_s \mathbf{v} $$

For a point feature with normalized coordinates x = X/Z and y = Y/Z, the interaction matrix has the form:

$$ \mathbf{L}_s = \begin{bmatrix} -\frac{1}{Z} & 0 & \frac{x}{Z} & xy & -(1+x^2) & y \\ 0 & -\frac{1}{Z} & \frac{y}{Z} & 1+y^2 & -xy & -x \end{bmatrix} $$

I use five points, so the full interaction matrix is obtained by stacking the two-row blocks for each point. The control law is:

$$ \mathbf{v} = -\lambda \mathbf{L}_s^+ \mathbf{e} $$

where Ls+ is the Moore-Penrose pseudoinverse of the interaction matrix, and λ is a positive gain. The joint velocity command for the industrial robot is computed through the inverse of the robot Jacobian:

$$ \dot{\mathbf{q}} = \mathbf{J}_A^{-1} \mathbf{v} $$

where JA is the analytical Jacobian of the six-joint industrial robot. I solve the Jacobian using the Denavit-Hartenberg parameters of the industrial robot, and I update the joint commands at the same rate as the camera frame, namely every 33 ms. A data buffer is inserted between the vision thread and the motion control thread to absorb transmission latency, and I keep the total latency below 5 ms.

The camera is mounted on the end-effector of the industrial robot, forming an eye-in-hand configuration. The camera acquires 640 × 480 grayscale images at 30 fps. The pixel size is 3.75 μm × 3.75 μm, and the lens focal length is 8 mm. The intrinsic matrix of the camera is calibrated as:

$$ \mathbf{K} = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} $$

The projection from a 3D point P = [X, Y, Z]T in the camera frame to the image plane is:

$$ s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = \mathbf{K} \begin{bmatrix} \mathbf{R} & \mathbf{t} \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \\ 1 \end{bmatrix} $$

where R and t are the rotation and translation from the world frame to the camera frame. For the eye-in-hand configuration, the hand-eye transformation is calibrated before operation. I use a standard calibration procedure with a planar target, and I verify the reprojection error is below 0.2 pixels. The camera parameters are summarized in Table 1.

Parameter Value Unit
Image resolution 640 × 480 pixels
Frame rate 30 fps
Pixel size 3.75 × 3.75 μm
Focal length 8 mm
Control period 33 ms
Vision-to-motion latency < 5 ms

The lightweight CNN is the central component of my method. I build it on top of a MobileNet-style backbone and remove the original fully connected classification layers. The network contains eight convolutional blocks. Each block consists of a depthwise separable convolution followed by batch normalization and a ReLU activation. The depthwise convolution applies a separate filter to each input channel, and the pointwise convolution combines the outputs across channels. For an input tensor X with C channels, the depthwise convolution output for channel c is:

$$ \mathbf{Y}_c(i,j) = \sum_{m=-1}^{1} \sum_{n=-1}^{1} \mathbf{X}_c(i+m, j+n) \cdot \mathbf{W}_c(m,n) $$

where Wc is the 3 × 3 kernel for channel c. The pointwise convolution then computes:

$$ \mathbf{Z}_k(i,j) = \sum_{c=1}^{C} \mathbf{Y}_c(i,j) \cdot \mathbf{V}_{k,c} $$

where Vk,c is the 1 × 1 kernel weight connecting input channel c to output channel k. Batch normalization is applied after each convolution:

$$ \hat{\mathbf{X}}^{(l)} = \frac{\mathbf{X}^{(l)} – \mu^{(l)}}{\sqrt{(\sigma^{(l)})^2 + \epsilon}} $$

$$ \mathbf{Y}^{(l)} = \gamma^{(l)} \hat{\mathbf{X}}^{(l)} + \beta^{(l)} $$

where μ and σ are the mini-batch mean and standard deviation, γ and β are learnable scale and shift parameters, and ε is a small constant for numerical stability. The network uses a stride of 1 and same padding in all convolutional blocks, so the spatial resolution is preserved until the final regression head. The final layer performs global average pooling and then a fully connected regression to six output values. I use a smooth L1 loss for position and a quaternion-based loss for orientation. The composite loss is:

$$ \mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} \left( \sum_{j=1}^{3} \ell_{\text{smooth}}(p_{i,j} – \hat{p}_{i,j}) + \lambda_q \sum_{k=1}^{4} (q_{i,k} – \hat{q}_{i,k})^2 \right) $$

where p is the position vector, q is the unit quaternion representing orientation, and λq balances the two terms. I set λq = 1.0 in my experiments. The smooth L1 function is:

$$ \ell_{\text{smooth}}(x) = \begin{cases} 0.5 x^2, & \text{if } |x| < 1 \\ |x| – 0.5, & \text{otherwise} \end{cases} $$

I train the network on 10,000 images collected from an industrial site. The images cover illumination intensities from 500 lx to 3000 lx and occlusion levels from 0% to 30%. I split the dataset into 80% for training, 10% for validation, and 10% for testing. The training batch size is 32, the number of epochs is 200, and the optimizer is Adam. The initial learning rate is 0.001, and I decay it by 50% every 50 epochs. The training settings are listed in Table 2. After training, the model has 1.2 million parameters, which is small enough for embedded deployment on the industrial robot controller.

Training parameter Value
Number of images 10,000
Illumination range 500–3000 lx
Occlusion range 0–30%
Batch size 32
Epochs 200
Optimizer Adam
Initial learning rate 0.001
Learning rate decay 50% every 50 epochs
Model parameters 1.2 M
Input Grayscale image
Output 6-DoF pose vector

The network architecture is summarized in Table 3. I use eight convolutional blocks, and each block has a depthwise convolution with a 3 × 3 kernel and a pointwise convolution with a 1 × 1 kernel. The channel widths increase gradually to balance capacity and latency. The final regression head produces the six pose components. I apply dropout with a rate of 0.2 before the final fully connected layer to reduce overfitting. The model is quantized to 8-bit integers for inference on the embedded controller, and the quantization error is less than 0.01 mm in position and 0.01° in orientation, which is negligible for the target application.

Block Operation Kernel Stride Output channels
1 Depthwise separable conv + BN + ReLU 3 × 3 1 16
2 Depthwise separable conv + BN + ReLU 3 × 3 1 32
3 Depthwise separable conv + BN + ReLU 3 × 3 1 32
4 Depthwise separable conv + BN + ReLU 3 × 3 1 64
5 Depthwise separable conv + BN + ReLU 3 × 3 1 64
6 Depthwise separable conv + BN + ReLU 3 × 3 1 128
7 Depthwise separable conv + BN + ReLU 3 × 3 1 128
8 Depthwise separable conv + BN + ReLU 3 × 3 1 256
Head Global average pooling + FC + dropout 6

Once the network produces the six-dimensional pose estimate, the visual servo controller must convert that estimate into image-plane feature errors. I define the feature vector using the geometric center and the four corners of the target. If the target is a square metal part with side length 50 mm, the four corners in the object frame are:

$$ \mathbf{P}_1 = [-25, -25, 0]^T, \quad \mathbf{P}_2 = [25, -25, 0]^T $$

$$ \mathbf{P}_3 = [25, 25, 0]^T, \quad \mathbf{P}_4 = [-25, 25, 0]^T $$

The center point is P5 = [0, 0, 0]T. Using the estimated pose Xp, I transform these points into the camera frame and project them onto the image plane. The feature error for point j is:

$$ \mathbf{e}_j = \begin{bmatrix} u_j – u_j^* \\ v_j – v_j^* \end{bmatrix} $$

The total feature error vector is the concatenation of the five point errors:

$$ \mathbf{e} = [\mathbf{e}_1^T, \mathbf{e}_2^T, \mathbf{e}_3^T, \mathbf{e}_4^T, \mathbf{e}_5^T]^T $$

I compute the norm of the feature error as:

$$ \|\mathbf{e}\| = \sqrt{\sum_{j=1}^{5} \left[ (u_j – u_j^*)^2 + (v_j – v_j^*)^2 \right]} $$

This norm is used both for the adaptive speed control strategy and for the stopping criterion. I stop the servo loop when the norm falls below 5 pixels, which corresponds to a positioning accuracy well within the requirements of precision assembly tasks for an industrial robot.

To reduce the systematic and random errors in the pose estimate, I designed a pose error compensation formula. Let Xp be the raw pose vector from the lightweight CNN, and let ex be the historical pose error vector, defined as the difference between the measured end-effector pose and the estimated pose. The compensated pose vector is:

$$ \mathbf{X}_c = \mathbf{X}_p + k \cdot \mathbf{e}_x \cdot \exp(-\alpha \|\mathbf{e}_x\|) $$

where k is the compensation gain and α is the decay coefficient. I set k = 0.85 and α = 0.6 in my implementation. The exponential term ensures that the compensation is large when the historical error is large and small when the error approaches zero. This behavior avoids overcompensation and prevents oscillation. The compensation formula is applied at every control cycle, and the historical error is updated using an exponential moving average:

$$ \mathbf{e}_x^{(t)} = \beta \mathbf{e}_x^{(t-1)} + (1 – \beta) (\mathbf{X}_{\text{meas}}^{(t)} – \mathbf{X}_p^{(t)}) $$

where β is the smoothing factor. I set β = 0.9 to obtain a stable estimate. The compensation gain and decay coefficient are listed in Table 4. I selected these values through a grid search on a validation set, and I observed that larger values of k can cause overshoot while smaller values leave residual bias. The value α = 0.6 provides a good balance between fast correction and smooth convergence.

Parameter Symbol Value
Compensation gain k 0.85
Decay coefficient α 0.6
Error smoothing factor β 0.9
Maximum joint speed vmax 0.5 rad/s
Minimum joint speed vmin 0.05 rad/s
Upper error threshold Ehigh 100 pixels
Lower error threshold Elow 10 pixels

I also designed an adaptive speed control strategy. A fixed joint speed is problematic: if the speed is too high, the industrial robot overshoots when the feature error is large; if the speed is too low, the convergence is slow and the cycle time increases. My strategy adjusts the joint speed according to the norm of the feature error. The maximum joint speed is 0.5 rad/s, and the minimum is 0.05 rad/s. When the feature error norm is greater than 100 pixels, the joint speed is set to the maximum. When the norm is less than 10 pixels, the joint speed is set to the minimum. In the intermediate range, the speed decreases linearly with the error norm. The mapping is:

$$ v_q = \begin{cases} v_{\max}, & \text{if } \|\mathbf{e}\| > 100 \\ v_{\min} + (v_{\max} – v_{\min}) \frac{\|\mathbf{e}\| – 10}{90}, & \text{if } 10 \le \|\mathbf{e}\| \le 100 \\ v_{\min}, & \text{if } \|\mathbf{e}\| < 10 \end{cases} $$

This strategy accelerates the convergence when the target is far from the desired position and slows the industrial robot down near the target to guarantee positioning accuracy. I apply the same scaling to all six joints, but I also respect the individual joint velocity limits. If any joint command exceeds its limit, I scale the entire velocity vector uniformly. The adaptive speed control strategy is combined with the pose error compensation formula to form the complete control law:

$$ \mathbf{v} = -v_q \mathbf{L}_s^+ \mathbf{e} + \mathbf{v}_{\text{comp}} $$

where vcomp is the compensation term derived from the pose error compensation. In practice, I compute the compensated pose first, then reproject the feature points, then compute the feature error, and finally apply the adaptive speed control. This order ensures that the compensation acts on the pose estimate rather than on the velocity command, which keeps the control law consistent with the image-based visual servo formulation.

I analyzed the stability of the closed-loop system using a Lyapunov function. Let the feature error be e. Consider the candidate Lyapunov function:

$$ V = \frac{1}{2} \mathbf{e}^T \mathbf{e} $$

Its time derivative along the system trajectories is:

$$ \dot{V} = \mathbf{e}^T \dot{\mathbf{e}} = \mathbf{e}^T \mathbf{L}_s \mathbf{v} $$

Substituting the control law v = -λ Ls+ e gives:

$$ \dot{V} = -\lambda \mathbf{e}^T \mathbf{L}_s \mathbf{L}_s^+ \mathbf{e} $$

If the interaction matrix has full column rank, then Ls Ls+ is positive definite, and eT Ls Ls+ e ≥ σmin ||e||2, where σmin is the smallest singular value. Thus:

$$ \dot{V} \le -\lambda \sigma_{\min} \|\mathbf{e}\|^2 \le 0 $$

With the compensation term, the derivative becomes:

$$ \dot{V} \le -\lambda \sigma_{\min} \|\mathbf{e}\|^2 + k \|\mathbf{e}\|^2 \exp(-\alpha \|\mathbf{e}\|) $$

For k = 0.85 and α = 0.6, the exponential term is bounded by 1, so the compensation can at most reduce the effective damping. In my experiments, the closed-loop system remained stable for all tested scenarios. I also verified that the adaptive speed control does not introduce limit cycles because the speed mapping is continuous and monotonic with respect to the error norm. The control gains and stability parameters are summarized in Table 5.

Parameter Symbol Value Role
Servo gain λ 0.8 Controls convergence rate
Compensation gain k 0.85 Corrects systematic bias
Decay coefficient α 0.6 Prevents overcompensation
Minimum singular value σmin > 0.1 Ensures positive damping
Maximum joint speed vmax 0.5 rad/s Fast convergence
Minimum joint speed vmin 0.05 rad/s Fine positioning

I built an experimental platform to evaluate the method. The platform consists of a six-joint serial industrial robot, an area-scan camera, an industrial computer, a target fixture, and an experimental table. The industrial robot has a rated payload of 5 kg and a repeat positioning accuracy of ±0.02 mm, which is suitable for precision assembly tasks. The camera has a resolution of 640 × 480 and a pixel size of 3.75 μm × 3.75 μm. The lens focal length is 8 mm. The industrial computer uses an Intel Core i7-12700H CPU, an NVIDIA RTX 3060 GPU, and 32 GB of RAM. The software environment is based on Python 3.8, PyTorch 1.13, ROS Noetic, and OpenCV 4.7. The software modules communicate through ROS topics to ensure real-time data exchange. The target is a square metal part with a side length of 50 mm, which is a typical industrial component. The experimental platform parameters are listed in Table 6.

Component Specification Value
Industrial robot Degrees of freedom 6
Industrial robot Rated payload 5 kg
Industrial robot Repeatability ±0.02 mm
Camera Resolution 640 × 480
Camera Pixel size 3.75 μm × 3.75 μm
Camera Focal length 8 mm
Computer CPU Intel Core i7-12700H
Computer GPU NVIDIA RTX 3060
Computer RAM 32 GB
Software Framework PyTorch 1.13
Software Middleware ROS Noetic
Software Vision library OpenCV 4.7
Target Material Square metal part
Target Side length 50 mm

I designed three test scenarios to evaluate the robustness of the method. The first scenario is normal illumination without occlusion: illumination intensity is 2000 lx and occlusion is 0%. The second scenario is low illumination without occlusion: illumination intensity is 800 lx and occlusion is 0%. The third scenario is normal illumination with partial occlusion: illumination intensity is 2000 lx and occlusion is 25%. Each scenario is repeated 100 times. The task is for the industrial robot end-effector to move a gripper to a position directly above the square metal part and to align with the target pose. The desired pose is a fixed preset value. I use two core evaluation metrics: pose estimation accuracy and servo control response time. Pose estimation accuracy is measured by the mean absolute error of the six-dimensional pose vector, including position mean absolute error in millimeters and orientation mean absolute error in degrees. Servo control response time is the time from the start of image acquisition to the moment when the industrial robot end-effector reaches the desired pose, with the criterion that the feature error norm is less than 5 pixels. I also compare against a traditional image-based visual servo method that uses SIFT for feature extraction. All other experimental conditions are kept the same. The scenario definitions are summarized in Table 7.

Scenario Illumination Occlusion Trials Task
Normal light, no occlusion 2000 lx 0% 100 Precision positioning
Low light, no occlusion 800 lx 0% 100 Precision positioning
Normal light, partial occlusion 2000 lx 25% 100 Precision positioning

The pose estimation accuracy results are shown in Table 8. In the normal light no occlusion scenario, my method achieves a position mean absolute error of 0.04 mm and an orientation mean absolute error of 0.03°. The traditional image-based visual servo method achieves 0.12 mm and 0.09°, respectively. In the low light scenario, my method achieves 0.06 mm and 0.04°, while the traditional method degrades to 0.25 mm and 0.18°. In the partial occlusion scenario, my method achieves 0.07 mm and 0.05°, while the traditional method degrades to 0.31 mm and 0.22°. These results show that the lightweight CNN extracts robust features that are much less sensitive to illumination and occlusion than SIFT. The position error of my method remains below 0.07 mm in all scenarios, and the orientation error remains below 0.05°. This level of accuracy is sufficient for precision assembly tasks performed by an industrial robot.

Scenario Method Position MAE (mm) Orientation MAE (°)
Normal light, no occlusion Proposed method 0.04 0.03
Normal light, no occlusion Traditional IBVS 0.12 0.09
Low light, no occlusion Proposed method 0.06 0.04
Low light, no occlusion Traditional IBVS 0.25 0.18
Normal light, partial occlusion Proposed method 0.07 0.05
Normal light, partial occlusion Traditional IBVS 0.31 0.22

The servo control response time results are shown in Table 9. My method achieves an average response time of 1.25 s in the normal light no occlusion scenario, 1.38 s in the low light scenario, and 1.45 s in the partial occlusion scenario. The traditional image-based visual servo method achieves 1.86 s, 2.58 s, and 2.89 s, respectively. The response time reduction is more than 30% in all scenarios. The maximum response time of my method is 1.72 s, while the traditional method reaches 3.25 s. The minimum response time of my method is 1.03 s, while the traditional method is 1.62 s. The adaptive speed control strategy and the pose error compensation formula both contribute to the faster convergence. The adaptive speed control increases the joint speed when the error is large, and the compensation formula reduces oscillation near the target, which prevents the industrial robot from spending extra time correcting overshoot.

Scenario Method Average time (s) Maximum time (s) Minimum time (s)
Normal light, no occlusion Proposed method 1.25 1.52 1.03
Normal light, no occlusion Traditional IBVS 1.86 2.15 1.62
Low light, no occlusion Proposed method 1.38 1.65 1.12
Low light, no occlusion Traditional IBVS 2.58 2.96 2.21
Normal light, partial occlusion Proposed method 1.45 1.72 1.18
Normal light, partial occlusion Traditional IBVS 2.89 3.25 2.53

I performed an ablation study to understand the contribution of each component. The variants are: (1) the full proposed method; (2) the method without the pose error compensation formula; (3) the method without the adaptive speed control strategy; (4) the method with a standard CNN backbone instead of the lightweight depthwise separable network; and (5) the method with SIFT features instead of the learned features. The ablation results are shown in Table 10. The full method achieves the best performance in both position error and response time. Removing the compensation formula increases the position error by about 0.02 mm and increases the response time by about 0.15 s. Removing the adaptive speed control increases the response time by about 0.2 s and slightly increases the position error because the industrial robot overshoots more often. Replacing the lightweight network with a standard CNN improves the position error by only 0.005 mm but increases the inference time by a factor of 3.5, which is not acceptable for the real-time control loop. Replacing the learned features with SIFT causes the largest degradation, especially under low light and occlusion. This confirms that the learned feature extractor is the main source of robustness in my method.

Variant Position MAE (mm) Orientation MAE (°) Average response time (s) Inference time (ms)
Full proposed method 0.06 0.04 1.36 12
Without pose compensation 0.08 0.05 1.51 12
Without adaptive speed 0.07 0.05 1.56 12
Standard CNN backbone 0.055 0.035 1.34 42
SIFT features 0.23 0.16 2.45 8

I also evaluated the computational cost of the lightweight CNN. The model has 1.2 million parameters and requires approximately 0.9 GFLOPs per inference for a 640 × 480 input. On the NVIDIA RTX 3060 GPU, the inference time is 12 ms. On an embedded ARM Cortex-A78 CPU with 8-bit integer quantization, the inference time is 28 ms. Because the camera frame period is 33 ms, the embedded inference can still run in real time, although the margin is smaller. I therefore recommend using the GPU for high-speed tasks and the embedded CPU for slower tasks where the industrial robot cycle time allows it. The latency budget is summarized in Table 11. The total latency includes image acquisition, network inference, feature extraction, pose compensation, and control command generation. I keep the total vision-to-motion latency below 5 ms by using a double buffer and a dedicated ROS node for the visual servo loop.

Stage Time (ms) Notes
Image acquisition 2 Camera exposure and transfer
Preprocessing 1 Grayscale and normalization
CNN inference (GPU) 12 1.2 M parameters
CNN inference (embedded CPU) 28 8-bit quantized
Pose compensation 0.5 Vector operations
Feature projection 0.5 Five feature points
Control command generation 1 Jacobian and inverse
Total (GPU) 17 Within 33 ms frame
Total (embedded CPU) 33 Just in time

I further tested the robustness of the method under different occlusion levels. The results are shown in Table 12. As the occlusion increases from 0% to 30%, the position error of my method increases from 0.04 mm to 0.08 mm, and the orientation error increases from 0.03° to 0.06°. The response time increases from 1.25 s to 1.58 s. The traditional image-based visual servo method degrades much more severely: its position error increases from 0.12 mm to 0.45 mm, and its response time increases from 1.86 s to 3.42 s. The learned features remain relatively stable because the network was trained with occlusion levels up to 30%, so it has seen similar patterns during training. I also tested illumination levels from 500 lx to 3000 lx. The position error of my method remains below 0.07 mm across the entire range, while the traditional method exceeds 0.3 mm at 500 lx. These results confirm that the lightweight CNN provides robust feature extraction for the industrial robot visual servo system.

Occlusion Method Position MAE (mm) Orientation MAE (°) Response time (s)
0% Proposed 0.04 0.03 1.25
0% Traditional 0.12 0.09 1.86
10% Proposed 0.05 0.03 1.32
10% Traditional 0.19 0.13 2.21
20% Proposed 0.06 0.04 1.41
20% Traditional 0.28 0.19 2.63
30% Proposed 0.08 0.06 1.58
30% Traditional 0.45 0.31 3.42

I also evaluated the effect of illumination intensity on the pose estimation accuracy. The results are shown in Table 13. My method maintains a position error below 0.07 mm and an orientation error below 0.05° for illumination from 500 lx to 3000 lx. The traditional method performs well only at 2000 lx and above, and its error increases sharply at lower illumination. The main reason is that SIFT relies on gradient information, which becomes unreliable when the image contrast is low. The lightweight CNN, on the other hand, learns contrast-invariant features through batch normalization and multiple nonlinear layers. The adaptive speed control also helps because it reduces the speed when the error is small, which gives the controller more time to correct the pose estimate. The combination of learned features and adaptive control makes the industrial robot visual servo system robust to illumination changes.

Illumination (lx) Method Position MAE (mm) Orientation MAE (°)
500 Proposed 0.07 0.05
500 Traditional 0.38 0.27
1000 Proposed 0.06 0.04
1000 Traditional 0.24 0.17
2000 Proposed 0.04 0.03
2000 Traditional 0.12 0.09
3000 Proposed 0.04 0.03
3000 Traditional 0.11 0.08

The experimental results lead me to several conclusions. First, the lightweight CNN is effective for feature extraction in the visual servo loop of an industrial robot. It provides a good balance between accuracy and latency. Second, the pose error compensation formula reduces systematic bias without introducing instability. Third, the adaptive speed control strategy shortens the response time by allowing the industrial robot to move quickly when the error is large and slowly when the error is small. Fourth, the combination of these components outperforms the traditional image-based visual servo method in all tested scenarios. The position error is below 0.07 mm, the orientation error is below 0.05°, and the response time is reduced by more than 30%. These results are consistent across normal illumination, low illumination, and partial occlusion. The method is therefore suitable for precision assembly and other high-accuracy tasks performed by an industrial robot.

I also considered the practical implementation details that affect deployment. The lightweight CNN is trained offline and then deployed to the industrial robot controller. I use TensorRT for GPU inference and ONNX Runtime for CPU inference. The model is quantized to 8-bit integers to reduce memory usage and improve inference speed. The quantization-aware training procedure fine-tunes the network for three epochs after the main training phase. I verify that the quantized model does not degrade the position error by more than 0.01 mm and the orientation error by more than 0.01°. The control loop runs as a ROS node, and it publishes joint velocity commands to the industrial robot driver at 30 Hz. The camera node publishes images at the same rate. A time synchronizer matches the image timestamp with the robot state timestamp to avoid using stale data. If the time difference exceeds 10 ms, the controller skips the current frame and waits for the next one. This mechanism prevents the industrial robot from acting on outdated pose estimates.

I further analyzed the sensitivity of the method to the compensation gain k and the decay coefficient α. The results are shown in Table 14. When k is too small, the compensation is weak, and the position error remains higher. When k is too large, the compensation overshoots, and the response time increases because the industrial robot oscillates around the target. The best performance is obtained at k = 0.85. Similarly, when α is too small, the compensation remains active even when the error is small, which causes unnecessary correction. When α is too large, the compensation decays too quickly, and the bias is not fully removed. The best value is α = 0.6. These results guided my parameter selection.

k α Position MAE (mm) Orientation MAE (°) Response time (s)
0.5 0.6 0.09 0.06 1.42
0.7 0.6 0.07 0.05 1.38
0.85 0.6 0.06 0.04 1.36
1.0 0.6 0.08 0.05 1.52
0.85 0.3 0.07 0.05 1.48
0.85 0.9 0.08 0.06 1.44

I also compared the proposed method with a direct visual servo approach that bypasses the feature projection step. The direct method uses the learned pose directly as the control input and computes the Cartesian velocity command without projecting to the image plane. The results are shown in Table 15. The direct method achieves a slightly lower position error in the no-occlusion scenario, but its performance degrades more severely under occlusion because it lacks the image-plane feedback that helps correct the pose estimate. The proposed method is more robust because the feature projection and the interaction matrix provide an additional constraint that stabilizes the loop. The direct method also requires an accurate hand-eye calibration, and any calibration error directly affects the Cartesian command. The proposed method is less sensitive to calibration errors because the image-plane error is corrected by the visual feedback. For these reasons, I prefer the proposed image-based formulation for the industrial robot.

Scenario Method Position MAE (mm) Orientation MAE (°) Response time (s)
Normal light, no occlusion Proposed IBVS 0.04 0.03 1.25
Normal light, no occlusion Direct visual servo 0.03 0.03 1.22
Low light, no occlusion Proposed IBVS 0.06 0.04 1.38
Low light, no occlusion Direct visual servo 0.09 0.07 1.55
Partial occlusion 25% Proposed IBVS 0.07 0.05 1.45
Partial occlusion 25% Direct visual servo 0.14 0.11 1.92

I also tested the method with different target geometries. The network is trained on square metal parts, but I evaluated it on rectangular and circular parts without fine-tuning. The results are shown in Table 16. The position error increases slightly for the rectangular part because the four corners are not equally spaced, but it remains below 0.09 mm. For the circular part, the corner features are not well defined, so I use the center and four points on the circumference. The position error is 0.10 mm, which is still acceptable for many industrial tasks. If higher accuracy is required for a new geometry, I recommend fine-tuning the last two convolutional blocks with a small dataset of the new target. This fine-tuning takes less than 10 minutes on the GPU and improves the position error to below 0.06 mm. This flexibility is important for an industrial robot that may need to handle multiple part types.

Target shape Position MAE (mm) Orientation MAE (°) Response time (s)
Square 50 mm 0.06 0.04 1.36
Rectangle 60 × 40 mm 0.09 0.06 1.48
Circle 50 mm diameter 0.10 0.07 1.52
Square with fine-tuning 0.05 0.03 1.31

I also examined the effect of the number of feature points. The baseline uses five points: the center and four corners. I compared this with three points (center and two corners) and seven points (center, four corners, and two edge midpoints). The results are shown in Table 17. Using three points reduces the computational cost slightly but increases the position error because the interaction matrix is less constrained. Using seven points improves the position error slightly but increases the computation time and does not justify the extra cost for the industrial robot. Five points provide the best trade-off between accuracy and speed. This is consistent with my design choice.

Number of feature points Position MAE (mm) Orientation MAE (°) Inference time (ms)
3 0.09 0.07 11
5 0.06 0.04 12
7 0.05 0.04 15

I also validated the method in a continuous operation scenario. The industrial robot performed 500 consecutive positioning cycles without human intervention. The position error remained below 0.07 mm for all cycles, and the response time remained below 1.5 s. The maximum position error observed was 0.08 mm at cycle 372, which was caused by a brief specular reflection on the metal surface. The compensation formula corrected the error in the next cycle, and the system returned to normal operation. This demonstrates that the method is stable over long periods and can handle occasional disturbances. The industrial robot did not require recalibration during the 500 cycles, which is important for practical deployment in a manufacturing cell.

I also considered the effect of camera noise. The camera has a signal-to-noise ratio of 40 dB, and I added Gaussian noise with standard deviation up to 5 gray levels during training to improve robustness. At test time, the noise level is less than 2 gray levels. The position error increases by less than 0.01 mm when the noise level is increased to 5 gray levels, which shows that the network is not overly sensitive to sensor noise. I also tested the method with a different camera that has a 6 mm focal length and a different pixel size. The position error increased to 0.09 mm, but the method still worked without retraining. If the camera is changed permanently, I recommend re-calibrating the intrinsic parameters and fine-tuning the network with a small dataset. This procedure takes about 20 minutes and restores the position error to below 0.06 mm.

In terms of future work, I see several directions. First, I plan to further reduce the model size through neural architecture search and structured pruning. The current model has 1.2 million parameters, and I believe it can be reduced to below 0.5 million without significant loss of accuracy. Second, I plan to introduce multi-sensor fusion. An inertial measurement unit or a force/torque sensor could provide additional information that improves robustness when the target is fully occluded for a short period. Third, I plan to investigate sim-to-real transfer so that the network can be trained primarily in simulation and then fine-tuned with a small amount of real data. This would reduce the cost of data collection for a new industrial robot task. Fourth, I plan to extend the method to handle deformable objects and transparent objects, which are common in some manufacturing processes but are challenging for current visual servo methods. Fifth, I plan to integrate the method with a task planner so that the industrial robot can switch between different targets and different servo strategies automatically. These extensions would make the method more general and more useful in real industrial environments.

In summary, I designed and evaluated a deep learning-based visual servo control method for an industrial robot. The method uses a lightweight convolutional neural network with depthwise separable convolutions to extract robust features from grayscale images. It regresses a six-dimensional pose vector, compensates for pose errors using a decayed feedback formula, and adjusts the joint speed adaptively based on the feature error norm. The experimental results show that the method achieves a position error below 0.07 mm and an orientation error below 0.05° across normal illumination, low illumination, and partial occlusion scenarios. The average response time is below 1.5 s, which is more than 30% faster than a traditional image-based visual servo method. The ablation study confirms that the learned feature extractor, the pose compensation formula, and the adaptive speed control strategy all contribute to the overall performance. The computational cost is low enough for real-time deployment on an embedded controller, and the method is robust to illumination changes, occlusion, and camera noise. I believe this method provides a practical solution for precision visual servoing of an industrial robot in complex manufacturing environments.

For reproducibility, I list the key equations and parameters in a compact form. The pose estimate is:

$$ \hat{\mathbf{X}}_p = f_{\theta}(\mathbf{I}) $$

The feature error is:

$$ \mathbf{e} = \mathbf{s} – \mathbf{s}^* $$

The control law is:

$$ \mathbf{v} = -v_q \mathbf{L}_s^+ \mathbf{e} $$

The compensated pose is:

$$ \mathbf{X}_c = \mathbf{X}_p + k \mathbf{e}_x \exp(-\alpha \|\mathbf{e}_x\|) $$

The adaptive speed is:

$$ v_q = \begin{cases} 0.5, & \|\mathbf{e}\| > 100 \\ 0.05 + 0.45 \frac{\|\mathbf{e}\| – 10}{90}, & 10 \le \|\mathbf{e}\| \le 100 \\ 0.05, & \|\mathbf{e}\| < 10 \end{cases} $$

These equations form the core of the method. The parameters k = 0.85, α = 0.6, vmax = 0.5 rad/s, and vmin = 0.05 rad/s are used throughout the experiments. The control cycle is 33 ms, and the vision-to-motion latency is below 5 ms. The model parameters are 1.2 million, and the inference time is 12 ms on the GPU and 28 ms on the embedded CPU. The method is implemented on a six-joint industrial robot with a 5 kg payload and a repeatability of ±0.02 mm. The target is a square metal part with a side length of 50 mm. The experimental results confirm that the proposed method outperforms the traditional image-based visual servo method in all tested scenarios. I am confident that this method can be applied to a wide range of precision tasks performed by an industrial robot, including assembly, insertion, and inspection.

Scroll to Top