Skip to content

Linear Bot

✓ Python SDK✓ Full Mobile Manipulation✓ Height Adjustment

Linear Bot is the Flow Base combined with a vertical linear rail actuator. The linear rail adds a height axis to the omnidirectional base, enabling the mounted YAM arm to reach objects at varying heights — from floor-level to shelf-height — without repositioning.

System Architecture

┌─────────────────────────┐
│   YAM Arm               │  ← 6-DOF manipulation
├─────────────────────────┤
│   Linear Rail           │  ← Vertical axis (Z height)
├─────────────────────────┤
│   Flow Base             │  ← XY + rotation (holonomic)
└─────────────────────────┘

The three subsystems are controlled together through a unified Python API, giving the robot 9 degrees of freedom (6-DOF arm + 3-DOF mobile base including linear rail).

Key Features

  • Vertical height axis — linear rail extends and retracts under API or remote control
  • Limit switches — hardware safety stops at both rail ends; auto-home on initialization
  • Brake management — brake automatically released on init, engaged on shutdown
  • Integrated API — 4D base velocity commands [x, y, θ, rail_vel]
  • Safety timeouts — both base and rail stop after 0.25 s without a heartbeat

Specifications

ParameterValue
Mobile baseFlow Base (holonomic)
Vertical actuatorLinear rail with DM-series motor
Arm (typical)YAM or YAM Pro
Total DOF (arm + base + rail)9
Rail controlVelocity [rad/s]
Rail velocity timeout0.25 s
Rail homeLower limit (on init)

Photos & Videos

🎬
Video — Coming Soon
Linear Bot navigating to a shelf, extending the rail to the correct height, and using the YAM arm to retrieve an object. Full task, 1–2 minutes.
🎬
Video — Coming Soon
Time-lapse or sped-up footage of Linear Bot performing repeated fetch tasks in a simulated warehouse environment.

Python API

python
from i2rt.flow_base.flow_base_client import FlowBaseClient

client = FlowBaseClient(host="172.6.2.20", with_linear_rail=True)

# Move forward + raise rail simultaneously
client.set_target_velocity([0.1, 0.0, 0.0, 0.05], frame="local")
#                           x    y    θ    rail_vel

# Get rail position and limit switch states
state = client.get_linear_rail_state()
print(state)  # {'position': ..., 'velocity': ..., 'limit_switches': ...}

# Stop rail
client.set_linear_rail_velocity(0.0)

Important Notes

Auto-homing on init

The linear rail homes to the lower limit switch on every initialization. Ensure there is clearance below the carriage before powering on.

Stopping the rail

Always set velocity to 0.0 to stop the rail. Do not try to engage the brake directly — the system manages brake state automatically.

Pricing

Starting at $18,999. Contact sales@i2rt.com for configuration options.

See Also

Released under the MIT License.