ApexDrive ⚡
Universal High-Performance Robotics Actuator & Motor Control Engine
Hard Real-Time 25 kHz FOC • Sub-Microsecond eFuse Protection • 1 kHz Compliant Impedance API • CAN-FD / EtherCAT
🚀 Key Features
- ⚡ 25 kHz Zero-Allocation FOC Core: Space Vector Modulation (SVPWM) with 3rd-harmonic neutral point shift (+15.4% DC bus utilization).
- 🛡️ Sub-Microsecond Hardware eFuse: Instantaneous overcurrent circuit breaker (< 50ns) and real-time $I^2t$ thermal energy accumulator.
- 🤖 Native Compliant Impedance Control: Virtual programmable spring-damper model ($K_p, K_d, \tau_{ff}$) designed for humanoids and quadrupeds.
- 🔧 10-Second Auto-Tuner: Automated measurement of phase resistance ($R$), inductance ($L$), flux constant ($K_t$), and 360° anti-cogging ripple cancellation.
- 📦 Bit-Packed CAN-FD Protocol: Ultra-compact 8-byte frames for multi-axis daisy-chained joint synchronization.
- 📼 Edge Flight Recorder: Continuous 25 kHz circular in-memory ring buffer capturing pre- and post-incident forensic telemetry.
🛠️ Quickstart (Building from Source)
# Clone the repository
cd /Users/himand/apexdrive
# Build C++ Library, CLI, and Test Suite
mkdir build && cd build
cmake ..
make -j$(nproc)
# Run the unit test suite
./test_suite
💻 CLI Commands
# Scan the CAN-FD bus for connected joint actuators
./apexdrive scan
# Run 10-second automated electrical and anti-cogging calibration
./apexdrive tune --id 0x14
# Launch real-time terminal telemetry HUD and oscilloscope
./apexdrive monitor --id 0x14
# Dump forensic flight black-box incident report
./apexdrive dump-blackbox
# Run 100,000-cycle deterministic timing and FOC benchmark
./apexdrive bench
🦾 C++20 Client Integration Example
#include <apexdrive/host/actuator.hpp>
#include <iostream>
int main() {
// Connect to Joint 0x14 on CAN-FD bus
apexdrive::Actuator knee("can0", 0x14);
knee.Arm();
// 1 kHz Compliant Control Loop
while (true) {
float target_pos_rad = 1.57f; // 90 degrees
float target_vel_rad_s = 0.0f;
float stiffness_kp = 45.0f; // 45 Nm/rad
float damping_kd = 2.5f; // 2.5 Nm/(rad/s)
float tau_feedforward = 5.0f; // Gravity compensation
knee.SetImpedance(target_pos_rad, target_vel_rad_s, stiffness_kp, damping_kd, tau_feedforward);
auto state = knee.GetState();
std::cout << "Knee Position: " << state.position_rad
<< " rad | Torque: " << state.torque_nm << " Nm\n";
}
}
🐍 Python SDK Integration
import apexdrive
joint = apexdrive.Actuator("can0", node_id=0x14)
joint.arm()
# Set compliant impedance
joint.set_impedance(pos_rad=1.57, kp=40.0, kd=2.0, tau_ff=3.0)
state = joint.get_state()
print(f"Angle: {state.position_rad:.3f} rad | Temp: {state.temperature_c:.1f} °C")
📄 License
Apache 2.0 / Commercial Dual-License.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
apexdrive-1.0.0.tar.gz
(4.1 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apexdrive-1.0.0.tar.gz.
File metadata
- Download URL: apexdrive-1.0.0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f67d572be8a877954b2e0b6fb565384ff7f3bd90160b4d8262e08d196b1e253
|
|
| MD5 |
e8c1df2643026ffbd438185c5ee8d26f
|
|
| BLAKE2b-256 |
3d6d89fc135f75dbe90e30bdb7b09088a2f0c87d89a1523c4d9c993a49bd769c
|
File details
Details for the file apexdrive-1.0.0-py3-none-any.whl.
File metadata
- Download URL: apexdrive-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e785605398922bd9e8da94cc827d28e6814386077cb9d3525ba828070ea11981
|
|
| MD5 |
b3bec66d7648365bda14144faa42ee1c
|
|
| BLAKE2b-256 |
f72541b403784780f8d4cea8c30077e96993be2434934f45de51f2088062f5d4
|