Skip to content

Commit 91cd622

Browse files
authored
Update readme for ActiveRocketPy (#5)
1 parent b434a75 commit 91cd622

1 file changed

Lines changed: 34 additions & 306 deletions

File tree

README.md

Lines changed: 34 additions & 306 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,28 @@
1-
<picture>
2-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/RocketPy_Logo_white.png">
3-
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/RocketPy_Logo_black.png">
4-
<img alt="RocketPy Logo" src="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/RocketPy_Logo_black.png">
5-
</picture>
1+
# ActiveRocketPy
62

7-
<br>
3+
ActiveRocketPy is the enhanced version of [RocketPy](https://github.com/RocketPy-Team/RocketPy), a powerful Python package for simulating the trajectories of high-power rockets. This fork introduces a range of active control and guidance, navigation, and control (GNC) features.
84

9-
[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/RocketPy-Team/rocketpy/blob/master/docs/notebooks/getting_started_colab.ipynb)
10-
[![Documentation Status](https://readthedocs.org/projects/rocketpyalpha/badge/?version=latest)](https://docs.rocketpy.org/en/latest/?badge=latest)
11-
[![PyPI](https://img.shields.io/pypi/v/rocketpy?color=g)](https://pypi.org/project/rocketpy/)
12-
![Conda Version](https://img.shields.io/conda/v/conda-forge/rocketpy?color=g)
13-
[![codecov](https://codecov.io/gh/RocketPy-Team/RocketPy/graph/badge.svg?token=Ecc3bsHFeP)](https://codecov.io/gh/RocketPy-Team/RocketPy)
14-
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)
15-
[![Contributors](https://img.shields.io/github/contributors/RocketPy-Team/rocketpy)](https://github.com/RocketPy-Team/RocketPy/graphs/contributors)
16-
[![Sponsor RocketPy](https://img.shields.io/static/v1?label=Sponsor&message=%E2%9D%A4&logo=GitHub&color=%23fe8e86)](https://github.com/sponsors/RocketPy-Team)
17-
[![Chat on Discord](https://img.shields.io/discord/765037887016140840?logo=discord)](https://discord.gg/b6xYnNh)
18-
[![Instagram](https://img.shields.io/badge/Instagram-E4405F?style=flat&logo=instagram&logoColor=white)](https://www.instagram.com/rocketpyteam)
19-
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=flat&logo=linkedin&logoColor=white)](https://www.linkedin.com/company/rocketpy)
20-
[![DOI](https://img.shields.io/badge/DOI-10.1061%2F%28ASCE%29AS.1943--5525.0001331-blue.svg)](http://dx.doi.org/10.1061/%28ASCE%29AS.1943-5525.0001331)
21-
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/RocketPy-Team/RocketPy)
5+
## Main features (ActiveRocketPy)
6+
1. **Thrust Vector Control (TVC)**
7+
- Implementation of TVC control class
8+
- Feed X & Y gimbal angles through a control function
9+
- Actuator dynamics and limits for realistic TVC simulations (WIP)
2210

23-
# RocketPy
11+
2. **Roll Control**
12+
- Implementation of roll control class
13+
- Feed ideal roll torque through a control function
14+
- Actuator dynamics and limits for realistic roll control simulations (WIP)
2415

25-
RocketPy is the next-generation trajectory simulation solution for High-Power Rocketry. The code is written as a [Python](http://www.python.org) library and allows for a complete 6 degrees of freedom simulation of a rocket's flight trajectory, including high-fidelity variable mass effects as well as descent under parachutes. Weather conditions, such as wind profiles, can be imported from sophisticated datasets, allowing for realistic scenarios. Furthermore, the implementation facilitates complex simulations, such as multi-stage rockets, design and trajectory optimization and dispersion analysis.
16+
3. **Throttle Control**
17+
- Implementation of throttle control class
18+
- Feed throttle percentage through a control function
19+
- Actuator dynamics and limits for realistic throttle control simulations (WIP)
2620

21+
4. **Step simulation**
22+
- Step through the simulation one time step at a time
23+
- Update control inputs and step simulations in loop
2724

28-
## Main features
25+
## Main features (RocketPy)
2926

3027
1. **Nonlinear 6 Degrees of Freedom Simulations**
3128
- Rigorous treatment of mass variation effects
@@ -67,307 +64,38 @@ These powerful features make RocketPy an indispensable tool for high-power rocke
6764

6865
## Validation
6966

70-
RocketPy's features have been validated in our latest [research article published in the Journal of Aerospace Engineering](http://dx.doi.org/10.1061/%28ASCE%29AS.1943-5525.0001331).
71-
72-
The table below shows a comparison between experimental data and the output from RocketPy.
73-
Flight data and rocket parameters used in this comparison were kindly provided by [EPFL Rocket Team](https://github.com/EPFLRocketTeam) and [Notre Dame Rocket Team](https://ndrocketry.weebly.com/).
74-
75-
| Mission | Result Parameter | RocketPy | Measured | Relative Error |
76-
|:-----------------------:|:-----------------------|:---------:|:---------:|:---------------:|
77-
| Bella Lui Kaltbrumn | Apogee altitude (m) | 461.03 | 458.97 | **0.45 %** |
78-
| Bella Lui Kaltbrumn | Apogee time (s) | 10.61 | 10.56 | **0.47 %** |
79-
| Bella Lui Kaltbrumn | Maximum velocity (m/s) | 86.18 | 90.00 | **-4.24 %** |
80-
| NDRT launch vehicle | Apogee altitude (m) | 1,310.44 | 1,320.37 | **-0.75 %** |
81-
| NDRT launch vehicle | Apogee time (s) | 16.77 | 17.10 | **-1.90 %** |
82-
| NDRT launch vehicle | Maximum velocity (m/s) | 172.86 | 168.95 | **2.31 %** |
83-
84-
Over years of development and testing, RocketPy has been validated across an expanding range of flight scenarios.
85-
For more information on these validated flights, visit our [Flight Examples](https://docs.rocketpy.org/en/latest/examples/index.html) page in the documentation.
67+
> WIP
8668
8769
# Documentation
8870

8971
Check out documentation details using the links below:
9072

91-
- [User Guide](https://docs.rocketpy.org/en/latest/user/index.html)
92-
- [Code Documentation](https://docs.rocketpy.org/en/latest/reference/index.html)
93-
- [Development Guide](https://docs.rocketpy.org/en/latest/development/index.html)
94-
- [Technical Documentation](https://docs.rocketpy.org/en/latest/technical/index.html)
95-
- [Flight Examples](https://docs.rocketpy.org/en/latest/examples/index.html)
96-
97-
<br>
98-
99-
# Join Our Community!
100-
101-
RocketPy is growing fast! Many university groups and rocket hobbyists have already started using it. The number of stars and forks for this repository is skyrocketing. And this is all thanks to a great community of users, engineers, developers, marketing specialists, and everyone interested in helping.
73+
- [RocketPy User Guide](https://docs.rocketpy.org/en/latest/user/index.html)
74+
- [RocketPy Code Documentation](https://docs.rocketpy.org/en/latest/reference/index.html)
75+
- [RocketPy Development Guide](https://docs.rocketpy.org/en/latest/development/index.html)
76+
- [RocketPy Technical Documentation](https://docs.rocketpy.org/en/latest/technical/index.html)
77+
- [RocketPy Flight Examples](https://docs.rocketpy.org/en/latest/examples/index.html)
10278

103-
If you want to be a part of this and make RocketPy your own, join our [Discord](https://discord.gg/b6xYnNh) server today!
104-
105-
<br>
106-
107-
# Previewing
108-
109-
You can preview RocketPy's main functionalities by browsing through a sample notebook in [Google Colab](https://colab.research.google.com/github/RocketPy-Team/rocketpy/blob/master/docs/notebooks/getting_started_colab.ipynb). No installation is required!
110-
111-
When you are ready to run RocketPy locally, you can read the *Getting Started* section!
11279

11380
<br>
11481

11582
# Getting Started
11683

11784
## Quick Installation
11885

119-
To install RocketPy's latest stable version from PyPI, just open up your terminal and run:
86+
To install ActiveRocketPy, run the following commands in your terminal:
12087

12188
```shell
122-
pip install rocketpy
123-
```
124-
125-
For other installation options, visit our [Installation Docs](https://docs.rocketpy.org/en/latest/user/installation.html).
126-
To learn more about RocketPy's requirements, visit our [Requirements Docs](https://docs.rocketpy.org/en/latest/user/requirements.html).
127-
128-
## Running Your First Simulation
129-
130-
In order to run your first rocket trajectory simulation using RocketPy, you can start a Jupyter Notebook and navigate to the `docs/notebooks` folder. Open `getting_started.ipynb` and you are ready to go. We recommend that you read the [First Simulation](https://docs.rocketpy.org/en/latest/user/first_simulation.html) page to get a complete description.
131-
132-
Otherwise, you may want to create your own script or your own notebook using RocketPy. To do this, let's see how to use RocketPy's four main classes:
133-
134-
- `Environment` - Keeps data related to weather.
135-
- `Motor` - Subdivided into `SolidMotor`, `HybridMotor` and `LiquidMotor`. Keeps data related to rocket motors.
136-
- `Rocket` - Keeps data related to a rocket.
137-
- `Flight` - Runs the simulation and keeps the results.
138-
139-
The following image shows how the four main classes interact with each other:
140-
141-
![Diagram](https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/Fluxogram-Page-2.svg)
142-
143-
A typical workflow starts with importing these classes from RocketPy:
144-
145-
```python
146-
from rocketpy import Environment, Rocket, SolidMotor, Flight
89+
git clone https://github.com/<Your-GitHub-Account>/ActiveRocketPy.git
90+
cd ActiveRocketPy
91+
pip install -e . # install the ActiveRocketPy lib in editable mode
92+
pip install -r requirements-optional.txt # install optional requirements
93+
pip install -r requirements-tests.txt # install test/dev requirements
14794
```
14895

149-
An optional step is to import datetime, which is used to define the date of the simulation:
150-
151-
```python
152-
import datetime
153-
```
154-
155-
Then create an Environment object. To learn more about it, you can use:
156-
157-
```python
158-
help(Environment)
159-
```
160-
161-
A sample code is:
162-
163-
```python
164-
env = Environment(
165-
latitude=32.990254,
166-
longitude=-106.974998,
167-
elevation=1400,
168-
)
169-
170-
tomorrow = datetime.date.today() + datetime.timedelta(days=1)
171-
172-
env.set_date(
173-
(tomorrow.year, tomorrow.month, tomorrow.day, 12), timezone="America/Denver"
174-
) # Tomorrow's date in year, month, day, hour UTC format
175-
176-
env.set_atmospheric_model(type='Forecast', file='GFS')
177-
```
178-
179-
This can be followed up by starting a Solid Motor object. To get help on it, just use:
180-
181-
```python
182-
help(SolidMotor)
183-
```
184-
185-
A sample Motor object can be created by the following code:
186-
187-
```python
188-
Pro75M1670 = SolidMotor(
189-
thrust_source="data/motors/cesaroni/Cesaroni_M1670.eng",
190-
dry_mass=1.815,
191-
dry_inertia=(0.125, 0.125, 0.002),
192-
center_of_dry_mass_position=0.317,
193-
grains_center_of_mass_position=0.397,
194-
burn_time=3.9,
195-
grain_number=5,
196-
grain_separation=0.005,
197-
grain_density=1815,
198-
grain_outer_radius=0.033,
199-
grain_initial_inner_radius=0.015,
200-
grain_initial_height=0.12,
201-
nozzle_radius=0.033,
202-
throat_radius=0.011,
203-
interpolation_method="linear",
204-
nozzle_position=0,
205-
coordinate_system_orientation="nozzle_to_combustion_chamber",
206-
)
207-
```
208-
209-
With a Solid Motor defined, you are ready to create your Rocket object. As you may have guessed, to get help on it, use:
210-
211-
```python
212-
help(Rocket)
213-
```
214-
215-
A sample code to create a Rocket is:
216-
217-
```python
218-
calisto = Rocket(
219-
radius=0.0635,
220-
mass=14.426, # without motor
221-
inertia=(6.321, 6.321, 0.034),
222-
power_off_drag="data/rockets/calisto/powerOffDragCurve.csv",
223-
power_on_drag="data/rockets/calisto/powerOnDragCurve.csv",
224-
center_of_mass_without_motor=0,
225-
coordinate_system_orientation="tail_to_nose",
226-
)
227-
228-
buttons = calisto.set_rail_buttons(
229-
upper_button_position=0.0818,
230-
lower_button_position=-0.6182,
231-
angular_position=45,
232-
)
233-
234-
calisto.add_motor(Pro75M1670, position=-1.255)
235-
236-
nose = calisto.add_nose(
237-
length=0.55829, kind="vonKarman", position=1.278
238-
)
239-
240-
fins = calisto.add_trapezoidal_fins(
241-
n=4,
242-
root_chord=0.120,
243-
tip_chord=0.040,
244-
span=0.100,
245-
sweep_length=None,
246-
cant_angle=0,
247-
position=-1.04956,
248-
)
249-
250-
tail = calisto.add_tail(
251-
top_radius=0.0635, bottom_radius=0.0435, length=0.060, position=-1.194656
252-
)
253-
```
254-
255-
You may want to add parachutes to your rocket as well:
256-
257-
```python
258-
main = calisto.add_parachute(
259-
name="main",
260-
cd_s=10.0,
261-
trigger=800, # ejection altitude in meters
262-
sampling_rate=105,
263-
lag=1.5,
264-
noise=(0, 8.3, 0.5),
265-
radius=1.5,
266-
height=1.5,
267-
porosity=0.0432,
268-
)
269-
270-
drogue = calisto.add_parachute(
271-
name="drogue",
272-
cd_s=1.0,
273-
trigger="apogee", # ejection at apogee
274-
sampling_rate=105,
275-
lag=1.5,
276-
noise=(0, 8.3, 0.5),
277-
radius=1.5,
278-
height=1.5,
279-
porosity=0.0432,
280-
)
281-
```
282-
283-
Finally, you can create a Flight object to simulate your trajectory. To get help on the Flight class, use:
284-
285-
```python
286-
help(Flight)
287-
```
288-
289-
To actually create a Flight object, use:
290-
291-
```python
292-
test_flight = Flight(
293-
rocket=calisto, environment=env, rail_length=5.2, inclination=85, heading=0
294-
)
295-
```
296-
297-
Once the Flight object is created, your simulation is done! Use the following code to get a summary of the results:
298-
299-
```python
300-
test_flight.info()
301-
```
302-
303-
To see all available results, use:
304-
305-
```python
306-
test_flight.all_info()
307-
```
308-
309-
Here is just a quick taste of what RocketPy is able to calculate. There are hundreds of plots and data points computed by RocketPy to enhance your analyses.
310-
311-
![6-DOF Trajectory Plot](https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/rocketpy_example_trajectory.svg)
312-
313-
If you want to see the trajectory on Google Earth, RocketPy acn easily export a KML file for you:
314-
315-
```python
316-
test_flight.export_kml(file_name="test_flight.kml")
317-
```
318-
319-
<img alt="6-DOF Trajectory Plot" src="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/trajectory-earth.png" width="501">
320-
32196
# Authors and Contributors
32297

323-
This package was originally created by [Giovani Ceotto](https://github.com/giovaniceotto/) as part of his work at [Projeto Jupiter](https://github.com/Projeto-Jupiter/). [Rodrigo Schmitt](https://github.com/rodrigo-schmitt/) was one of the first contributors. Later, [Guilherme Fernandes](https://github.com/Gui-FernandesBR/) and [Lucas Azevedo](https://github.com/lucasfourier/) joined the team to work on the expansion and sustainability of this project.
324-
325-
Since then, the [RocketPy Team](https://github.com/orgs/RocketPy-Team/teams/rocketpy-team) has been growing fast and our contributors are what makes us special!
326-
327-
## Institutional Contributors
328-
329-
RocketPy extends its gratitude to the following institutions for their support and contributions:
330-
331-
<div>
332-
<a href="https://github.com/Projeto-Jupiter">
333-
<picture align=top>
334-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/institutional/projeto_jupiter_dark.png" height="150px">
335-
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/institutional/projeto_jupiter_light.jpg" height="150px">
336-
<img align=top id="projeto-jupiter-image" alt="Projeto Jupiter Logo" src="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/institutional/projeto_jupiter_light.jpg" height="150px">
337-
</picture>
338-
</a>
339-
<a href="https://github.com/Space-Enterprise-at-Berkeley">
340-
<img align=top alt="Space Enterprise at Berkeley Logo" src="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/institutional/space_enterprise_at_berkeley.jpeg" height="150px">
341-
</a>
342-
<a href="https://www.instagram.com/faradayupv">
343-
<img align=top alt="Faraday Rocketry UPV Logo" src="https://raw.githubusercontent.com/RocketPy-Team/RocketPy/master/docs/static/institutional/faraday_team_logo.jpg" height="150px">
344-
</a>
345-
</div>
346-
347-
## Individual Contributors
348-
349-
RocketPy is also indebted to a growing list of individual contributors who actively participate in its development. These include:
350-
351-
[![GitHub Contributors Image](https://contrib.rocks/image?repo=RocketPy-Team/RocketPy)](https://github.com/RocketPy-Team/RocketPy/contributors)
352-
353-
See a [detailed list of contributors](https://github.com/RocketPy-Team/RocketPy/contributors) who are actively working on RocketPy.
354-
355-
## Supporting RocketPy and Contributing
356-
357-
The easiest way to help RocketPy is to demonstrate your support by starring our repository!
358-
359-
[![starcharts stargazers over time](https://starchart.cc/rocketpy-team/rocketpy.svg)](https://starchart.cc/rocketpy-team/rocketpy)
360-
361-
You can also become a [sponsor](https://github.com/sponsors/RocketPy-Team) and help us financially to keep the project going.
362-
363-
If you are actively using RocketPy in one of your projects, reaching out to our core team via [Discord](https://discord.gg/b6xYnNh) and providing feedback can help improve RocketPy a lot!
364-
365-
And if you are interested in going one step further, please read the [development documentation](https://docs.rocketpy.org/en/latest/development/index.html) to learn more about how you can contribute to the development of this next-gen trajectory simulation solution for rocketry.
366-
367-
## License
368-
369-
This project is licensed under the MIT License - see the [LICENSE.md](https://github.com/RocketPy-Team/RocketPy/blob/master/LICENSE) file for details
370-
371-
## Release Notes
98+
> RocketPy was originally created by [Giovani Ceotto](https://github.com/giovaniceotto/) as part of his work at [Projeto Jupiter](https://github.com/Projeto-Jupiter/). [Rodrigo Schmitt](https://github.com/rodrigo-schmitt/) was one of the first contributors. Later, [Guilherme Fernandes](https://github.com/Gui-FernandesBR/) and [Lucas Azevedo](https://github.com/lucasfourier/) joined the team to work on the expansion and sustainability of this project.
99+
> Since then, the [RocketPy Team](https://github.com/orgs/RocketPy-Team/teams/rocketpy-team) has been growing fast and our contributors are what makes us special!
372100
373-
Want to know which bugs have been fixed and the new features of each version? Check out the [release notes](https://github.com/RocketPy-Team/RocketPy/releases).
101+
ActiveRocketPy is forked and maintained by [ZuoRen Chen](https://github.com/zuorenchen), along with the team from [Advanced Rocket Research Center (ARRC)](https://github.com/ARRC-Rocket).

0 commit comments

Comments
 (0)