This page is devoted to the Python programming language, including references to tutorials and particular, use of Python in programming robot control systems.
See also: CircuitPython and MicroPython
Upgrading to a Newer Version of Python#
To upgrade to a newer version of Python, e.g., 3.8.5:
sudo apt update sudo apt-get install -y build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev wget https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tgz tar zxf Python-3.8.5.tgz cd Python-3.8.5 ./configure --enable-optimizations make -j4 sudo make installor
sudo make altinstallif you don't want the newly-installed version to be the default.
Replace "3.8.5" above with whatever version you want to install. You can browse the directory at: https://www.python.org/ftp/python
If you're logging into your Pi to do this, it's interesting to run a second session with top or htop running, to watch your Pi's processors working very hard.
Libraries#
- gpiozero, a simple interface to everyday GPIO components used with Raspberry Pi. Installed on Raspbian by default; to install on other OS use: pip3 install gpiozero
- igraph is a collection of network analysis tools with the emphasis on efficiency, portability and ease of use
- NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks. Also see networkx on github.
Multi-Threading and Multi-Processing in Python#
- Python - Multithreaded Programming (TutorialsPoint)
- Threading — Thread-based parallelism (Python documentation)
- An Intro to Threading in Python (Real Python)
- How can I use threading in Python? on StackOverflow
- Parallelism in One Line (multiprocessing in Python, how to avoid boilerplate producer-consumer-queueing code by injecting parallelism into the code using Map, a functional programming concept)
- Multithreading vs Multiprocessing in Python on the Noteworthy blog
Links#
Notes#
Below are some rough notes. This needs to be edited into proper wiki text and links.
Arduino-Powered Robot Solves a Maze Using Subsumption Architecture in C http://www.codingnaked.com/post/arduino-powered-robot-solves-a-maze-using-subsumption-architecture-in-c/ check out: http://www.soerenwalls.com/ who built the robot and wrote the above article On Simple Reactive Neural Networks for Behaviour-Based Reinforcement Learning by Ameya Pore and Gerardo Aragon-Camarasa (Python) https://github.com/cvas-ug/simple-reactive-nn A subsumption-architecture based robot built using the lejos ev3 API. (Java) https://github.com/GitPaulo/lego-robot-A1 Robot Subsumption Controller (alexander-svendsen/ev3-python on github) https://github.com/alexander-svendsen/ev3-python Lab 7: Subsumption architecture, Due April 16 https://www.cs.swarthmore.edu/~meeden/cs63/s15/subsumption.html Playful: Reactive Programming for Orchestrating Robotic Behavior https://www.researchgate.net/publication/325077049_Playful_Reactive_Programming_for_Orchestrating_Robotic_Behavior source: Lisa Meeden, Neil R. Grabois Professor in Natural Sciences and Engineering and Department Chair Swarthmore College, PA https://www.cs.swarthmore.edu/~meeden/ A Developmental Robotics Manifest (Blank, Marshall, Meeden) https://www.cs.swarthmore.edu/~meeden/papers/Manifesto2017.pdf Towards Planning: Incremental Investigations into Adaptive Robot Control Lisa A. Meeden, doctoral thesis https://www.cs.swarthmore.edu/~meeden/papers/meeden.thesis.pdf Emergent Control and Planning in an Autonomous Vehicle Appeared in Proceedings of the Fifteenth Annual Conference of the Cognitive Science Society Lisa Meeden and Gary McGraw and Douglas Blank https://www.cs.swarthmore.edu/~meeden/papers/meeden.cogsci93.pdf which references: https://www.cs.swarthmore.edu/~meeden/cs63/s15/pyrobot.php which references: CS63 Artificial Intelligence Spring 2015 https://www.cs.swarthmore.edu/~meeden/cs63/s15/index.php which references online book: Artificial Intelligence: A Modern Approach http://aima.cs.berkeley.edu/ (online ToC of book, with related resources) https://www.pearsonhighered.com/assets/preface/0/1/3/6/0136042597.pdf (ToC) https://www.cin.ufpe.br/~tfl2/artificial-intelligence-modern-approach.9780131038059.25368.pdf (1995 edition, scanned full text) p.411 subsumption architecture, also discussed in Chapter 25 online code repository: http://aima.cs.berkeley.edu/code.html AIMA Python implementations (with an index of algorithms on that page) https://github.com/aimacode/aima-python