Skip to content

HITSZ-MAS/STORM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

87 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STORM: Spatial-Temporal Iterative Optimization for Reliable Multicopter Trajectory Generation

Accepted by IROS 2025

Algorithm Framework

Project Structure

Simulation Experiments

simulation1 simulation2
simulation3 simulation4

Real-World Experiments

real world

Complete video: video

To learn more about our project, please refer to our paper on arXiv:

System Architecture

BSpline.py              - B-spline base class and coefficient matrix calculation
cps_optimizer.py        - Control points optimizer
knots_optimizer.py      - Knot time optimizer
optimizer.py            - Iterative optimizer main class
opt_dataloader.py       - ROS data loading and visualization node

Dependencies

Required Packages

# Core numerical computation
numpy>=1.19.0
scipy>=1.5.0

# Optimization solver
cvxopt>=1.2.0

# Symbolic computation (for linearization optimization)
sympy>=1.7.0

# ROS related (only required for opt_dataloader.py)
rospy>=1.15.0
visualization_msgs
geometry_msgs
std_msgs

# Message types (need to compile ROS package)
b_spline.msg
corridor.msg
idx.msg
ctrlpts.msg
plane.msg

Install Dependencies

pip install numpy scipy cvxopt sympy
# ROS related packages need to be installed via catkin_make or colcon build

Input Format

1. Control Points Input (opt_dataloader.py)

# ROS message format
ctrlpts_msg.x = [x1, x2, ..., xn]  # x coordinate list
ctrlpts_msg.y = [y1, y2, ..., yn]  # y coordinate list  
ctrlpts_msg.z = [z1, z2, ..., zn]  # z coordinate list

2. Corridor Constraints Input

# Each corridor segment contains multiple plane constraints
corridor_msg.corridors = [
    {
        'a': [a1, a2, ...],  # plane normal vector x component
        'b': [b1, b2, ...],  # plane normal vector y component
        'c': [c1, c2, ...],  # plane normal vector z component
        'd': [d1, d2, ...]   # plane distance parameter
    },
    # ... more corridor segments
]

3. Index Input

idx_msg.start_idx = [idx1, idx2, ...]  # corridor segment start index

Output Format

1. Optimized Trajectory

# Returns numpy array with shape (n, 3)
trajectory = [
    [x1, y1, z1],  # 1st trajectory point
    [x2, y2, z2],  # 2nd trajectory point
    ...
    [xn, yn, zn]   # nth trajectory point
]

2. ROS Message Output

# B-spline state message
bspline_msg = {
    'x': [x1, x2, ...],           # trajectory x coordinates
    'y': [y1, y2, ...],           # trajectory y coordinates
    'z': [z1, z2, ...],           # trajectory z coordinates
    'vx': [vx1, vx2, ...],        # velocity x component
    'vy': [vy1, vy2, ...],        # velocity y component
    'vz': [vz1, vz2, ...],        # velocity z component
    'ax': [ax1, ax2, ...],        # acceleration x component
    'ay': [ay1, ay2, ...],        # acceleration y component
    'az': [az1, az2, ...],        # acceleration z component
    'jx': [jx1, jx2, ...],        # jerk x component
    'jy': [jy1, jy2, ...],        # jerk y component
    'jz': [jz1, jz2, ...],        # jerk z component
    'duration': total_time         # total time
}

2. Using ROS Node

# Start ROS node (You need to compile the msg in your own ros package and put the python scripts in the package)
rosrun planner opt_dataloader.py

# Publish input data
rostopic pub /local_planning/init_ctrlpts planner/ctrlpts "..." 
rostopic pub /local_planning/corridor planner/corridor "..."
rostopic pub /local_planning/idx planner/idx "..."

Get in Touch

For any inquiries or more information, please feel free to contact us at:
24S053067@stu.hit.edu.cn

Please kindly star this project and cite out paper if it helps you. Thank you!

@article{zhang2025storm,
  title={STORM: Spatial-Temporal Iterative Optimization for Reliable Multicopter Trajectory Generation},
  author={Zhang, Jinhao and Zhou, Zhexuan and Xia, Wenlong and Gong, Youmin and Mei, Jie},
  journal={arXiv preprint arXiv:2503.03252},
  year={2025}
}

Thank you for your interest!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •