Overview
The ACE_FK_701189 is a high-performance hardware solver designed for the real-time execution of Forward Kinematics (FK) and Jacobian Velocity Projections for 6-Degree-of-Freedom (6-DOF) robotic manipulators.
The core provides a dedicated, silicon-optimized path for complex matrix chain multiplications and trigonometric expansions. By offloading these tasks from the primary system processor, it delivers the deterministic, low-latency performance required for high-precision motion control, collision avoidance, and safety-critical monitoring.
Beyond raw computational throughput, the ACE701189 addresses a fundamental challenge in modern robotics: maintaining stable, high‑frequency control loops under strict timing constraints.
Software‑based FK and Jacobian evaluation introduce jitter, variable execution time, and heavy CPU load, all of which degrade motion quality and complicate safety certification.
By moving these operations into deterministic hardware, the ACE701189 ensures consistent cycle‑to‑cycle behavior, enabling tighter servo loops, predictable latency budgets, and reliable operation even in multi‑arm or safety‑critical environments.
Key Characteristics
Dual-Stage Compute Pipeline: Integrates high-speed joint trigonometry with an IEEE-754 Single-Precision engine for full analytical coordinate and velocity resolution.
Guaranteed Determinism: Fixed execution of 623 clock cycles (3115ns @ 200MHz), eliminating jitter and software interrupt latencies.
Minimal Resource Impact: High computational density requiring only ~4K LUTs and 6 DSP slices (Artix-7 100T), enabling multi-core deployments on a single chip.
Hardware-Level IP Protection: Native integration with the silicon DNA_PORT for secure node-locking and bitstream protection.
Precision Verified: Bit-perfect alignment with double-precision reference models (Absolute Error <1e-6).
Simplified System Integration
The ACE701189 is designed for "Plug-and-Play" integration into modern SoC and FPGA architectures:
Standard Interface: Utilizes a single AXI BRAM interface. From the user's perspective, the core is simply a memory-mapped peripheral.
Asynchronous Domain Decoupling: Supports independent clocking for the User Interface and the Compute Core. Users can drive the I/O at their system frequency (e.g., 100 -160MHz) while the engine runs at a dedicated 200MHz for maximum throughput.
Transparent CDC Management: Internal hardware manages all Clock Domain Crossing and memory arbitration, ensuring data integrity without requiring external synchronizers.
The ACE_FK architecture is modular and can be tailored by our engineering team to meet specific application requirements:
Algorithmic Scaling: Capability to add Jacobian Inversion, Inverse Kinematics (IK), or dynamic compensation modules.
Resource Optimization: Can be stripped down to position-only solving to reduce footprint and latency further.
Cross-Platform Portability: Logic is designed for portability across Xilinx, Intel, Lattice, and Microchip FPGA families.
Bespoke Equations: Support for custom DH configurations or non-standard analytical models.
Application
The ACE701189 core is engineered for high‑precision robotic manipulation where deterministic timing, safety‑critical behavior, and computational efficiency are non‑negotiable.
By offloading all trigonometric, matrix‑chain, and Jacobian computations into dedicated silicon, the core eliminates the latency jitter and CPU load associated with software‑based kinematics. This enables tighter control loops, higher servo update rates, and more stable motion profiles, even in complex multi‑axis systems.
Key Application Benefits
Deterministic Control for Safety‑Critical Systems
The fixed 623‑cycle execution time provides a hard temporal guarantee, simplifying certification paths in industrial, medical, and defense robotics.
Massive CPU Offload for Real‑Time Processors
The core removes the need for 12 trig evaluations, six 4×4 matrix multiplications, and full Jacobian assembly per cycle. This frees the host processor for higher‑level planning, perception, or safety logic.
Smooth, High‑Bandwidth Motion Control
With a refresh rate above 320 kHz, the solver supports ultra‑responsive servo loops, enabling smoother trajectories, reduced vibration, and improved end‑effector accuracy.
Multi‑Arm Scalability
The design is fully stateless. A single FPGA can host multiple FK/Jacobian engines, allowing coordinated control of several robotic arms without increasing processor load.
Seamless Integration with Embedded Architectures
The AXI‑BRAM interface presents the core as a simple memory‑mapped peripheral. Both hard and soft processors can drive it without custom buses, DMA engines, or synchronization logic.
Certification‑Friendly Determinism
The unrolled analytical pipeline avoids iterative solvers and branching logic, providing predictable behavior even near singularities—an essential property for systems requiring formal verification.
Typical Use Cases
Industrial 6‑axis manipulators
Collaborative robots (cobots) with strict safety envelopes
Medical and surgical robotic arms
Aerospace and defense robotic actuation
High‑speed pick‑and‑place systems
Research platforms requiring precise Jacobian‑based control
Algorithm
The ACE701189 executes a multi-stage analytical routine to resolve the non-linear equations governing 6-axis robotic motion. The engine is designed to perform parallel execution of trigonometric expansions and matrix transformations, maintaining bit-perfect consistency with the Denavit-Hartenberg (DH) model.
The core decomposes the kinematic problem into four primary computational phases:
Joint Trigonometry Resolution: Simultaneous resolution of sine and cosine components for all six joint angles (q_1...q_6). This stage utilizes high-speed CORDIC primitives to ensure maximum precision before entering the floating-point pipeline.
Format Translation & Injection:
Real-time conversion of fixed-point trigonometric results into IEEE-754 Single-Precision format. This ensures that the subsequent matrix operations maintain the high dynamic range required for precision robotics.
Forward Kinematic Chain Multiplication:
The engine solves the recursive transformation chain . It calculates the global radial and vertical projections, ultimately resolving the Cartesian hand position (P_x, P_y, P_z).
Jacobian Velocity Projection:
The solver simultaneously calculates partial derivatives (Jacobian coefficients) to project joint velocities into linear and angular velocities in the task space.
By utilizing this core, the host system avoids the following computational overhead per cycle:
Trig Functions: 12 simultaneous sine/cosine operations.
Matrix Math: Chain multiplication of six 4x4 homogenous transformation matrices.
Differential Geometry: Calculation of the 6x6 Velocity Jacobian matrix.
Format Overhead: All floating-point management and rounding logic are handled in hardware.
Detailed equations
To ensure correct integration with the ACE core, the following conventions are utilized:
Link Lengths (An): Horizontal offsets between joint axes (e.g., A2 is shoulder-to-elbow).
Link Offsets (Dn): Vertical offsets along joint axes (e.g., D1 is base height, D6 is tool extension).
Joint Angles (qn): Angular position. The core expects scaled Q2.30 fixed-point values for CORDIC processing.
Joint Rates (qn_d): Angular velocity in rad/s (FP32).
1. Composite Trigonometry (Primary Chain)
The core calculates the forearm orientation using sum-of-products to maintain pipeline integrity:
c23 = (cos(q2) * cos(q3)) - (sin(q2) * sin(q3)) s23 = (sin(q2) * cos(q3)) + (cos(q2) * sin(q3))
2. Wrist Center & Tool Decoupling (D6 Offset)
The ACE Standard Core treats the tool offset as a 3D extension (dr, dt, dz) relative to the wrist center (rw, zw). This "Decoupler" logic ensures the tool tip is accurately tracked even when rotated by q4:
rw = (A2 * cos(q2)) + (A3 * c23) + (D4 * s23)
zw = D1 + (A2 * sin(q2)) + (A3 * s23) - (D4 * c23)
The Decoupler Constants:
dr = D6 * cos(q4) * sin(q5) (Radial Extension)
dt = D6 * sin(q4) * sin(q5) (Tangential Extension)
dz = D6 * cos(q5) (Vertical Extension)
3. Cartesian Position Outputs
Final world-space coordinates account for the tangential shift (dt) introduced by the spherical wrist:
r_total = rw + (c23 * dr) + (s23 * dz)
PX = (cos(q1) * r_total) - (sin(q1) * dt)
PY = (sin(q1) * r_total) + (cos(q1) * dt)
PZ = zw + (s23 * dr) - (c23 * dz)
4. Jacobian Producers (Linear Velocity Coefficients)
Linear velocity is synthesized using planar differential components (diff_p, diff_v) computed in parallel:
diff_p = (-sin(s23) * dr) + (c23 * dz) diff_v = (c23 * dr) + (s23 * dz)
Shoulder (q2) & Elbow (q3): Computed via planar projection logic (BRAM indices 45-50).
Wrist (q4, q5): Computed as tangential and pitching contributions (BRAM indices 51-56).
5. Velocity Projection (Cartesian & Angular)
The final velocity vector in world space is the sum of joint rates (qn_d) multiplied by their respective coefficients.
Linear Velocity (vx, vy, vz):
vx = (-PY * q1_d) + (jv01 * q2_d) + (jv02 * q3_d) + (jv04 * q4_d) + (jv05 * q5_d)
vy = (PX * q1_d) + (jv11 * q2_d) + (jv12 * q3_d) + (jv14 * q4_d) + (jv15 * q5_d)
vz = (jv21 * q2_d) + (jv22 * q3_d) + (jv24 * q4_d) + (jv25 * q5_d)
Angular Velocity (wx, wy, wz) - Standard R-P-R Convention:
wx = (sin(q1) * q2_d) + (sin(q1) * q3_d) + (cos(q1) * c23 * q4_d) + ((sin(q1)*sin(q4) - cos(q1)s23cos(q4)) * q5_d)
wy = (-cos(q1) * q2_d) + (-cos(q1) * q3_d) + (sin(q1) * c23 * q4_d) + ((-cos(q1)*sin(q4) - sin(q1)s23cos(q4)) * q5_d)
wz = q1_d + (s23 * q4_d) + (c23 * cos(q4) * q5_d) + q6_d
Angles definition
In this section the variation of the angles q1, q2, q3, q4 and q5 are illustrated by comparing the arm in a starting position and then varying one angle per time by 45 degrees. For q6 no image is generated, since q6 represents the tool rotation around its own axis.
Technical Characteristics
This section outlines the physical implementation results of the ACE_FK_701189 core. The core is optimized for the AMD/Xilinx 7-Series architecture but maintains high portability for other FPGA fabrics.
The core is engineered for maximum computational density. The following data represents the core minimalist footprint on a Xilinx Artix-7 100T (csg324-1) device.
Slice LUTs: 4,008 used out of 63,400 available (6.32% utilization)
Slice Registers: 4,508 used out of 126,800 available (3.56% utilization)
DSP48E1 Slices: 6 used out of 240 available (2.50% utilization)
Block RAM (36Kb): 3 used out of 135 available (2.22% utilization)
Clocking & Timing Closure
Deterministic Timing Closure: The core comfortably meets a 200 MHz target on -1 speed grade silicon.
Timing Performance: Verified Worst Negative Slack (WNS) of 0.367 ns at 200 MHz, ensuring stable operation across PVT (Process, Voltage, Temperature) corners in the verification project provided as part of the deliverables.
Zero Failing Endpoints: The design is fully constrained and verified, requiring no specialized floorplanning for standard deployment.
Execution Latency & Throughput
The solver utilizes a deep, non-iterative pipeline to provide absolute determinism in its response.
Core Latency: Exactly 623 Clock Cycles from command to result availability (on the B PORT of the BRAM used as user interface).
Execution Time: 3115 ns (@ 200 MHz Core Clock).
Maximum Refresh Rate: ~321 kHz.
Jitter-Free Performance: Because the analytical path is unrolled, the latency remains constant regardless of joint angles or singularity proximity, providing a rock-solid temporal guarantee for control law stability.
Clock Domain Crossing (CDC) Integrity
Interface Domain: The choice to use a BRAM as interface leaves the user the possibility to use a clock frequency of choice
Compute Domain: 200 MHz (Optimized for maximum math throughput).
Security Domain: 50 MHz (Limited by the DNA primitive maximum speed)
Integrity: All inter-clock paths are hardware-interlocked to prevent metastability and data collisions during simultaneous memory access.
Interfaces and operation flow
The ACE701189 core is packaged as an AMD IP core. The picture below shows the block used in its verification project.
The core is managed entirely via read/write operations on a BRAM with AXI interface. The instantiated BRAM is a True Dual Port with port A available to the user and port B managed by the internal Math Engine.
The BRAM has a width of 32 bits and a depth of 2048 locations. The core only uses the first 64 locations, with the remaining ones completely available for the user via port A (port B is assigned to the internal Math Engine).
The memory Map is reported below:
CLK_SLOW is used for the access to the DNA reader primitive (max frequency 100MHz, suggested frequency 50MHz)
CLK_FAST is used to drive the internal computation engine (max frequency 200MHz)
The results are written in BRAM, in accordance with the memory map, after the specified latency. The end of execution is communicated by the core by setting the START_CMD to 0x0.
When the START_CMD is asserted, the core performs the entire computation, without possibility to be stopped. Writing on the BRAM addresses 1 to 63 during the execution might compromise the final results and it is, therefore, deprecated, however, regardless of any data corruption, the core terminates its execution in the specified time frame
Note: if the USER_KEY is not correct, the core terminates in the specified timeframe, but produces unpredictable results.
The ACE_FK_701189 is delivered as a pre‑packaged Vivado IP core, ready for integration through the AMD/Xilinx IP Catalog. The core is provided as an encrypted, implementation‑ready DCP‑based IP, bound to the FPGA’s silicon DNA identifier to ensure secure deployment.
Each licensed core includes:
Pre‑packaged Vivado IP (compatible with IP Catalog) including simulation model
Memory map documentation (available in this datasheet)
USER_KEY file for license activation
Example project for rapid integration
ACE provides a USER_KEY value (64 bits) for FPGA Serial Number (DNA for AMD/Xilinx 7 Series).
The keys are delivered in a simple csv file (a template is reported below):
DNA_HEX,AUTHORIZATION_KEY
0011223344556677,C303E222F7D44C5B
ABCDE1234567890F,A2A3A3114194ED74
5566778899AABBCC,94C023F594AA6F63
DEADBEEF12345678,F40237F85DFB6F2A
00123456789ABCDE,E8ACBBDBFCF3ACB7
...............,.................
The user may store the file with all the SN/licenses and select the key to load after reading the SN of the FPGA from the BRAM_PORTA interface of the ACE701189 core.
The envisioned process is the following:
The file with the keys is embedded the customer software
The customer software, waiting at least 5000 ns from power on, reads the FPGA SN from the BRAM_PORTA interface exposed by the ACE701189 core (addresses 57 and 58).
The customer software retrieves the USER_KEY corresponding to the FPGA SN in the ACE provided USER_KEY file.
The customer software loads the USER_KEY via the BRAM_PORTA interface exposed by the ACE701189 core (addresses 59 and 60).
The keys are generated on customer order.
In simulation, a demo DNA is used and the corresponding USER_KEY is provided in the file for a seamless experience.
Pricing
Pricing is provided directly by ACE based on:
Deployment volume
License type
Optional customization requirements
Target FPGA family
Customers may request a quotation by providing their expected deployment profile and FPGA device list.
Results
The ACE701189 has been tested with random input against a double precision model implementing the same equations.
The Matlab function used as golden model is the following:
function [pos, vel, J] = ace_solver_arm_standard(q, q_d, params)
% ACE Standard 6-DOF Solver
% Decoupled Spherical Wrist (Roll-Pitch-Roll convention)
% Constants
D1 = params.D1; A2 = params.A2; A3 = params.A3;
D4 = params.D4; D6 = params.D6;
% --- 1. TRIGONOMETRY ---
s = sin(q); c = cos(q);
s1=s(1);
c1=c(1);
s2=s(2);
c2=c(2);
s3=s(3);
c3=c(3);
s4=s(4);
c4=c(4);
s5=s(5);
c5=c(5);
% --- 2. FORWARD KINEMATICS ---
c23 = c2*c3 - s2*s3;
s23 = s2*c3 + c2*s3;
% Wrist Center (The pivot point for q4, q5, q6)
rw = A2*c2 + A3*c23 + D4*s23;
zw = D1 + A2*s2 + A3*s23 - D4*c23;
% Tool Offset Projection (Standard 6-DOF)
% q4 now rotates the projection into the XY plane
% q5 pitches the offset relative to the arm axis
dr = D6 * c4 * s5; % Radial extension
dt = D6 * s4 * s5; % Tangential extension (The Decoupler)
dz = D6 * c5; % Vertical extension
% Cartesian Position
% Note: dt (tangential) moves px and py OUT of the radial line
px = c1*(rw + c23*dr + s23*dz) - s1*dt;
py = s1*(rw + c23*dr + s23*dz) + c1*dt;
pz = zw + s23*dr - c23*dz;
pos = [px; py; pz];
% --- 3. ANALYTICAL JACOBIAN (Geometric) ---
% Base (q1)
Jv1 = [-py; px; 0];
% Shoulder/Elbow (q2, q3) - Planar contributions
Jv2 = [c1*( -A2*s2 - A3*s23 + D4*c23 + (-s23*dr + c23*dz) );
s1*( -A2*s2 - A3*s23 + D4*c23 + (-s23*dr + c23*dz) );
( A2*c2 + A3*c23 + D4*s23 + ( c23*dr + s23*dz) )];
Jv3 = [c1*( -A3*s23 + D4*c23 + (-s23*dr + c23*dz) );
s1*( -A3*s23 + D4*c23 + (-s23*dr + c23*dz) );
( A3*c23 + D4*s23 + ( c23*dr + s23*dz) )];
% Wrist (q4, q5) - Decoupled contributions
% q4 rotates tool tip around the forearm axis
Jv4 = [ -c1*c23*(D6*s4*s5) - s1*(D6*c4*s5);
-s1*c23*(D6*s4*s5) + c1*(D6*c4*s5);
-s23*(D6*s4*s5) ];
% q5 pitches tool tip relative to wrist center
Jv5 = [ c1*(c23*D6*c4*c5 - s23*D6*s5) - s1*(D6*s4*c5);
s1*(c23*D6*c4*c5 - s23*D6*s5) + c1*(D6*s4*c5);
(s23*D6*c4*c5 + c23*D6*s5) ];
% --- 4. ASSEMBLE JACOBIAN ---
% (Angular components match standard DH convention)
J = [ Jv1, Jv2, Jv3, Jv4, Jv5, [0;0;0] ];
% Final Angular Rows (Simplified for standard Roll-Pitch-Roll)
Jw = [ 0, s1, s1, c1*c23, s1*s4 - c1*s23*c4, 0;
0, -c1, -c1, s1*c23, -c1*s4 - s1*s23*c4, 0;
1, 0, 0, s23, c23*c4, 1 ];
J = [J; Jw];
vel = J * q_d;
end
The results, showing errors below 1e-5 in all cases, of the verification are reported below:
==========================================================================
--- STAGE 1 FULL TRACE & VERIFICATION ---
==========================================================================
ROBOT PARAMS (m): A2=1.00, A3=0.60, D1=1.50, D4=1.50, D6=0.80
INPUT ANGLES (rad): [1.9775, 2.5497, -2.3437, 2.5973, 0.8316, -2.5287]
INPUT RATES (rad/s): [-0.4430, 0.0938, 0.9150, 0.9298, -0.6848, 0.9412]
--------------------------------------------------------------------------
Var | MATLAB (Gold) | CORE (BRAM) | Abs Error | Addr
--------------------------------------------------------------------------
px | -0.154319 | -0.154318 | 1.0802e-06 | 18
py | -0.415629 | -0.415628 | 1.2510e-06 | 19
pz | 0.081383 | 0.081382 | 1.4593e-06 | 20
vx | -0.389489 | -0.389492 | 3.1828e-06 | 21
vy | 2.217214 | 2.217215 | 1.2438e-07 | 22
vz | 0.045890 | 0.045891 | 1.1873e-06 | 23
wx | 0.288231 | 0.288230 | 9.0113e-07 | 24
wy | 0.984640 | 0.984641 | 6.5121e-07 | 25
wz | 1.261768 | 1.261770 | 1.1548e-06 | 26
------------------- JACOBIAN COLUMN PRODUCERS ----------------------------
Jv2_x | -0.561140 | -0.561141 | 1.4012e-06 | 45
Jv2_y | 1.302918 | 1.302918 | 3.6642e-08 | 46
Jv2_z | -0.320690 | -0.320689 | 7.9042e-07 | 47
Jv3_x | -0.781843 | -0.781845 | 1.9298e-06 | 48
Jv3_y | 1.815374 | 1.815374 | 1.4038e-07 | 49
Jv3_z | 0.509178 | 0.509179 | 9.6607e-07 | 50
Jv4_x | 0.583081 | 0.583080 | 9.1045e-07 | 51
Jv4_y | -0.075157 | -0.075156 | 9.9995e-07 | 52
Jv4_z | -0.062606 | -0.062606 | 1.1760e-07 | 53
Jv5_x | -0.029955 | -0.029953 | 1.4333e-06 | 54
Jv5_y | -0.635936 | -0.635936 | 1.7574e-07 | 55
Jv5_z | 0.484446 | 0.484446 | 1.6558e-07 | 56
==========================================================================
--- STAGE 2 FULL TRACE & VERIFICATION ---
==========================================================================
ROBOT PARAMS (m): A2=1.00, A3=0.60, D1=1.50, D4=1.50, D6=0.80
INPUT ANGLES (rad): [2.8725, -0.0919, 1.8867, -2.2501, -0.4916, 2.6121]
INPUT RATES (rad/s): [0.5844, 0.9190, 0.3115, -0.9286, 0.6983, 0.8680]
--------------------------------------------------------------------------
Var | MATLAB (Gold) | CORE (BRAM) | Abs Error | Addr
--------------------------------------------------------------------------
px | -2.931501 | -2.931498 | 3.4421e-06 | 18
py | 0.503800 | 0.503798 | 2.1994e-06 | 19
pz | 2.714490 | 2.714491 | 3.0076e-07 | 20
vx | 1.078501 | 1.078504 | 2.6477e-06 | 21
vy | -1.465925 | -1.465922 | 2.8022e-06 | 22
vz | 3.354848 | 3.354843 | 4.7236e-06 | 23
wx | -0.428467 | -0.428468 | 6.2317e-07 | 24
wy | 0.831052 | 0.831052 | 4.9353e-07 | 25
wz | 0.644489 | 0.644491 | 1.7867e-06 | 26
------------------- JACOBIAN COLUMN PRODUCERS ----------------------------
Jv2_x | 1.170772 | 1.170773 | 8.9986e-07 | 45
Jv2_y | -0.322922 | -0.322922 | 2.9231e-07 | 46
Jv2_z | 2.959932 | 2.959927 | 5.3990e-06 | 47
Jv3_x | 1.259228 | 1.259229 | 1.4494e-06 | 48
Jv3_y | -0.347320 | -0.347320 | 4.2418e-07 | 49
Jv3_z | 1.964151 | 1.964146 | 4.7930e-06 | 50
Jv4_x | -0.126001 | -0.126002 | 6.7817e-07 | 51
Jv4_y | -0.211345 | -0.211345 | 5.0820e-07 | 52
Jv4_z | -0.286453 | -0.286453 | 6.8236e-07 | 53
Jv5_x | -0.303928 | -0.303929 | 5.2464e-07 | 54
Jv5_y | 0.653026 | 0.653027 | 7.3968e-07 | 55
Jv5_z | -0.348115 | -0.348114 | 1.5802e-06 | 56
==========================================================================
--- STAGE 3 FULL TRACE & VERIFICATION ---
==========================================================================
ROBOT PARAMS (m): A2=1.00, A3=0.60, D1=1.50, D4=1.50, D6=0.80
INPUT ANGLES (rad): [1.1230, 1.6194, 1.5276, -0.6772, 0.9769, -2.0660]
INPUT RATES (rad/s): [0.4121, -0.9363, -0.4462, -0.9077, -0.8057, 0.6469]
--------------------------------------------------------------------------
Var | MATLAB (Gold) | CORE (BRAM) | Abs Error | Addr
--------------------------------------------------------------------------
px | -0.134681 | -0.134678 | 3.2123e-06 | 18
py | -1.239925 | -1.239919 | 5.7437e-06 | 19
pz | 4.440344 | 4.440342 | 1.7339e-06 | 20
vx | 2.580724 | 2.580716 | 8.6294e-06 | 21
vy | 3.692495 | 3.692491 | 3.7572e-06 | 22
vz | 2.141928 | 2.141919 | 8.1651e-06 | 23
wx | -0.399629 | -0.399628 | 2.9566e-07 | 24
wy | 1.195035 | 1.195033 | 2.2869e-06 | 25
wz | 1.691931 | 1.691929 | 2.2504e-06 | 26
------------------- JACOBIAN COLUMN PRODUCERS ----------------------------
Jv2_x | -1.273041 | -1.273038 | 3.4778e-06 | 45
Jv2_y | -2.650469 | -2.650465 | 3.8783e-06 | 46
Jv2_z | -1.175998 | -1.175993 | 5.0476e-06 | 47
Jv3_x | -0.840597 | -0.840594 | 2.4531e-06 | 48
Jv3_y | -1.750120 | -1.750117 | 2.9831e-06 | 49
Jv3_z | -1.127384 | -1.127380 | 4.1357e-06 | 50
Jv4_x | -0.645642 | -0.645640 | 1.7686e-06 | 51
Jv4_y | -0.150751 | -0.150751 | 3.8472e-07 | 52
Jv4_z | -0.002278 | -0.002277 | 3.9680e-07 | 53
Jv5_x | 0.103370 | 0.103370 | 4.4632e-07 | 54
Jv5_y | -0.432670 | -0.432669 | 8.1506e-07 | 55
Jv5_z | -0.664915 | -0.664913 | 1.6216e-06 | 56
==========================================================================
--- STAGE 4 FULL TRACE & VERIFICATION ---
==========================================================================
ROBOT PARAMS (m): A2=1.00, A3=0.60, D1=1.50, D4=1.50, D6=0.80
INPUT ANGLES (rad): [1.2241, -1.1492, 2.8288, -2.9252, -0.3849, -0.7442]
INPUT RATES (rad/s): [0.5310, 0.5904, -0.6263, -0.0205, -0.1088, 0.2926]
--------------------------------------------------------------------------
Var | MATLAB (Gold) | CORE (BRAM) | Abs Error | Addr
--------------------------------------------------------------------------
px | 0.802438 | 0.802437 | 1.5539e-06 | 18
py | 2.411197 | 2.411197 | 6.8197e-07 | 19
pz | 1.719098 | 1.719095 | 2.7401e-06 | 20
vx | -1.108264 | -1.108265 | 6.0527e-07 | 21
vy | 0.936037 | 0.936037 | 3.9587e-07 | 22
vz | 0.241296 | 0.241295 | 9.1557e-07 | 23
wx | -0.046885 | -0.046885 | 8.3973e-08 | 24
wy | -0.093042 | -0.093042 | 1.6542e-07 | 25
wz | 0.791764 | 0.791765 | 1.4516e-07 | 26
------------------- JACOBIAN COLUMN PRODUCERS ----------------------------
Jv2_x | -0.074439 | -0.074438 | 1.0828e-06 | 45
Jv2_y | -0.206065 | -0.206062 | 2.6396e-06 | 46
Jv2_z | 2.540397 | 2.540397 | 5.2009e-07 | 47
Jv3_x | -0.384440 | -0.384438 | 1.4146e-06 | 48
Jv3_y | -1.064225 | -1.064223 | 2.0200e-06 | 49
Jv3_z | 2.131177 | 2.131179 | 2.1599e-06 | 50
Jv4_x | -0.273521 | -0.273521 | 2.5817e-08 | 51
Jv4_y | 0.106256 | 0.106255 | 2.3750e-07 | 52
Jv4_z | -0.064119 | -0.064119 | 3.4029e-07 | 53
Jv5_x | 0.277925 | 0.277925 | 1.8821e-07 | 54
Jv5_y | 0.300703 | 0.300702 | 9.9778e-07 | 55
Jv5_z | -0.687267 | -0.687267 | 5.1558e-07 | 56
==========================================================================
--- STAGE 5 FULL TRACE & VERIFICATION ---
==========================================================================
ROBOT PARAMS (m): A2=1.00, A3=0.60, D1=1.50, D4=1.50, D6=0.80
INPUT ANGLES (rad): [1.3155, 1.6002, -1.4073, 1.1291, 0.9745, -2.1199]
INPUT RATES (rad/s): [-0.7620, -0.0033, 0.9195, -0.3192, 0.1705, -0.5524]
--------------------------------------------------------------------------
Var | MATLAB (Gold) | CORE (BRAM) | Abs Error | Addr
--------------------------------------------------------------------------
px | -0.273188 | -0.273185 | 3.1299e-06 | 18
py | 1.322819 | 1.322818 | 4.8002e-07 | 19
pz | 0.755814 | 0.755814 | 5.3647e-07 | 20
vx | 1.482697 | 1.482699 | 1.6948e-06 | 21
vy | 1.943440 | 1.943434 | 5.8817e-06 | 22
vz | 1.290261 | 1.290263 | 1.8349e-06 | 23
wx | 0.953030 | 0.953028 | 1.8926e-06 | 24
wy | -0.587003 | -0.587005 | 1.3054e-06 | 25
wz | -1.304054 | -1.304055 | 3.6034e-07 | 26
------------------- JACOBIAN COLUMN PRODUCERS ----------------------------
Jv2_x | 0.187947 | 0.187948 | 9.7380e-07 | 45
Jv2_y | 0.720062 | 0.720060 | 1.4385e-06 | 46
Jv2_z | 1.210942 | 1.210942 | 1.5520e-07 | 47
Jv3_x | 0.440391 | 0.440393 | 2.3604e-06 | 48
Jv3_y | 1.687225 | 1.687222 | 3.0161e-06 | 49
Jv3_z | 1.240385 | 1.240387 | 1.8140e-06 | 50
Jv4_x | -0.422113 | -0.422113 | 1.7273e-07 | 51
Jv4_y | -0.496807 | -0.496805 | 1.5223e-06 | 52
Jv4_z | -0.114759 | -0.114760 | 5.8192e-07 | 53
Jv5_x | -0.377436 | -0.377436 | 4.2210e-07 | 54
Jv5_y | 0.162116 | 0.162116 | 3.9676e-07 | 55
Jv5_z | 0.686484 | 0.686484 | 2.7423e-07 | 56