diff --git a/.scrape/d1t.html b/.scrape/d1t.html new file mode 100644 index 0000000..da69e60 --- /dev/null +++ b/.scrape/d1t.html @@ -0,0 +1,66 @@ + + +D1-T Teleoperation Robot Arm: Empowers Embodied Intelligence Research - Unitree Robotics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
D1-T
Teleoperation Robot Arm: Empowers Embodied Intelligence Research

Dual-Arm AI Teleoperation Kit

(Standard Edition)

$

8500

(Tax and freight excluded)

Quad-Arm AI Teleoperation Kit

(Full Edition)

$

16000

(Tax and freight excluded)

  • D1-T Ultra-Precision Force-Controlled Digital Servo Motor

    Data Acquisition and Embodied Intelligent Assistant

    Ultra-Precision Digital Force-Controlled Servo Motor

    Equipped with position control, velocity control, and force control functions, suitable for application development and learning tasks in a wide range of scenarios. Through low-level and high-level interfaces, direct control of the servo motor and advanced functions can be achieved.

  • D1-T Ultra-Precision Force-Controlled Digital Servo Motor

    Data Acquisition and Embodied Intelligent Assistant

    Ultra-Lightweight Robot Arm Body

    The robot arm is made of aluminum alloy material and weighs only 2.37kg with an arm length of 670mm, maintaining a lightweight design.

  • D1-T Ultra-Precision Force-Controlled Digital Servo Motor

    Data Acquisition and Embodied Intelligent Assistant

    Ultra-High Degrees of Freedom Control

    A "true" six-axis robot arm, equipped with six joints and a gripper, adding one degree of freedom to provide greater flexibility and freedom of movement in space.

  • D1-T Ultra-Precision Force-Controlled Digital Servo Motor

    Data Acquisition and Embodied Intelligent Assistant

    Ultra-Flexible Hardware Compatibility

    The robot arm can be connected to external devices such as cameras, mobile robot chassis, etc., combined with different scene applications to achieve more diverse functions and gameplay.

D1-T Unleashes Ultra-High Degrees of Freedom

Creating Infinite Possibilities

Distinguished by its ultra-high degrees of freedom control, featuring six joints and a gripper as standard configuration, it provides greater flexibility in spatial movement, covering a wider range of motion.

D1-T Innovative Force-Controlled Interaction Technology

Expanding the Possibilities of AI Applications and Gameplay

A leading choice for embodied intelligent assistants, unlocking the limitless potential of data acquisition and continuous learning.

  • Model

    D1

  • Weight

    About 2.37Kg

  • DoF

    6 Axis + 1 Gripper

  • Payload

    500g

  • Reach

    550mm(Gripper not included)、670mm(Gripper included)

  • Power Supply

    24V 2.5A (MAX 5A)

  • Interface

    DC5.5-2.1(Power Supply)+RJ45(Communication)+Type-C(Serial Port Debugging)

  • Motor Type

    Bus Servo

  • Power

    60W

This product is a civilian robot. We kindly request that all users refrain from making any dangerous modifications or using the robot in a hazardous manner.

Please visit Unitree Robotics Website for more related terms and policies, and comply with local laws and regulations.

+ \ No newline at end of file diff --git a/.scrape/dex11.html b/.scrape/dex11.html new file mode 100644 index 0000000..8cfaeb2 --- /dev/null +++ b/.scrape/dex11.html @@ -0,0 +1,76 @@ + + +Unitree Dex1-1 Professional and refined - Unitree Robotics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Unitree Dex1-1
Professional and refined

designed specifically for embodied AI applications

Extra-large stroke, powerful force, and ultimate control
Features
Industry Applications
  • Scientific Research and Education

    Courier Sorting

  • Industrial Automation

    New Retail

  • Consumer Electronics

    Medicine

Product Compatibility
  • Dex1-1 Gripper - Standard Version
  • Dex1-1 Gripper - Advanced Version (with Camera)

    1080P FPS: 30/60

    FOV: H:118° V:87° D:140°

  • Standalone use
  • Unitree's G1 humanoid robots
  • Unitree's H2 humanoid robots
  • Unitree's R1 humanoid robots
Product Parameters

Gripper Parameters

  • Model

    Dex1-1

  • Dimensions

    143mm x 78mm x 67mm [1]

  • Weight

    550g

  • Stroke

    90mm

  • Gripping Force (Adjustable)

    5~120N [2]

  • Speed (Adjustable)

    50~375 mm/s [2]

  • Position Resolution (Fingertip)

    0.1mm

  • Grasp Load (Form-fitting)

    20kg [3]

  • Grasp Load (Friction)

    5kg [4]

  • Full-stroke Shortest Closing Time

    0.24s [2]

  • Jaw Length

    80mm

Motor Parameters

  • Communication Protocol

    High-speed 485

  • Communication Baud Rate

    6Mbps

  • Communication Control Frequency

    1000Hz

  • Operating Voltage

    24V~64V (24/48VDC recommended)

  • Static Current

    0.03A

  • Peak Line Current

    3.5A

  • Motor Peak Torque

    5N.m

  • Motor Maximum Speed

    27rad/s (with 64V power supply)

  • Recommended Operating Environment

    -20℃ ~ 60℃

  • Motor Reduction Ratio

    1:25

  • Motor Encoder Resolution

    15bit

  • Motor Encoder Type

    Absolute encoder

  • Motor Status Feedback

    Angle, Angular Velocity, Torque, Temperature

  • Motor Control Instruction

    Angle, Angular Velocity, Torque, Stiffness, Damping

