Files
UoL/CM3020 Artificial Intelligence/Week 7/Week 7 Notes.md
2022-12-09 17:35:20 -05:00

67 lines
1.8 KiB
Markdown

# Key components in the creatures system
Genetic Algorithms (GA) has 3 phases
1. Varied population with heredity
2. Some sort of test (selection)
3. Variations of the winners/survivors (breeding)
> The most creative and challenging parts of programming a GA are usually the problem specific aspects - Hervey, Inman (2009)
We will roughly follow Sims, but with simplifications
We'll use the URDF format
We don't have a CM-5 handy, or access to the original Sims code, we'll use an alternative physics engine.
### Genotype
We'll follow Sims somewhat, but with simplifications.
### Fitness function
How far does it move?
But... they are going to cheat!
### Population model
Roulette wheel selection etc.
### Compute in parallel
We can gain a lot of speed by computing in parallel
### Technology stack
* Python
* Pybullet
* URDF format
# Introduction to pybullet
### What is bullet
It's a rigid and soft body physics engine originally developed by Erwin Coumans.
### Demo
It's written in C and C++. It's been translated to JS in ammo.js
http://kripken.github.io/ammo.js/
### Install pybullet
* Create the virtual env and install pybullet
# The URDR file format
Stands for Unified Robot Description Format
It's an XML-based file format for building robot models, including their motors and other dynamics.
To generate a model programmatically is too complex when the problem has a currently viable solution.
Using URDF makes it easier to share the models.
Links are the parts, joints are the points where the parts meet and interact.
# Moving a URDF robot
There are 3 types of joints available in pybullet, though the URDF standard supports more. These are:
* JOINT_REVOLUTE: rotate
* JOINT_PRISMATIC: move along an axis
* JOINT_FIXED: does not move
# Mving a preset robot
Joint info
* getNumJoints
* getJointInfo