pendsim: Developing, Simulating, and Visualizing Feedback Controlled Inverted Pendulum Dynamics Article Swipe
YOU?
·
· 2023
· Open Access
·
· DOI: https://doi.org/10.21105/jose.00168
This is a zip archive of the Git repository containing pendsim. This archive is submitted here after the recent acceptance of our paper for publication in the Journal of Open Source Education. The pendsim Python package is a companion tool for exploring dynamics, control, and machine learning for the canonical cart-and-pendulum system. It includes a software simulation of the cart-and-pendulum system, a visualizer tool to create animations of the simulated system, and sample implementations for controllers and state estimators. The user can use any platform or the browser to run the pendsim Python package. It gives the user a plug-and-play sandbox to design and analyze controllers for the inverted pendulum, and is compatible with Python’s rich landscape of third-party scientific programming and machine learning libraries. The package is useful for a wide range of curricula, from introductory mechanics to graduate-level control theory. The inverted pendulum is a canonical example in control theory (See, e.g. (Aström & Murray, 2008)). A set of example notebooks provide a starting point for introductory and graduate-level topics.
Related Topics
- Type
- article
- Language
- en
- Landing Page
- https://doi.org/10.21105/jose.00168
- https://jose.theoj.org/papers/10.21105/jose.00168.pdf
- OA Status
- diamond
- References
- 2
- Related Works
- 10
- OpenAlex ID
- https://openalex.org/W4323073595
Raw OpenAlex JSON
- OpenAlex ID
-
https://openalex.org/W4323073595Canonical identifier for this work in OpenAlex
- DOI
-
https://doi.org/10.21105/jose.00168Digital Object Identifier
- Title
-
pendsim: Developing, Simulating, and Visualizing Feedback Controlled Inverted Pendulum DynamicsWork title
- Type
-
articleOpenAlex work type
- Language
-
enPrimary language
- Publication year
-
2023Year of publication
- Publication date
-
2023-03-04Full publication date if available
- Authors
-
Mike Sutherland, David CoppList of authors in order
- Landing page
-
https://doi.org/10.21105/jose.00168Publisher landing page
- PDF URL
-
https://jose.theoj.org/papers/10.21105/jose.00168.pdfDirect link to full text PDF
- Open access
-
YesWhether a free full text is available
- OA status
-
diamondOpen access status per OpenAlex
- OA URL
-
https://jose.theoj.org/papers/10.21105/jose.00168.pdfDirect OA link when available
- Concepts
-
Inverted pendulum, Dynamics (music), Pendulum, Computer science, Open source, Control theory (sociology), Physics, Artificial intelligence, Acoustics, Control (management), Nonlinear system, Software, Programming language, Quantum mechanicsTop concepts (fields/topics) attached by OpenAlex
- Cited by
-
0Total citation count in OpenAlex
- References (count)
-
2Number of works referenced by this work
- Related works (count)
-
10Other works algorithmically related by OpenAlex
Full payload
| id | https://openalex.org/W4323073595 |
|---|---|
| doi | https://doi.org/10.21105/jose.00168 |
| ids.doi | https://doi.org/10.21105/jose.00168 |
| ids.openalex | https://openalex.org/W4323073595 |
| fwci | 0.0 |
| type | article |
| title | pendsim: Developing, Simulating, and Visualizing Feedback Controlled Inverted Pendulum Dynamics |
| biblio.issue | 61 |
| biblio.volume | 6 |
| biblio.last_page | 168 |
| biblio.first_page | 168 |
| topics[0].id | https://openalex.org/T11195 |
| topics[0].field.id | https://openalex.org/fields/18 |
| topics[0].field.display_name | Decision Sciences |
| topics[0].score | 0.7034000158309937 |
| topics[0].domain.id | https://openalex.org/domains/2 |
| topics[0].domain.display_name | Social Sciences |
| topics[0].subfield.id | https://openalex.org/subfields/1803 |
| topics[0].subfield.display_name | Management Science and Operations Research |
| topics[0].display_name | Simulation Techniques and Applications |
| is_xpac | False |
| apc_list | |
| apc_paid | |
| concepts[0].id | https://openalex.org/C192921069 |
| concepts[0].level | 3 |
| concepts[0].score | 0.800871729850769 |
| concepts[0].wikidata | https://www.wikidata.org/wiki/Q550134 |
| concepts[0].display_name | Inverted pendulum |
| concepts[1].id | https://openalex.org/C145912823 |
| concepts[1].level | 2 |
| concepts[1].score | 0.6519692540168762 |
| concepts[1].wikidata | https://www.wikidata.org/wiki/Q113558 |
| concepts[1].display_name | Dynamics (music) |
| concepts[2].id | https://openalex.org/C110639684 |
| concepts[2].level | 2 |
| concepts[2].score | 0.6070573329925537 |
| concepts[2].wikidata | https://www.wikidata.org/wiki/Q20702 |
| concepts[2].display_name | Pendulum |
| concepts[3].id | https://openalex.org/C41008148 |
| concepts[3].level | 0 |
| concepts[3].score | 0.5248539447784424 |
| concepts[3].wikidata | https://www.wikidata.org/wiki/Q21198 |
| concepts[3].display_name | Computer science |
| concepts[4].id | https://openalex.org/C3018397939 |
| concepts[4].level | 3 |
| concepts[4].score | 0.49846625328063965 |
| concepts[4].wikidata | https://www.wikidata.org/wiki/Q3644502 |
| concepts[4].display_name | Open source |
| concepts[5].id | https://openalex.org/C47446073 |
| concepts[5].level | 3 |
| concepts[5].score | 0.3341757655143738 |
| concepts[5].wikidata | https://www.wikidata.org/wiki/Q5165890 |
| concepts[5].display_name | Control theory (sociology) |
| concepts[6].id | https://openalex.org/C121332964 |
| concepts[6].level | 0 |
| concepts[6].score | 0.29679954051971436 |
| concepts[6].wikidata | https://www.wikidata.org/wiki/Q413 |
| concepts[6].display_name | Physics |
| concepts[7].id | https://openalex.org/C154945302 |
| concepts[7].level | 1 |
| concepts[7].score | 0.13452568650245667 |
| concepts[7].wikidata | https://www.wikidata.org/wiki/Q11660 |
| concepts[7].display_name | Artificial intelligence |
| concepts[8].id | https://openalex.org/C24890656 |
| concepts[8].level | 1 |
| concepts[8].score | 0.07671445608139038 |
| concepts[8].wikidata | https://www.wikidata.org/wiki/Q82811 |
| concepts[8].display_name | Acoustics |
| concepts[9].id | https://openalex.org/C2775924081 |
| concepts[9].level | 2 |
| concepts[9].score | 0.07596322894096375 |
| concepts[9].wikidata | https://www.wikidata.org/wiki/Q55608371 |
| concepts[9].display_name | Control (management) |
| concepts[10].id | https://openalex.org/C158622935 |
| concepts[10].level | 2 |
| concepts[10].score | 0.06851369142532349 |
| concepts[10].wikidata | https://www.wikidata.org/wiki/Q660848 |
| concepts[10].display_name | Nonlinear system |
| concepts[11].id | https://openalex.org/C2777904410 |
| concepts[11].level | 2 |
| concepts[11].score | 0.06243473291397095 |
| concepts[11].wikidata | https://www.wikidata.org/wiki/Q7397 |
| concepts[11].display_name | Software |
| concepts[12].id | https://openalex.org/C199360897 |
| concepts[12].level | 1 |
| concepts[12].score | 0.06186932325363159 |
| concepts[12].wikidata | https://www.wikidata.org/wiki/Q9143 |
| concepts[12].display_name | Programming language |
| concepts[13].id | https://openalex.org/C62520636 |
| concepts[13].level | 1 |
| concepts[13].score | 0.0 |
| concepts[13].wikidata | https://www.wikidata.org/wiki/Q944 |
| concepts[13].display_name | Quantum mechanics |
| keywords[0].id | https://openalex.org/keywords/inverted-pendulum |
| keywords[0].score | 0.800871729850769 |
| keywords[0].display_name | Inverted pendulum |
| keywords[1].id | https://openalex.org/keywords/dynamics |
| keywords[1].score | 0.6519692540168762 |
| keywords[1].display_name | Dynamics (music) |
| keywords[2].id | https://openalex.org/keywords/pendulum |
| keywords[2].score | 0.6070573329925537 |
| keywords[2].display_name | Pendulum |
| keywords[3].id | https://openalex.org/keywords/computer-science |
| keywords[3].score | 0.5248539447784424 |
| keywords[3].display_name | Computer science |
| keywords[4].id | https://openalex.org/keywords/open-source |
| keywords[4].score | 0.49846625328063965 |
| keywords[4].display_name | Open source |
| keywords[5].id | https://openalex.org/keywords/control-theory |
| keywords[5].score | 0.3341757655143738 |
| keywords[5].display_name | Control theory (sociology) |
| keywords[6].id | https://openalex.org/keywords/physics |
| keywords[6].score | 0.29679954051971436 |
| keywords[6].display_name | Physics |
| keywords[7].id | https://openalex.org/keywords/artificial-intelligence |
| keywords[7].score | 0.13452568650245667 |
| keywords[7].display_name | Artificial intelligence |
| keywords[8].id | https://openalex.org/keywords/acoustics |
| keywords[8].score | 0.07671445608139038 |
| keywords[8].display_name | Acoustics |
| keywords[9].id | https://openalex.org/keywords/control |
| keywords[9].score | 0.07596322894096375 |
| keywords[9].display_name | Control (management) |
| keywords[10].id | https://openalex.org/keywords/nonlinear-system |
| keywords[10].score | 0.06851369142532349 |
| keywords[10].display_name | Nonlinear system |
| keywords[11].id | https://openalex.org/keywords/software |
| keywords[11].score | 0.06243473291397095 |
| keywords[11].display_name | Software |
| keywords[12].id | https://openalex.org/keywords/programming-language |
| keywords[12].score | 0.06186932325363159 |
| keywords[12].display_name | Programming language |
| language | en |
| locations[0].id | doi:10.21105/jose.00168 |
| locations[0].is_oa | True |
| locations[0].source.id | https://openalex.org/S4210224711 |
| locations[0].source.issn | 2577-3569 |
| locations[0].source.type | journal |
| locations[0].source.is_oa | True |
| locations[0].source.issn_l | 2577-3569 |
| locations[0].source.is_core | True |
| locations[0].source.is_in_doaj | False |
| locations[0].source.display_name | Journal of Open Source Education |
| locations[0].source.host_organization | |
| locations[0].source.host_organization_name | |
| locations[0].license | cc-by |
| locations[0].pdf_url | https://jose.theoj.org/papers/10.21105/jose.00168.pdf |
| locations[0].version | publishedVersion |
| locations[0].raw_type | journal-article |
| locations[0].license_id | https://openalex.org/licenses/cc-by |
| locations[0].is_accepted | True |
| locations[0].is_published | True |
| locations[0].raw_source_name | Journal of Open Source Education |
| locations[0].landing_page_url | https://doi.org/10.21105/jose.00168 |
| locations[1].id | pmh:oai:zenodo.org:7603703 |
| locations[1].is_oa | True |
| locations[1].source.id | https://openalex.org/S4306400562 |
| locations[1].source.issn | |
| locations[1].source.type | repository |
| locations[1].source.is_oa | True |
| locations[1].source.issn_l | |
| locations[1].source.is_core | False |
| locations[1].source.is_in_doaj | False |
| locations[1].source.display_name | Zenodo (CERN European Organization for Nuclear Research) |
| locations[1].source.host_organization | https://openalex.org/I67311998 |
| locations[1].source.host_organization_name | European Organization for Nuclear Research |
| locations[1].source.host_organization_lineage | https://openalex.org/I67311998 |
| locations[1].license | cc-by |
| locations[1].pdf_url | |
| locations[1].version | submittedVersion |
| locations[1].raw_type | info:eu-repo/semantics/other |
| locations[1].license_id | https://openalex.org/licenses/cc-by |
| locations[1].is_accepted | False |
| locations[1].is_published | False |
| locations[1].raw_source_name | The Journal of Open Source Education, (2023-02-03) |
| locations[1].landing_page_url | https://zenodo.org/record/7603703 |
| indexed_in | crossref |
| authorships[0].author.id | https://openalex.org/A5058334551 |
| authorships[0].author.orcid | https://orcid.org/0000-0001-5394-2737 |
| authorships[0].author.display_name | Mike Sutherland |
| authorships[0].countries | US |
| authorships[0].affiliations[0].institution_ids | https://openalex.org/I204250578 |
| authorships[0].affiliations[0].raw_affiliation_string | Department of Mechanical and Aerospace Engineering, University of California, Irvine |
| authorships[0].institutions[0].id | https://openalex.org/I204250578 |
| authorships[0].institutions[0].ror | https://ror.org/04gyf1771 |
| authorships[0].institutions[0].type | education |
| authorships[0].institutions[0].lineage | https://openalex.org/I204250578 |
| authorships[0].institutions[0].country_code | US |
| authorships[0].institutions[0].display_name | University of California, Irvine |
| authorships[0].author_position | first |
| authorships[0].raw_author_name | Mike Sutherland |
| authorships[0].is_corresponding | False |
| authorships[0].raw_affiliation_strings | Department of Mechanical and Aerospace Engineering, University of California, Irvine |
| authorships[1].author.id | https://openalex.org/A5102883661 |
| authorships[1].author.orcid | https://orcid.org/0000-0002-5206-5223 |
| authorships[1].author.display_name | David Copp |
| authorships[1].countries | US |
| authorships[1].affiliations[0].institution_ids | https://openalex.org/I204250578 |
| authorships[1].affiliations[0].raw_affiliation_string | Department of Mechanical and Aerospace Engineering, University of California, Irvine |
| authorships[1].institutions[0].id | https://openalex.org/I204250578 |
| authorships[1].institutions[0].ror | https://ror.org/04gyf1771 |
| authorships[1].institutions[0].type | education |
| authorships[1].institutions[0].lineage | https://openalex.org/I204250578 |
| authorships[1].institutions[0].country_code | US |
| authorships[1].institutions[0].display_name | University of California, Irvine |
| authorships[1].author_position | last |
| authorships[1].raw_author_name | David Copp |
| authorships[1].is_corresponding | False |
| authorships[1].raw_affiliation_strings | Department of Mechanical and Aerospace Engineering, University of California, Irvine |
| has_content.pdf | True |
| has_content.grobid_xml | True |
| is_paratext | False |
| open_access.is_oa | True |
| open_access.oa_url | https://jose.theoj.org/papers/10.21105/jose.00168.pdf |
| open_access.oa_status | diamond |
| open_access.any_repository_has_fulltext | False |
| created_date | 2025-10-10T00:00:00 |
| display_name | pendsim: Developing, Simulating, and Visualizing Feedback Controlled Inverted Pendulum Dynamics |
| has_fulltext | True |
| is_retracted | False |
| updated_date | 2025-11-06T03:46:38.306776 |
| primary_topic.id | https://openalex.org/T11195 |
| primary_topic.field.id | https://openalex.org/fields/18 |
| primary_topic.field.display_name | Decision Sciences |
| primary_topic.score | 0.7034000158309937 |
| primary_topic.domain.id | https://openalex.org/domains/2 |
| primary_topic.domain.display_name | Social Sciences |
| primary_topic.subfield.id | https://openalex.org/subfields/1803 |
| primary_topic.subfield.display_name | Management Science and Operations Research |
| primary_topic.display_name | Simulation Techniques and Applications |
| related_works | https://openalex.org/W962423920, https://openalex.org/W2387968248, https://openalex.org/W2350715914, https://openalex.org/W2120821724, https://openalex.org/W2379529020, https://openalex.org/W2101175215, https://openalex.org/W2893549521, https://openalex.org/W1562157883, https://openalex.org/W2330311678, https://openalex.org/W1992202011 |
| cited_by_count | 0 |
| locations_count | 2 |
| best_oa_location.id | doi:10.21105/jose.00168 |
| best_oa_location.is_oa | True |
| best_oa_location.source.id | https://openalex.org/S4210224711 |
| best_oa_location.source.issn | 2577-3569 |
| best_oa_location.source.type | journal |
| best_oa_location.source.is_oa | True |
| best_oa_location.source.issn_l | 2577-3569 |
| best_oa_location.source.is_core | True |
| best_oa_location.source.is_in_doaj | False |
| best_oa_location.source.display_name | Journal of Open Source Education |
| best_oa_location.source.host_organization | |
| best_oa_location.source.host_organization_name | |
| best_oa_location.license | cc-by |
| best_oa_location.pdf_url | https://jose.theoj.org/papers/10.21105/jose.00168.pdf |
| best_oa_location.version | publishedVersion |
| best_oa_location.raw_type | journal-article |
| best_oa_location.license_id | https://openalex.org/licenses/cc-by |
| best_oa_location.is_accepted | True |
| best_oa_location.is_published | True |
| best_oa_location.raw_source_name | Journal of Open Source Education |
| best_oa_location.landing_page_url | https://doi.org/10.21105/jose.00168 |
| primary_location.id | doi:10.21105/jose.00168 |
| primary_location.is_oa | True |
| primary_location.source.id | https://openalex.org/S4210224711 |
| primary_location.source.issn | 2577-3569 |
| primary_location.source.type | journal |
| primary_location.source.is_oa | True |
| primary_location.source.issn_l | 2577-3569 |
| primary_location.source.is_core | True |
| primary_location.source.is_in_doaj | False |
| primary_location.source.display_name | Journal of Open Source Education |
| primary_location.source.host_organization | |
| primary_location.source.host_organization_name | |
| primary_location.license | cc-by |
| primary_location.pdf_url | https://jose.theoj.org/papers/10.21105/jose.00168.pdf |
| primary_location.version | publishedVersion |
| primary_location.raw_type | journal-article |
| primary_location.license_id | https://openalex.org/licenses/cc-by |
| primary_location.is_accepted | True |
| primary_location.is_published | True |
| primary_location.raw_source_name | Journal of Open Source Education |
| primary_location.landing_page_url | https://doi.org/10.21105/jose.00168 |
| publication_date | 2023-03-04 |
| publication_year | 2023 |
| referenced_works | https://openalex.org/W4238538572, https://openalex.org/W2011301426 |
| referenced_works_count | 2 |
| abstract_inverted_index.A | 155 |
| abstract_inverted_index.a | 2, 34, 51, 58, 95, 127, 143, 161 |
| abstract_inverted_index.It | 49, 91 |
| abstract_inverted_index.in | 22, 146 |
| abstract_inverted_index.is | 1, 11, 33, 108, 124, 142 |
| abstract_inverted_index.of | 5, 17, 25, 54, 64, 114, 130, 157 |
| abstract_inverted_index.or | 82 |
| abstract_inverted_index.to | 61, 85, 98, 135 |
| abstract_inverted_index.Git | 7 |
| abstract_inverted_index.The | 76, 139 |
| abstract_inverted_index.and | 41, 68, 73, 100, 107, 118, 166 |
| abstract_inverted_index.any | 80 |
| abstract_inverted_index.can | 78 |
| abstract_inverted_index.for | 20, 37, 44, 71, 103, 126, 164 |
| abstract_inverted_index.our | 18 |
| abstract_inverted_index.run | 86 |
| abstract_inverted_index.set | 156 |
| abstract_inverted_index.the | 6, 23, 45, 55, 65, 83, 87, 93, 104 |
| abstract_inverted_index.use | 79 |
| abstract_inverted_index.zip | 3 |
| abstract_inverted_index.Open | 26 |
| abstract_inverted_index.e.g. | 150 |
| abstract_inverted_index.from | 132 |
| abstract_inverted_index.here | 13 |
| abstract_inverted_index.rich | 112 |
| abstract_inverted_index.tool | 36, 60 |
| abstract_inverted_index.user | 77, 94 |
| abstract_inverted_index.wide | 128 |
| abstract_inverted_index.with | 110 |
| abstract_inverted_index.& | 152 |
| abstract_inverted_index.(See, | 149 |
| abstract_inverted_index.gives | 92 |
| abstract_inverted_index.paper | 19 |
| abstract_inverted_index.point | 163 |
| abstract_inverted_index.range | 129 |
| abstract_inverted_index.state | 74 |
| abstract_inverted_index.Python | 31, 89 |
| abstract_inverted_index.Source | 27 |
| abstract_inverted_index.create | 62 |
| abstract_inverted_index.design | 99 |
| abstract_inverted_index.recent | 15 |
| abstract_inverted_index.sample | 69 |
| abstract_inverted_index.theory | 148 |
| abstract_inverted_index.useful | 125 |
| abstract_inverted_index.2008)). | 154 |
| abstract_inverted_index.Journal | 24 |
| abstract_inverted_index.Murray, | 153 |
| abstract_inverted_index.analyze | 101 |
| abstract_inverted_index.archive | 4, 10 |
| abstract_inverted_index.browser | 84 |
| abstract_inverted_index.control | 137, 147 |
| abstract_inverted_index.example | 145, 158 |
| abstract_inverted_index.machine | 42, 119 |
| abstract_inverted_index.package | 32, 123 |
| abstract_inverted_index.pendsim | 30, 88 |
| abstract_inverted_index.provide | 160 |
| abstract_inverted_index.sandbox | 97 |
| abstract_inverted_index.system, | 57, 67 |
| abstract_inverted_index.system. | 48 |
| abstract_inverted_index.theory. | 138 |
| abstract_inverted_index.control, | 40 |
| abstract_inverted_index.includes | 50 |
| abstract_inverted_index.inverted | 105, 140 |
| abstract_inverted_index.learning | 43, 120 |
| abstract_inverted_index.package. | 90 |
| abstract_inverted_index.pendulum | 141 |
| abstract_inverted_index.platform | 81 |
| abstract_inverted_index.software | 52 |
| abstract_inverted_index.starting | 162 |
| abstract_inverted_index.canonical | 46, 144 |
| abstract_inverted_index.companion | 35 |
| abstract_inverted_index.dynamics, | 39 |
| abstract_inverted_index.exploring | 38 |
| abstract_inverted_index.landscape | 113 |
| abstract_inverted_index.mechanics | 134 |
| abstract_inverted_index.notebooks | 159 |
| abstract_inverted_index.pendulum, | 106 |
| abstract_inverted_index.simulated | 66 |
| abstract_inverted_index.submitted | 12 |
| abstract_inverted_index.acceptance | 16 |
| abstract_inverted_index.animations | 63 |
| abstract_inverted_index.compatible | 109 |
| abstract_inverted_index.curricula, | 131 |
| abstract_inverted_index.repository | 8 |
| abstract_inverted_index.scientific | 116 |
| abstract_inverted_index.simulation | 53 |
| abstract_inverted_index.visualizer | 59 |
| abstract_inverted_index.controllers | 72, 102 |
| abstract_inverted_index.estimators. | 75 |
| abstract_inverted_index.programming | 117 |
| abstract_inverted_index.publication | 21 |
| abstract_inverted_index.third-party | 115 |
| abstract_inverted_index.<p>The | 29, 122 |
| abstract_inverted_index.(Aström | 151 |
| abstract_inverted_index.introductory | 133, 165 |
| abstract_inverted_index.<p>This | 0 |
| abstract_inverted_index.plug-and-play | 96 |
| abstract_inverted_index.Python’s | 111 |
| abstract_inverted_index.after the | 14 |
| abstract_inverted_index.graduate-level | 136, 167 |
| abstract_inverted_index.implementations | 70 |
| abstract_inverted_index.cart-and-pendulum | 47, 56 |
| abstract_inverted_index.topics.</p> | 168 |
| abstract_inverted_index.Education.</p> | 28 |
| abstract_inverted_index.libraries.</p> | 121 |
| abstract_inverted_index.containing pendsim. This | 9 |
| cited_by_percentile_year | |
| countries_distinct_count | 1 |
| institutions_distinct_count | 2 |
| citation_normalized_percentile.value | 0.03014258 |
| citation_normalized_percentile.is_in_top_1_percent | False |
| citation_normalized_percentile.is_in_top_10_percent | False |