[1]

The gripper's width is 78mm when half-open. Its width is 120mm when fully open and 124.5mm when fully closed (with the side rails extended).

[2]

The listed values for speed, gripping force, and full-stroke closing time are measured under varying conditions (24V-60V) by adjusting motor stiffness, damping, and torque. These values may vary depending on the application; please refer to your specific use case.

[3]

Grasp Load (Form-fitting) refers to the maximum horizontal load the gripper can hold without losing its grip. This value may vary depending on the application; please refer to your specific use case.

[4]

Grasp Load (Friction) refers to the maximum vertical load the gripper can hold without slipping, as measured with a square steel block. This value may vary depending on the application; please refer to your specific use case.

[5]

All parameters listed above may vary in different application scenarios or with different model configurations. Please refer to your specific use case.

[6]

The product appearance is subject to change. Please refer to the final product.

This product is a civilian robot. We kindly request that all users refrain from making any dangerous modifications or using the robot in a hazardous manner.

Please visit Unitree Robotics Website for more related terms and policies, and comply with local laws and regulations.

+ \ No newline at end of file diff --git a/.scrape/dex25.html b/.scrape/dex25.html new file mode 100644 index 0000000..6eb4aca --- /dev/null +++ b/.scrape/dex25.html @@ -0,0 +1,66 @@ + + +Unitree Dex2/5 Gala-style tendon-driven dexterous hand, precise control for unbeatable strength. - Unitree Robotics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Unitree Dex2/5
Gala-style tendon-driven dexterous hand, precise control for unbeatable strength.

10‑DOF (2 actuated) 5‑finger tendon‑driven dexterous hand

Lightweight

Compact

Reliable

Ultra-long fatigue life for greater durability

The entire hand has passed over 100000 fatigue cycles

Ensuring stable and reliable long-term operation

Rugged impact resistance, impervious to knocks and bumps

Completed over 100 drop tests

Superior robust design ensures the dexterous hand is no longer fragile

Hidden internal wiring

Compatible with G1/R1 models

Let the "meridians" run beneath the "skin"

Lightweight and compact

Parameters

  • Weight

    365g

  • Size

    151mm x 70mm x 63mm [1]

  • Degrees of Freedom

    Thumb×1

    Index Finger、Middle Finger、Ring Finger、Little Finger:share one DOF

  • Transmission Mechanism

    Gear‑tendon rope drive

  • Angle of Joint

    Thumb Joint 0:0~42°

    Thumb Joint 1:0~105°

    Four-Finger Joint0:0~88°

    Four-Finger Joint1:0~105°

  • Minimum fist clench time

    0.5 s

  • Minimum grip diameter

    8mm

  • Fingertip strength

    Thumb:15N

    Index finger, middle finger, ring finger, little finger: total 15 N

  • Working Voltage

    24V-60V

  • Static Current

    58V@0.1A

  • Maximum Current

    58V@1.5A

  • Communication Interface

    RS485

  • Working Temperature Range

    -20℃ ~ 60℃

  • Load Conditions ( Palm Facing Down At Room Temperature, Grasping A 5cm Round Hard Object)

    The Maximum Weight is 1.5kg

  • Load Conditions (Palm Facing Left At Room Temperature, Grasping A 5cm Round Hard Object)

    The Maximum Weight is 1.5kg

Software Function

  • Communication Rate

    1000Hz

  • Perceptual Feedback

    Joint Mode, Joint Position, Joint Velocity, Joint Torque, Joint Temperature, Voltage and Current

  • Control Feedback

    Joint Mode, Joint Position, Joint Velocity, Joint Torque, Joint Stiffness Coefficient, Joint Damping Coefficient

[1]

It is the size of the dexterous hand in flat state.

[2]

All parameters listed above may vary in different application scenarios or with different model configurations. Please refer to your specific use case.

[3]

The product appearance is subject to change. Please refer to the final product.

This product is a civilian robot. We kindly request that all users refrain from making any dangerous modifications or using the robot in a hazardous manner.

Please visit Unitree Robotics Website for more related terms and policies, and comply with local laws and regulations.

+ \ No newline at end of file diff --git a/.scrape/dex31.html b/.scrape/dex31.html new file mode 100644 index 0000000..87d8a03 --- /dev/null +++ b/.scrape/dex31.html @@ -0,0 +1,66 @@ + + +Unitree Dex3-1 Power Control Dexterous Hand, Operate Everything - Unitree Robotics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Unitree Dex3-1
Power Control Dexterous Hand, Operate Everything

Combined with force and position hybrid control, it is sensitive and reliable,

and can simulate the precise operation of the object

Collect data, Sensitive and Accurate
Open source links >
Dex3-1

Dex3-1 three-finger dexterous hand, with 7 degrees of freedom 7 motion off machine: 6 micro brushless force control joint direct drive, 1 micro brushless force control joint gear drive, one hand with 33 tactile sensors. It can be used with G1 humanoid robot to perform various complex actions.

Product Parameters

User Manual >

Body Parameters

  • Weight

    710g

  • Size

    175mm x 88mm x 77mm

  • Degrees of Freedom

    Thumb x 3

    Index Finger x 2

    Middle Finger x 2

  • Transmission Mechanism

    6 Motors Drive Directly

    1 Motor Drive with Gears

  • Angle of Joint

    Thumb Joint 0: -60°~60°

    Thumb Joint 1: -35°~60°

    The Thumb Joint 2: 0 to 100°

    Index Finger Joint 0: 0 °~90°

    Index Finger Joint 1: 0 °~100°

    Middle Finger Joint 0: 0 °~90°

    Middle Finger Joint 1: 0 °~100°

  • Fingertip Repeat Positioning Accuracy

    ±2mm

  • Working Voltage

    12~58V

  • Static Current

    58V @ 0.2A

  • Maximum Current

    10A

  • Communication Interface

    USB2.0

  • Working Temperature Range

    -20℃ ~ 60℃

  • Load Conditions ( Palm Facing Down At Room Temperature, Grasping A 5cm Round Hard Object)

    The Maximum Weight is 500g

    The Maximum Power Is: 400W@3s

  • Load Condition (Palm Facing Left At Room Temperature, Grasping A 5cm Round Hard Object)

    The Maximum Weight is 500g

    The Maximum Power Is: 400W@3s

Sensing parameters

  • Number of Pressure Sensors

    9 (Total of 33 Pressure Sensors)

  • Array resolution

    2 x 2 (Palm) x 3

    2 x 2 (Single Finger Pad) x 3

    3 x 1 (Single Fingertip) x 3

  • Range of Perception

    10g-2500g

  • Maximum Acceptance (Unamaged)

    20kg

Software functions

  • Communication rate

    1000Hz

  • The number of bytes in a full packet

    Sender:1234 bytes

    Receiver:1270 bytes

  • Perceptual feedback

    Joint Mode, Joint Position, Joint Velocity, Joint Torque, Joint Temperature, Voltage and Current, Sensor Pressure Value, Sensor Temperature Value, imu Data

  • Control feedback

    Joint Mode, Joint Position, Joint Velocity, Joint Torque, Joint Stiffness Coefficient, Joint Damping Coefficient

Miniature Brushless Force Control Joint Parameters

  • Model

    F-1515-108 Miniature Brushless Force Control Joint

    F-1515-214 Miniature Brushless Force Control joint

  • Weight

    45g

  • Size

    34.8mm x 23.1mm x 23.3mm

  • Reduction Ratio

    1:108

    1:214

  • Maximum Torque (Ideal)

    0.76Nm

    1.498Nm

  • Maximum Torque (Actual)

    The Torque Is In The Same Direction As The Speed:0.49Nm

    The Torque Is In The Same Direction As The Speed:0.86Nm

    The Toque Is In The Opposite Direction of The Rotational Speed:1.37Nm

    The Toque Is In The Opposite Direction of The Rotational Speed:3.1 Nm

  • Maximum Rotational Speed

    23rad/s

    11rad/s

  • Maximum Line Current

    4.76A

  • Communication Control Frequency

    1000Hz

  • Method of Communication

    High Speed Unibus

  • Encoder

    Rotor Absolute Value Encoder

  • Working Temperature Range

    -20℃ ~ 60℃

  • IP Rating

    /

  • Working Voltage

    12-24V

  • Motor Preceived Feedback

    Torque, Angle, Angular Velocity, Temperature

  • Motor Control Instruction

    Torque, Angle, Angular Velocity, Stiffness, Damping

[1]

It is the size of the dexterous hand in flat state.

[2]

The data refers to the pressure exerted by the dexterous hand when it is pressed by a vertical downward cylinder with a diameter of 1cm, which varies in different application scenarios. Please refer to the actual situation.

This product is a civilian robot. We kindly request that all users refrain from making any dangerous modifications or using the robot in a hazardous manner.

Please visit Unitree Robotics Website for more related terms and policies, and comply with local laws and regulations.

+ \ No newline at end of file diff --git a/.scrape/l2.html b/.scrape/l2.html new file mode 100644 index 0000000..c9f1c79 --- /dev/null +++ b/.scrape/l2.html @@ -0,0 +1,72 @@ + + +Unitree 4D LiDAR L2 | Unitree Robotics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
All New L2
Unitree 4D LiDAR
$419
Watch Video →

Provide a complete open-source SLAM solution.

Utilize only L2 and its built-in IMU, without employing other positioning sensors, to map using the POINT-LIO algorithm.

(Click to download software resources and point cloud data)
  • 360°×96°

    Ultra-wide-angle scanning

  • 0.05m

    Near blind spot

  • 30m

    @90% reflectivity

  • 64000 points/s

    Effective frequency

  • 2cm

    Measurement accuracy

  • 230g

    Weight

  • ENET UDP/TTL UART

    Communication interface

  • 75×75×65mm

    Compact size

  • 64000points/s
    Effective frequency

    Synchronize and enhance by 200%.

  • 4.5mm
    Distance resolution

    Synchronize and enhance by 78%.

  • 360°×96°
    FOV

    Synchronize and enhance by 7%.

Indoor whole-house dynamic scanning.

L2 can quickly and accurately obtain the 3D structural information of the entire house, which facilitates the positioning and autonomous navigation of mobile robots. It can also help robots expand more diverse functions such as whole-house cleaning and organization.

Outdoor real-scene dynamic scanning.

L2 can effectively resist the interference of indoor ambient light and outdoor strong light. Under strong light conditions of 100Klux outdoors, it can achieve stable ranging and high-precision mapping.

Non-repetitive scanning

L2 achieves high-precision and high-density point cloud data through omnidirectional ultra-wide-angle non-repetitive scanning, realizing photograph-level scanning effects.

Recommended deployment scheme

Typical robot installation example: Logistics and warehousing

Unitree 4D LiDAR L2
  • Unitree L2

    $419

  • A depth camera

    $359

  • A wide-angle 3D radar

    $700+

Parameter comparison
  • Product
    Unitree L2
    A depth camera
    A wide-angle 3D radar
  • FOV
    360° × 96°
    86° × 57° (土3°)
    120° × 75°
  • Non-repetitive scanning
    x
    x
  • Scanning method
    Non-contact brushless rotating mirror scanning
    Global shutter
    Solid or quasi-solid state scanning
  • Data reception processing CPU consumption ( Additional cost for user )
    Extremely low
    High
    High
  • Scanning distance
    30m
    4-5m
    30m
  • Nearby blind area
    0.05m
    0.1m
    0.3m
  • IMU
    3-axis acceleration+ 3-axis gyroscope
    x
    x
  • Power
    10W
    5W
    12W
  • Size mm
    75×75×65
    90×25×25
    100×130×65
  • Weight
    230g
    About 100g
    About 500g
  • Operating environment
    Indoor/outdoor
    Indoor/outdoor(close range)'
    Indoor/outdoor
  • Technology
    Laser TOF
    Infrared binocular
    Laser TOF
Product Model
  • Model

    L2

    L1 PM

    (Precision Measurement)

    L1 RM

    (Remote Measurement)

  • Price

    $419

    $249

    $309

  • Scanning distance

    30m(@90% reflectivity)

    15m(@10% reflectivity)

    20m(@90% reflectivity)

    10m(@10% reflectivity)

    30m(@90% reflectivity)

    15m(@10% reflectivity)

  • FOV

    360°×96°

    360°×90°

    360°×90°

  • Sampling frequency

    128000points/s

    43200points/s

    43200points/s

  • Effective frequency

    64000points/s

    21600points/s

    21600points/s

  • Communication interface

    ENET UDP/TTL UART

    TTL UART

    TTL UART

  • 4D data

    3D position +1D grayscale(supports 2D mode)

    3D position +1D grayscale

    3D position +1D grayscale

  • Circumferential scanning frequency

    5.55Hz(Customizable adjustment)

    11Hz

    11Hz

  • Vertical scanning frequency

    216Hz

    180Hz

    180Hz

  • Distance resolution

    4.5mm

    8mm

    8mm

  • Measurement accuracy

    ≤ 2.0cm

    ± 2.0cm

    ± 2.0cm

  • Nearbyblind area
    0.05m
  • IMU
    3-axis acceleration +3-axis gyroscope
  • Human eye safety level
    Class 1(IEC60825-1:2014) Human eye safety
  • Anti-glare capability
    >100KIux

[1]

L2 also supports negative angle mode, in which the field of view will be extended from 360°x90° to 360°x96°. The additional 6° of the field of view will have a slightly shorter maximum measurement distance.

[2]

The values shown here are typical reflectance values, and the actual values depend on environmental conditions and the characteristics of the target object.

[3]

To ensure effective detection of objects with different reflectance within the range, there may be a slight decrease in point cloud accuracy at certain positions. The farthest range is directly above the L2.

[4]

To ensure effective detection of objects with different reflectance within the range, there may be a slight decrease in point cloud accuracy at certain positions.

[5]

The stable power and peak power vary under different environmental conditions. When the ambient temperature is between -10°C and 30°C, L2 will automatically operate in a self-heating mode. Point cloud data will be generated only when the temperature meets the requirements, and at this time, the peak power can reach 13W. Please design the power supply reasonably to ensure the normal operation of the equipment.

This product is a civilian robot. We kindly request that all users refrain from making any dangerous modifications or using the robot in a hazardous manner.

Please visit Unitree Robotics Website for more related terms and policies, and comply with local laws and regulations.

* Note: The parameters mentioned above may vary in different business scenarios and with different LiDAR configurations. Please refer to the actual application for accuracy.

    + \ No newline at end of file diff --git a/.scrape/z1.html b/.scrape/z1.html new file mode 100644 index 0000000..5a9e052 --- /dev/null +++ b/.scrape/z1.html @@ -0,0 +1,70 @@ + + +Robotic Arm Z1_Mobile Robot On-board Robotic Arm | Unitree Robotics + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Perfect Synergy

    Mobile Platforms Adaption

    Diversified Application Scenarios

    Watch Video →

    Open Programming Interface and Extended Interface

    The manipulator control program and control interface will be successively opened, and different actuators can be quickly replaced at the end of the manipulator.

    Application

    Various mobile robots’ onboard manipulator, e-commerce logistics, new consumption, daily life, etc.

    • FUNCTION

      PARAMETER

    • Backlash

      ~6 arcmin

    • Communication Method

      RS 485

    • Maximum Torque

      33N·m

    • Encoder Resolution

      15bit

    • Weight

      405g

    • Force Control Accuracy

      ~0.2N·m

    • Size

      Φ65*52mm

    • Control Frequency

      1KHz

    • Reducer

      Harmonic Reducer

    • Bearing

      Industrial grade cross roller

    • Reduction Ratio

      60+

    • Motor Sensing Feedback

      Torque, Angle, Angular Velocity

    • Voltage

      24V(Recommend)

    • Motor Control Command

      Torque, Angle, Angular Velocity, Stiffness, Damping

    It can cooperate with
    Aliengo or B1 Robot

    and other mobile robots,

    to complete complex tasks and explore various

    application scenarios.

    Parameter

    • Model

      Z1 AIR

      Z1 PRO

    • DOF

      6 Axis

      6 Axis

    • Weight

      4.3kg

      4.5kg

    • Payload

      2kg

      ≥3kg

    • Reach

      740mm

      740mm

    • Repeatability

      ~0.1mm

      ~0.1mm

    • Power Supply

      Voltage 24V Current > 20A

      Voltage 24V Current > 20A

    • Interface

      Ethernet

      Ethernet

    • User Operating System

      Ubuntu

      Ubuntu

    • Power

      MAX 500w

      MAX 500w

    • Force Feedback and Collision Detection

      Provide

      Provide

    • Control Interface

      Position + Force Control

      Position + Force Control

    Joint

    Range

    Max Speed

    Joint Parameters

    • J1

      ±150°

      180°/s

    • J2

      0-180°

      180°/s

    • J3

      -165°-0

      180°/s

    • J4

      ±80°

      180°/s

    • J5

      ±85°

      180°/s

    • J6

      ±160°

      180°/s

    [1]

    It depends on the actual test according to the use requirements (the test standards of manipulator vary greatly, and the accuracy varies greatly under different test conditions).

    [2]

    Since the reduction ratio used by each joint is relatively low, the position control stiffness of the whole machine is low. If the control mode is not optimized, there will be large position control error and shaking when the manipulator moves.

    This product is a civilian robot. We kindly request that all users refrain from making any dangerous modifications or using the robot in a hazardous manner.

    Please visit Unitree Robotics Website for more related terms and policies, and comply with local laws and regulations.

    + \ No newline at end of file diff --git a/public/bu-sunaidah/README.txt b/public/bu-sunaidah/README.txt new file mode 100644 index 0000000..8e45c8a --- /dev/null +++ b/public/bu-sunaidah/README.txt @@ -0,0 +1 @@ +Drop the approved Bu Sunaidah photo here as portrait.jpg (or .webp). diff --git a/public/images/accessories/unitree-d1-t.jpg b/public/images/accessories/unitree-d1-t.jpg new file mode 100644 index 0000000..0aa406a Binary files /dev/null and b/public/images/accessories/unitree-d1-t.jpg differ diff --git a/public/images/accessories/unitree-dex1-1.png b/public/images/accessories/unitree-dex1-1.png index e265667..fafef2b 100644 Binary files a/public/images/accessories/unitree-dex1-1.png and b/public/images/accessories/unitree-dex1-1.png differ diff --git a/public/images/accessories/unitree-dex1-1/diagram.png b/public/images/accessories/unitree-dex1-1/diagram.png new file mode 100644 index 0000000..9f2273e Binary files /dev/null and b/public/images/accessories/unitree-dex1-1/diagram.png differ diff --git a/public/images/accessories/unitree-dex2-5.jpg b/public/images/accessories/unitree-dex2-5.jpg index 7e064d2..0daf407 100644 Binary files a/public/images/accessories/unitree-dex2-5.jpg and b/public/images/accessories/unitree-dex2-5.jpg differ diff --git a/public/images/accessories/unitree-dex3-1.jpg b/public/images/accessories/unitree-dex3-1.jpg new file mode 100644 index 0000000..2f09d72 Binary files /dev/null and b/public/images/accessories/unitree-dex3-1.jpg differ diff --git a/public/images/accessories/unitree-dex3-1/diagram.png b/public/images/accessories/unitree-dex3-1/diagram.png new file mode 100644 index 0000000..1e1fe0e Binary files /dev/null and b/public/images/accessories/unitree-dex3-1/diagram.png differ diff --git a/public/images/accessories/unitree-dex5-1/hero.png b/public/images/accessories/unitree-dex5-1/hero.png new file mode 100644 index 0000000..63f9368 Binary files /dev/null and b/public/images/accessories/unitree-dex5-1/hero.png differ diff --git a/public/images/accessories/unitree-dex5-1/params.png b/public/images/accessories/unitree-dex5-1/params.png new file mode 100644 index 0000000..2353fff Binary files /dev/null and b/public/images/accessories/unitree-dex5-1/params.png differ diff --git a/public/images/accessories/unitree-l2.jpg b/public/images/accessories/unitree-l2.jpg new file mode 100644 index 0000000..6780b88 Binary files /dev/null and b/public/images/accessories/unitree-l2.jpg differ diff --git a/src/app/accessories/[slug]/page.tsx b/src/app/accessories/[slug]/page.tsx index a218749..490be9f 100644 --- a/src/app/accessories/[slug]/page.tsx +++ b/src/app/accessories/[slug]/page.tsx @@ -107,6 +107,122 @@ export default async function AccessoryDetailPage({ params }: { params: Promise< + {/* HIGHLIGHTS */} + {accessory.highlights && accessory.highlights.length > 0 && ( + + + + )} + + {/* RICH FEATURE SECTIONS — full-bleed alternating */} + {accessory.featureSections && accessory.featureSections.length > 0 && ( +
    + {accessory.featureSections.map((s, i) => { + const reverse = i % 2 === 1; + const hasImage = Boolean(s.image); + return ( + +
    + {hasImage && ( +
    + {s.imageAlt + +
    + )} +
    + {s.eyebrow && {s.eyebrow}} +

    {s.title}

    +

    {s.body}

    + {s.bullets && s.bullets.length > 0 && ( +
      + {s.bullets.map((b) => ( +
    • + + {b} +
    • + ))} +
    + )} +
    +
    +
    + ); + })} +
    + )} + + {/* PARAMS DIAGRAM */} + {accessory.paramsImage && ( + +
    + {`${accessory.name} +
    {accessory.name} — body dimensions and structural overview.
    +
    +
    + )} + + {/* SPEC GROUPS */} + {accessory.specGroups && accessory.specGroups.length > 0 && ( + +
    +
    + Technical specifications +

    Full parameter sheet.

    +
    +
    + {accessory.specGroups.map((g) => ( +
    +
    +

    {g.title}

    + {g.variants && g.variants.length > 0 && ( +
    + {g.variants.map((v) => ( + {v} + ))} +
    + )} +
    + + + {g.rows.map((r) => ( + + + + {g.variants && g.variants.length > 1 && ( + + )} + + ))} + +
    {r.label}{r.value}{r.valueAlt ?? r.value}
    +
    + ))} +
    +
    +
    + )} + {/* FEATURES + COMPATIBILITY */}
    @@ -199,6 +315,30 @@ export default async function AccessoryDetailPage({ params }: { params: Promise< + {/* FOOTNOTES + SAFETY */} + {(accessory.footnotes?.length || accessory.safetyNotice) && ( + + + + )} + {/* RELATED */} {related.length > 0 && ( @@ -447,6 +587,226 @@ export default async function AccessoryDetailPage({ params }: { params: Promise< .acc-hero-actions .cta-btn { width: 100%; justify-content: space-between; } } + /* HIGHLIGHTS */ + .acc-highlights { + list-style: none; margin: 0; padding: 0; + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 0.7rem; + } + @media (min-width: 820px) { .acc-highlights { grid-template-columns: repeat(4, minmax(0, 1fr)); } } + .acc-highlight { + position: relative; + display: flex; flex-direction: column; gap: 0.35rem; + padding: 1.1rem 1.15rem; + border-radius: 18px; + border: 1px solid rgba(120, 140, 255, 0.22); + background: + radial-gradient(ellipse 80% 60% at 100% 0%, color-mix(in srgb, var(--acc) 16%, transparent), transparent 60%), + linear-gradient(135deg, rgba(80, 110, 255, 0.10), rgba(255, 255, 255, 0.03)); + overflow: hidden; + transition: border-color 0.3s, transform 0.3s, box-shadow 0.3s; + } + .acc-highlight::before { + content: ''; position: absolute; + top: 0; right: 16px; width: 28px; height: 1px; + background: linear-gradient(90deg, transparent, rgba(180, 195, 255, 0.55)); + } + .acc-highlight:hover { + border-color: rgba(120, 140, 255, 0.55); + transform: translateY(-2px); + box-shadow: 0 14px 30px rgba(0, 0, 0, 0.45), 0 0 22px color-mix(in srgb, var(--acc) 18%, transparent); + } + .acc-highlight-value { + font-size: clamp(1.7rem, 3.2vw, 2.4rem); + font-weight: 500; letter-spacing: -0.03em; line-height: 1; + background: linear-gradient(180deg, #FFFFFF, #B5BDDB); + -webkit-background-clip: text; background-clip: text; color: transparent; + } + .acc-highlight-label { + font-size: 0.66rem; letter-spacing: 0.22em; + text-transform: uppercase; font-weight: 800; color: #DEE0F0; + } + .acc-highlight-sub { + font-size: 0.78rem; color: #8891C7; line-height: 1.3; + } + + /* FEATURE SECTIONS — full-bleed alternating */ + .acc-features-stack { + display: flex; flex-direction: column; + gap: clamp(2rem, 4vw, 3rem); + } + .acc-feature { + position: relative; + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: clamp(1.25rem, 3vw, 2rem); + padding: clamp(1.5rem, 3vw, 2.25rem); + border-radius: 24px; + border: 1px solid rgba(74, 102, 216, 0.20); + background: + radial-gradient(ellipse 70% 80% at 0% 100%, color-mix(in srgb, var(--acc) 16%, transparent), transparent 60%), + linear-gradient(135deg, rgba(18, 17, 26, 0.95), rgba(8, 8, 12, 0.97)); + box-shadow: 0 22px 50px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.04); + overflow: hidden; + align-items: center; + } + @media (min-width: 820px) { + .acc-feature { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); } + .acc-feature.is-reverse { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); } + .acc-feature.is-reverse .acc-feature-media { order: 2; } + .acc-feature.is-reverse .acc-feature-body { order: 1; } + .acc-feature.is-text-only { grid-template-columns: minmax(0, 1fr); } + } + .acc-feature.is-text-only .acc-feature-media { display: none; } + .acc-feature-media { + position: relative; + aspect-ratio: 16 / 11; + border-radius: 18px; + overflow: hidden; + background: #0a0a0e; + border: 1px solid rgba(222, 224, 240, 0.08); + min-height: 200px; + } + .acc-feature-media-overlay { + position: absolute; inset: 0; + background: + linear-gradient(180deg, rgba(10, 10, 14, 0.08) 0%, rgba(10, 10, 14, 0.02) 40%, rgba(10, 10, 14, 0.55) 100%), + radial-gradient(ellipse 60% 70% at 100% 0%, color-mix(in srgb, var(--acc) 18%, transparent), transparent 65%); + pointer-events: none; + } + .acc-feature-body { + display: flex; flex-direction: column; + gap: 1rem; + padding: clamp(0.25rem, 1vw, 0.75rem); + min-width: 0; + } + .acc-feature-body h2 { + margin: 0; + font-size: clamp(1.6rem, 3.2vw, 2.4rem); + font-weight: 400; letter-spacing: -0.025em; + color: #FFFFFF; + line-height: 1.1; + } + .acc-feature-body p { + margin: 0; color: #DEE0F0; + font-size: clamp(0.95rem, 1.8vw, 1.05rem); + line-height: 1.65; + } + .acc-feature-bullets { + list-style: none; margin: 0.55rem 0 0; padding: 0; + display: flex; flex-direction: column; gap: 0.6rem; + } + .acc-feature-bullets li { + display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 0.65rem; + color: #DEE0F0; font-size: 0.92rem; line-height: 1.55; + } + + /* PARAMS DIAGRAM */ + .acc-params-figure { + margin: 0; + padding: clamp(1.2rem, 2.4vw, 1.8rem); + border-radius: 22px; + border: 1px solid rgba(74, 102, 216, 0.22); + background: + radial-gradient(ellipse 80% 60% at 50% 0%, color-mix(in srgb, var(--acc) 12%, transparent), transparent 60%), + linear-gradient(180deg, rgba(14, 13, 22, 0.95), rgba(8, 8, 12, 0.97)); + display: flex; flex-direction: column; gap: 1rem; + box-shadow: 0 22px 52px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.04); + } + .acc-params-figure figcaption { + color: #8891C7; font-size: 0.78rem; + letter-spacing: 0.04em; text-align: center; + } + + /* SPEC GROUPS */ + .acc-specs { display: flex; flex-direction: column; gap: 1.25rem; } + .acc-specs header { display: flex; flex-direction: column; gap: 0.45rem; } + .acc-specs h2 { + margin: 0; font-size: clamp(1.4rem, 2.8vw, 1.85rem); + font-weight: 400; letter-spacing: -0.02em; color: #FFFFFF; + } + .acc-spec-stack { + display: flex; flex-direction: column; gap: 1rem; + } + .acc-spec-group { + border-radius: 18px; + border: 1px solid rgba(222, 224, 240, 0.10); + background: linear-gradient(180deg, rgba(20, 19, 26, 0.85), rgba(10, 10, 14, 0.94)); + overflow: hidden; + } + .acc-spec-head { + display: flex; align-items: center; justify-content: space-between; + gap: 0.75rem; padding: 0.9rem 1.1rem; + border-bottom: 1px solid rgba(74, 102, 216, 0.18); + background: linear-gradient(180deg, rgba(74, 102, 216, 0.08), rgba(20, 19, 26, 0.6)); + } + .acc-spec-head h3 { + margin: 0; font-size: 0.95rem; font-weight: 600; + color: #FFFFFF; letter-spacing: -0.005em; + } + .acc-spec-variants { + display: flex; gap: 0.4rem; flex-wrap: wrap; + } + .acc-spec-variant { + font-size: 0.6rem; font-weight: 800; + letter-spacing: 0.22em; text-transform: uppercase; + color: color-mix(in srgb, var(--acc) 70%, white); + padding: 0.22rem 0.55rem; + border-radius: 999px; + border: 1px solid color-mix(in srgb, var(--acc) 38%, transparent); + background: rgba(10, 10, 14, 0.6); + } + .acc-spec-table { + width: 100%; + border-collapse: collapse; + font-size: 0.84rem; + } + .acc-spec-table th, + .acc-spec-table td { + padding: 0.7rem 1.1rem; + text-align: left; + vertical-align: top; + border-bottom: 1px solid rgba(222, 224, 240, 0.06); + } + .acc-spec-table tr:last-child th, + .acc-spec-table tr:last-child td { border-bottom: none; } + .acc-spec-table th { + color: #A6B2D8; + font-weight: 600; + width: 38%; + } + .acc-spec-table td { + color: #DEE0F0; + font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; + font-size: 0.82rem; + letter-spacing: 0.01em; + } + + /* FOOTNOTES + SAFETY */ + .acc-foot { + display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; + padding: clamp(1.2rem, 2.4vw, 1.8rem); + border-radius: 18px; + border: 1px solid rgba(222, 224, 240, 0.10); + background: linear-gradient(180deg, rgba(18, 17, 24, 0.85), rgba(10, 10, 14, 0.94)); + } + @media (min-width: 820px) { .acc-foot { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr); gap: 1.5rem; } } + .acc-foot-block { display: flex; flex-direction: column; gap: 0.55rem; } + .acc-foot-list { + list-style: none; margin: 0; padding: 0; + display: flex; flex-direction: column; gap: 0.45rem; + } + .acc-foot-list li { + color: #C9CCDE; font-size: 0.82rem; line-height: 1.55; + } + .acc-foot-list sup { + color: color-mix(in srgb, var(--acc) 70%, white); + font-weight: 800; + margin-right: 0.25rem; + } + .acc-foot-block p { margin: 0; color: #C9CCDE; font-size: 0.82rem; line-height: 1.55; } + /* RELATED */ .acc-related { display: flex; flex-direction: column; gap: 1.25rem; } .acc-related header { display: flex; flex-direction: column; gap: 0.45rem; } diff --git a/src/app/bu-sunaidah/page.tsx b/src/app/bu-sunaidah/page.tsx index 762dd77..cd45b87 100644 --- a/src/app/bu-sunaidah/page.tsx +++ b/src/app/bu-sunaidah/page.tsx @@ -19,10 +19,13 @@ import { InstagramGlyph } from '@/components/icons/InstagramGlyph'; import { BU_SUNAIDAH_HANDLE, BU_SUNAIDAH_URL, - BU_SUNAIDAH_POSTS, BU_SUNAIDAH_REEL, } from '@/data/bu-sunaidah'; import { BU_SUNAIDAH_PRESS } from '@/data/bu-sunaidah-press'; +import { getLatestBuSunaidahPosts } from '@/lib/bu-sunaidah-fetch'; + +// Re-fetch latest Instagram posts every 30 minutes on the server. +export const revalidate = 1800; export const metadata: Metadata = { title: 'Bu Sunaidah · Emirati Robotics Persona | YS Lootah Robotics', @@ -74,7 +77,8 @@ function formatDate(iso: string): string { } } -export default function BuSunaidahPage() { +export default async function BuSunaidahPage() { + const posts = await getLatestBuSunaidahPosts(9); return ( <> @@ -203,9 +207,9 @@ export default function BuSunaidahPage() { - {BU_SUNAIDAH_POSTS.length > 0 ? ( + {posts.length > 0 ? (
    - {BU_SUNAIDAH_POSTS.map((post) => { + {posts.map((post) => { const kind = post.kind ?? 'p'; const src = `https://www.instagram.com/${kind}/${post.shortcode}/embed/`; return ( @@ -632,10 +636,22 @@ export default function BuSunaidahPage() { border: 1px solid rgba(222, 224, 240, 0.12); background: rgba(14, 13, 18, 0.6); box-shadow: 0 14px 32px rgba(0, 0, 0, 0.45); - aspect-ratio: 4 / 5; + aspect-ratio: 9 / 16; + min-height: 620px; } + /* The Instagram embed iframe ships an in-frame header (avatar + + username + "View profile") at the top. It is cross-origin so we + can't hide it from inside. Workaround: shift the iframe up by + ~54px and let the rounded parent clip it. Adjust if Instagram + changes header sizing. */ .bs-ig-tile iframe { - width: 100%; height: 100%; display: block; border: 0; + position: absolute; + top: -54px; + left: 0; + width: 100%; + height: calc(100% + 54px); + display: block; + border: 0; background: #0a0a0e; } diff --git a/src/app/robots/page.tsx b/src/app/robots/page.tsx index c6aadba..c10d15c 100644 --- a/src/app/robots/page.tsx +++ b/src/app/robots/page.tsx @@ -5,6 +5,7 @@ import { Navbar } from '@/components/Navbar'; import { FooterAndContact } from '@/components/FooterAndContact'; import { CatalogClient } from './CatalogClient'; import { AccessoriesShowcase } from '@/components/robotics/AccessoriesShowcase'; +import { RoboticsSplineShowcase } from '@/components/sections/robotics-spline-showcase'; import { CTAButton } from '@/components/ui/CTAButton'; import { ROBOTS } from '@/data/robots'; import { ACCESSORIES } from '@/data/accessories'; @@ -32,6 +33,11 @@ export default function RobotsPage() {
    + {/* SPLINE SHOWCASE — top-of-page robot + hand animation */} +
    + +
    +
    {/* BREADCRUMBS */}