Home ]Software ]Curriculum ]Hardware ]Community ][ News ]Publications ]Search ]


Pyro What's new?

To download the latest version, go to pyrorobotics.org/download/. Older versions and misc programs can be found pyrorobotics.org/tars/. Go to Pyro for more information on this project.

This page documents the current version, and a complete history of Pyro.

CVS Development Version

Nothing new yet

5.0.0 Version, Aug 15, 2007

This version should be ready soon.

  1. Updates to Roomba and Create (support for devices, IR, etc)
  2. Bringing Pyro up-to-date with Player/Stage/Gazebo and latest operating systems
  3. Working on yum repository. Issues:
    1. Can't get gazebo started; try building everything from CVS
    2. Needed to chcon -t textrel_shlib_t /usr/lib/python2.5/site-packages/_gazebo.so
    3. can't load stage 2.0.2:
    4. File "/usr/lib/python2.5/site-packages/playerc.py", line 7, in <module>
         import _playerc
      ImportError: /usr/lib/python2.5/site-packages/_playerc.so: undefined symbol: playerc_client_set_request_timeout
      

4.9.3 Version, Feb 12, 2007

  1. added ability for conx to take a list of dicts in setInputs and setTargets
  2. fixed PTZ and Bumpers in Player for Pioneer 3, thanks to Grant Braught at Dickinson.
  3. made conx 11 times faster on backprop problems (versus quickprop) (thanks Jim Marshall)
  4. fixed escaping robot problem from pyrobot simulator
  5. fixed issues with gripper view (thanks Jim Marshall)
  6. working on getting udp vision for Aibo; not finished
  7. support for iRobot's Roomba (thanks James Snow)
  8. support for Parallax's IntelliBrainBot (thanks James Snow)
  9. ability to make "movies" from camera views
  10. wiki document updates (thanks Belinda Thom and Jim Marshall)

4.9.2 Version

  1. New Cascade Correlation network Cascade Correlation Network (thanks to George Dahl)
  2. added Network.addLayerNode("layerName", BIAS, WEIGHTS) in conx

4.9.0 Version

  1. changed hyperbolic tangent error to default to off in conx
  2. added Network.deleteLayerNode("layerName", nodeNum) in conx
  3. Major Aibo fixes
  4. All cameras are now asynchronous--much faster, no lag!
  5. bumper device SCALED on client side
  6. Cascade correlation nearly complete
  7. no more asyncUpdate() just use update() and system will only call asynchronously

Bugs:

  1. if camera is not used, then a c++-level error occurs... why? delete copy?
  2. mouse in 3D view of Pyrobot simulator needs to be hooked up
  3. need views made:
    1. simulation view, stage
    2. blobfinder view, stage
    3. check views, aibo
  4. change to UDP for Aibo communications

Version: 4.8.2, Apr 24, 2006

  1. Added Stereo p2p algorithm
  2. Added Tutorial Camera Fiducials for practicing with indoor aerial robot competition

Version: 4.8.1

Updated the Live CD. April 5, 2006.

  1. Working on cascade correlation...
  2. Working on pyrobot 3D viewer... usable, but missing some items
  3. some bug fixes

Version: 4.8.0

Updated the yum RPM repository. Mar 16, 2006.

  1. Added a PTZ device to Pyrobot Simulator
  2. Added a position device to Pyrobot Simulator (client side, read-only)
  3. Added a Tk3DSimulator view to Pyrobot Simulator (missing mouse 3d support)
  4. Added a Fourway camera that sits atop another camera, and breaks into 4 quad cameras
  5. Fixed a bug in V4L where rgb wasn't recorded correctly (three things cam.format, cam.rgb, and cam._dev.setRGB (now in Device))
  6. Fixed: adding a device in brain now shows it in device GUI picklist (thanks Christine Shannon)
  7. New ptz view for pyrobot
  8. New bulb view for pyrobot
  9. New ir and bumper devices for pyrobot
  10. Added a Myro model

Version: 4.7.0

This was the version distributed at Special Interest Group Computer Science Education, SIGCSE 2005 in Houston, TX.

  1. Conx Python backprop simulator has quickprop (again). It was gone for a few years during a major rewrite, but it is back and fast.
  2. Updated Pyro Live CD
  3. Updated Yum repositories

Version: 4.6.0, Jan 15, 2006

  1. Updated RPM, yum repository, FC3, FC4, and the pyro-windows zip file
  2. Removed Khepera simulator and worlds (can easily do these simulations in Pyrobot Simulator)
  3. Changed communication in Pyrobot Simulator to cut down on network traffic. Most of the CPU time is in simulator (castRay).
  4. Gripper in Pyrobot Simulator can now store/deploy pucks
  5. Added moving grippers to Pyrobot Simulator
  6. Rearranged Conx neural package a little. compute_error() and thus backprop, now sets the targets
  7. conx has .complete property set to 1 when done
  8. conx has two new network types: SigmaNetwork and IncrementalNetwork
  9. new neural examples: sumXor.py, xormedley.py
  10. Fixed a bug in conx (symbolic pattern handling) and added a new way of reporting pattern-based error.
  11. Added camera, gripper, and moveable pucks in the Pyrobot simulator
  12. Added a Device line in GUI to load, select, and view device
  13. Fixed a bug in sensor conversions in meters
  14. Added a NNFindBlob.py brain; updated the GA and GP evolution wiki page (including a bug in evolving XOR)
  15. removed older Braitenberg Vehicle brains, and replaced them with new, general versions.
  16. added to avg: median, middle functions in pyrobot.brain (should be in pyrobot.math?)
  17. In Pyrobot, an annoying bug was squashed. Now, you can close the robots 60001, 60002, and 60003 Pyrobots first, then when you close down 60000 the simulator will close. The problem was that the simulator didn't know that the socket connection was lost, and was hanging. I wondered why it always did that!
  18. A new method to the bulb device was added so that the robot can change the brightness of the bulb. You use like: robot.bulb[0].setBrightness(VAL) where VAL is usually between 0 and 1. Zero is effectively off, and 1 is the default.
  19. bulbs now show up in the GUI and their color reflects their brightness value
  20. bulbs now shine through other robot's bounding boxes. they don't shine through your own box, and they don't shine through walls.
  21. added a range device .span() method that collects sensor readings in an arc. Example: v = min([s.value for s in robot.range.span(45, -45)]) selects the minimum distance for the readings between 45 and -45 around the front of the robot.
  22. added a new Pioneer16SonarDevice class for the Pyrobot Simulator
  23. added new worlds Room.py and BigRoom.py for Pyrobot Simulator
  24. added a simulator variable lightAboveWalls so that lights can shine over walls. See below.
  25. Added a .eval() method for simulation device that takes an expression or a statement to evaluate in the simulator environment. For example: robot.simulation[0].eval("self.lightAboveWalls") will see what the value of the variable lightAboveWalls is (0 by default). To change it, use: robot.simulation[0].eval("self.lightAboveWalls = 1"). Can also change this from the Pyrobot Simulator GUI window menu.

Future Plans:

  1. Need to become player/stage 2.0 compatible (as soon as it is finished). This should fix the gripper and other issues.
  2. Would be cool to have a 100% Python version, even for talking to Player/Stage.

Version: 4.3.0, Apr 24, 2006

This is the version used for the 2005 NEEDS Premier Award copies

  1. Added  Pyro Tutorial Videos so users can get going fast with these "screencasts"
  2. Added firefly model (bulb device that shines with color of robot; light sensor is also a 1-pixel camera) to Pyrobot Simulator
  3. Added a trace path to Pyrobot Simulator
  4. Updated Pyrobot Simulator to run a bit faster (doesn't compute robot rays if not subscribed)
  5. Added a 4.3.0 version for windows, RPM yum repository (fc3 and fc4), Live CD, and tar.gz

Version: 4.2.3, Aug 4, 2005

This is the version used at the 2005 Pyro Workshop at Swarthmore College

  1. Fixed a lag issue with the Khepera by using lock.acquire/release
  2. Fixed a lag issue with Player by forcing a pause after a move()
  3. Slowed the pioneers down a bit
  4. Slowed Khepera down a bit

Version: 4.2.2

  1. Fixed issue with Aibo Find Ball program

Version: 4.2.1

  1. Fixed a bug for Pyro for Windows in Pyrobot Simulator
  2. Fixed a bug in the tree object browser (View) in watching/pasting indexes past 0
  3. Added new tutorial.world (with blobfinder)
  4. Added comments in brain, robot, engine, and device
  5. Added RL brain and TD in pyrobot/brain/
  6. New Live CD; new RPM for pyrobot

Version: 4.1.7, Jul 23, 2005

  1. added device-level properties and methods that mirror those of sensor value. These only work for "all".
  2. fixed device bug in cameras (need to force device to rebuild)
  3. reworked PyrobotSimulator worlds to be easy to adapt
  4. added localized pose in PyrobotSimulator
  5. started thinking about noise models...

Version: 4.1.4

  1. Renamed SymbolicSymulator to PyrobotSimulator
  2. PyrobotSimulator works on non-symbolic worlds too. Written entirely in Python.
    • lights and light sensors
    • sonar
    • easy to create own worlds in Python
    • not quite finished:
      • need to get radius from server
      • need to separate local pose from global pose
      • not optimized at all
      • would be nice to make it Player interface compatible
      • need to add position interface
  3. New command-line interface with readline support
  4. fixed a bug in sensor readings, .angle() was returning in wrong units
  5. expanded "!" commands: "! num-num" range execution, "! string" search, "!!" last execution

Version: 4.1.0, Jul 6, 2005

This was the version used for the AAAI 2005 Tutorial. Also made a new Live CD.

  1. added "!" and "! <NUMBER>" at Pyro command-line, for list-history and execute-history-line respectively.
  2. Removed robot get() and set(). This was a major change, but should create a standard interface.
  3. Made many things simplier. Many tweaks. Some tweaks still need to be made (AIBO, Khepera, and Pioneer loops for example).
  4. Changed device.maxvalue to device.getMaxvalue() and device.setMaxvalue(VALUE). set works in default units.
  5. Cleaned up device and sensor readings. sensors readings now have: .geometry, .value, .hit(), .distance(), and .angle(). Devices don't do sensor readings (much); use the Sensor Reading object.
  6. Sensor reading .hit() is in meters (x, y, thr); device readings are in .rawunits and .maxvalueraw is in .rawunits; robot radius is always in meters.
  7. added robot and brain object viewers as tree.
  8. Added an "unraw" units to go from current units to rawunits for use in setMaxvalue().
  9. Removed "camera" builtin AIBO; use the external AiboCamera.py file for now.
  10. Added TutorialCamera2 device for practicing with vision
  11. Live CD does not contain Gazebo.

Version: 4.0.2

  1. This is the version that is used for the first RPMs.
  2. added propagateFrom in conx (for testing RAAM)
  3. Moved State, Behaviors, and their brains to pyro.brain.behaviors
  4. Fixed a problem in Sensor Position (noise added once, value and distance() give same value now)
  5. Renamed all references of "pyro" to "pyrobot" in the code and program
  6. Support for AIBO using TCP is functional
  7. New Live CD
  8. New distutils build method (thanks George Sakkis!)
  9. New Pythonic range sensor interface refined (suggested by George Sakkis)
  10. New Aibo interface (thanks Ioana Butoi and the Tekkotsu group!)
  11. Changed SRN.setSequenceType() to "ordered-continuous", "random-continuous", "ordered-segmented", or "random-segmented"
  12. Player 1.6, Gazebo 0.5 support (drive a helicpoter from Pyro!)
  13. Player/Stage truth has been replaced with a "simulation" interface. Now you can move any object with robot.simulation.moveObjectTo("objectname", x, y, deg)

Version: 3.6.1

  1. Implemented new Pythonic interface for range sensors
  2. added SensorValue in pyrobot/robot/device.py for handling sensor value methods (distance, position, angle, etc).
  3. Added set Mask Weight in governor
  4. Added net.train(cont=1) for continuing training in conx networks
  5. fixed some bugs in aria and khepera range sensors
  6. All srn networks will need to setSequenceType to "epoch" or "pattern"
  7. Fixed conx bug in setting context activations in SRN.step
  8. Updated pyrobot/brain/sequence examples

Version: 3.6.0

  1. Added get() and set() to brain to bring together mind/body
  2. updated all wiki pages and code examples
  3. Aibo interface nears completion

Version: 3.5.2

  1. Added "Save current config as..." under "File" menu option; defaults to "pyrobot.ini" in current directory.
  2. Added "-i None" option to skip all config files

Version: 3.5.1

  1. Version for Holly's trip to D.C.
  2. Print is now buffered and displayed by proper thread
  3. Added pauses back in after starting device
  4. Missing net.setOrderedInput = 1 in SRN in conx; that could cause problems

Version: 3.5.0

  1. Rewrote tree structure in pyrobot/brain/gp.py (it now should be faster than it was)
  2. Doesn't try to localize PlayerRobot instances that don't have position drivers
  3. Fixed wiki pages on using truth with pucks
  4. Rewrote Genetic Programming module; updated wiki pages somewhat. Need more detail.
  5. Cleaned up Konane Player and symbolic robot
  6. Made all devData['item'] and devDataFunc['item'] available as robot.item, and made symbolic getItem("item") available as devData
  7. Added parser in Genetic Programming pyrobot/brain/gp.y code. Allows evaluation of Lisp syntax strings.
  8. Fixed bug in conx in loadInputsFromFiles
  9. setPose now takes three values rather than triple
  10. renamed update() in FSM brains to step()
  11. added brain.stepCount to count the number of times step() has been called
  12. removed pauses in starting player
  13. added -v gui.sim_start_delay=N to set delay after starting simulator

Version: 3.4.3

  1. A fix in conx.py to allow sequence learning with net.learnDuringSequence = 0.
  2. Konane "reset" button position
  3. Rewrite of conx inner-most loop, step. Fixed a bug in conx that resulted in slightly incorrect training method with previous versions of the SRN. All interactive learning should use step(). All courpus-based training should use train or sweep depending on if you are doing a bunch of epochs, or just one.
  4. Rewrote parts of governor and ravq, which may be ready for prime-time now.
  5. Added pyrobot.tools.circularlist
  6. Updated the neural network modules to reflect any changes.

Version: 3.4.2

  1. New ask() program can ask users for information. See pyrobot/plugins/robot/Player.py for example. Defaults to tty ask() if no gui is loaded.
  2. Removed lame __repr__ (string representations) of pyrobot/brain and pyrobot/robot. Now they show standard reps (like: <pyrobot.robot.aibo.AiboRobot instance at 0xf6ccef8c>).
  3. The Symbolic Simulator - rewrote the robot end; replaced Wumpus Hunter and Vacuum Cleaner with a single SymbolicRobot.py; add support for robot.get("robot/percept"), etc.; all lowercase now
  4. Added Konane (Hawaiian Checkers); See PyroModuleAI:GamePlaying
  5. Fixed some bugs in ga.py and gp.py (Thanks Bill Manaris and crew)
  6. Rewrote pyrobot/brain/ravq.py and pyrobot/brain/governor.py to use pyrobot/tools/circularlist.py; removed governors that weren't being used; made a governor be a GovernorNetwork (self.ravq is a part of the network).
  7. New ask() function in pyrobot.system.share uses GUI, if available

Version: 3.4.0

  1. Using the Sony AIBO Robot - Pyro now runs the Aibo. Has: translate, rotate, and strafe; head has pan, tilt, and roll. Aibo Camera is now complete.
  2. Still need IR and other commands (sound, speech recog, additional motors (tail, ears, etc)).
  3. Khepera default port now /dev/ttyS0
  4. Some speeds up in Pyro vision system

Version 3.3.2

  1. Colorized messages in the Pyro GUI message window
  2. In file load dialog, changed "No help yet available for this file." to "Click 'OK' to load'"
  3. Added load/unload robot/brain from menu
  4. Changed all single-robot Player/Stage robots to talk on port 6665 (rather than sometimes being on 6665 and other 6666). Thanks Jim Marshall for pointing this out!
  5. Updated Moin Moin wiki to now require login for all changes.
  6. Updated Live Pyro CD to 3.3.2.

Version 3.3.1

  1. Removed the dependency on RandomArray in the pyrobot.conx neural network module. This allows Debian users (and all others) to use the latest Numeric, version 23.
  2. Removing a device in Pyro (robot.removeDevice("laser"), for example) when attached to a Player/Stage robot now properly disconnects the device. DEVELOPER TODO: all Player/Stage devices under Pyro are still indexed by 0. This only makes a differences when you are using multiple Player/Stage devices of the same type. This isn't currently an issue in Pyro, but should be fixed. Solution: when adding a device in Pyro via Player, use the next available index number.
  3. Worked around a limitation in Python 2.2 when using the Symbolic Simulator (non-blocking sockets).
  4. Made all simulators take the -g (no graphics) flag, even if they don't respect it.
  5. Removed unused robot code (saphira.py, handyboard.py, etc.)
  6. Removed cleanall from makefiles; started cleanup of makefiles; changed rm to $(RM)
  7. Added assert() in brains to check for required conditions
  8. Added supportedFeatures with "continuous-movement", "odometry", and "range-sensor" so far defined as features
  9. Added a "tab" list-what-can-complete function in the Tk gui. Lists help and completions for objects and inside the get()/set() functions.

TODO: allow generic "camera" to load appropriate default (ie, "V4LCamera", "BlobCamera", "RobocupCamera", etc).

Version 3.3.0

  1. Added "self" in Pyro command line evaluator so that self.get() and self.set() will call self.robot.get() and self.robot.set().
  2. First pass at making Python code work under Windows and Mac OS X
  3. Fixed a bug in tools/options.py
  4. Changed Fake camera so that you can have a camera object completely controlled from Python. Use Fake("", width, height, depth) and camera.vision.set(offset, r, g, b) and camera.vision.set(x, y, r, g, b).
  5. Fixed bug in the blob code of the standard VisonSystem()
  6. Initialized blob data in vision system to all zero's
  7. Base robot class raises an error if PYROBOT is not defined in environment (for use outside main pyro GUI)
  8. Removed 2nd cam from Gazebo pioneer2dxSonars.world
  9. Added a Symbolic Simulator, with Vacuum Cleaner and Wumpus worlds, for use with Russell and Norvig-style agent-based logic exploration. See The Symbolic Simulator for more details.

Version 3.2.3

  1. Fixed a problem introduced in 3.2.2 regarding the Blob Camera.

Version 3.2.2

  1. Fixed a major omission: forgot to put laser in pyrobot/robot/aria.py. To use, you needs Aria 2.2 or greater.
  2. Changed Player robot so that it can run without a "position" device.
  3. Fixed a bug in the removal of devices
  4. Robocup Robot now has a simulated camera
  5. Robocup Robot now has a simple laser scanner
  6. Fixed a bug that prevented Blob cameras from updating faster
  7. Fixed a bug that prevented users from seeing exceptions in devices
  8. Updated The Robocup Simulator to match this version.

TODO: command line expression that causes an exception down deep can't show line of code which caused it, only what the execption was.

TODO: need to make all of the players and goals different colors, based on which team the robot is on. Should make the colors changeable from Python. Need config options for robocup in Makefile.

Version 3.2.1

  1. Fixed the missing goalie issue in pyrobot/robot/robocup.py
  2. Rewrote the Robocup single-brain team organization
  3. Fixed some bad assumptions with ports in robocup.py
  4. Handle all return messages, and store in devData which makes them accessable via robot.get()
  5. Updated The Robocup Simulator to match this version.

Version 3.2.0

  1. Added Robocup compatability. See The Robocup Simulator for more details.
  2. Changed some low-level things to compile under Knoppix (khepera simulator linking issue)
  3. Added new filter: Filter -> Misc -> addNoise for making sim vision more realistic
  4. Removed some imports in pyrobot/gui/TK.py that weren't needed
  5. Added View<Group>.py to devices (where group is All, Back_all, Front, Front_all, Left, and Right)
  6. changed "BUMP" to "STALL" in Tk GUI to make it clear what it means (thanks Thad Blank!)
  7. Added Creative Commons, Attribute + Share-Alike License to Wiki materials

Version 3.1.2

  1. Added push/pop in Finite State Machine
  2. Fixed bug in init in V4L.cpp
  3. Fixed bug in Aria PTZ constructing
  4. Removed a couple of bad Stage worlds
  5. Bootable Live Linux Pyro CD, beta. Based on Knoppix
  6. Fixed Khepera serial port issue (thanks Jim Marshall!)

Version 3.1.1

This was the version used for the 2004 Pyro Workshop.

Version 3.0.3

This was version is a bug fix for 3.0.0.

  1. Fixed bug in get("robot/DEVICE/group") that raised error rather than showing what attributes were available.
  2. Added setable and getable lists in robot for generating errors
  3. Removed * in getAll
  4. moved help("item") to get("item/help")
  5. renamed robot.supports to robot.builtinDevices
  6. Blobfinder data now available in get("devices/camera0/data")
  7. Wiki now has download buttons for included code
  8. Fixed naming in sonar: th => thr
  9. Removed noise in player robot class; moved to player sensors
  10. Added robot.setGroup("sonar0", "odd", (1, 3 ,5)) for defining your own groups

Version 3.0.0

  1. New version for Player/Stage/Gazebo 1.5. Pyro works with Gazebo
  2. Complete rewrite of some major sections. Much functionality is the same. Major differences:
  3. New device path for get()/set().
  4. removed self.getRobot(); now is self.robot
  5. self.robot.get('range', 'value', 'all') is now self.get('robot/range/all/value')
  6. services are now devices
  7. startDevice("ptz") returns a device name (ie, "ptz0", "ptz1", etc)
  8. Access device data via: get('robot/ptz/pose'), set('robot/ptz/pan', 30)
  9. All devices are stored in get('devices'); the last loaded device of a particular type is also saved in get('robot/DEVICETYPE').
  10. Player/Aria robots have laser support
  11. robot.getAll(PATH)
  12. robot.help(PATH)
  13. All functionality of player gripper is available via set/get
  14. All getPose/setPose functionality for player devices (ie, truth) available through set/get
  15. can have more than one device of a type (if you actually have them)
  16. All devices have standard types (camera, ptz, graph, etc)

Not quite done in Pyro 3.0.0

  1. Aria - missing some device functionality
  2. Saphira - not started
  3. Aria bug when load device before brain?! Locks Python
  4. Can't delete a robot; just stop/start Pyro
  5. Inspector - not done
  6. Integrated speech - version on PeopleBot
  7. Camera window sometimes doesn't show menu; just drag it bigger
  8. Need to test real Khepera
  9. Would like to test Hemmison, Aibo, and ER1
  10. Set/Get cannot tell the difference between setables and getables. Need to rewrite set/get for the next big version.

Version 2.2.1

  1. Bug fixes for vision system (cleaned up memory leak, etc).
  2. Added ability for Khepera simulator to reposition robot by clicking in run mode
  3. Beefed up Khepera error handling
  4. Edited conx error messages for better understanding of what went wrong
  5. Renamed VisConx files; see Introduction to VisConx
  6. Changed Joystick to allow better control
  7. Camera windows retain aspect ratio
  8. Fixed a major bug that prevented corrected programs from reloading
  9. Updated OpenGL and added a new service GLView that displays the robot in 3D
  10. Added support for sony and canon pan-tilt-zoom (ptz) units

Version 2.2.0

  1. Video windows resizable
  2. New Vision system; no need for locks, system will automatically apply a set of filters. See PyroModuleVisionSystem for more info.
  3. "My Copy" now loads your copy in, and opens it in the editor. If you are running from a terminal, then it will ask before overwriting. Non-terminal use will not overwrite.
  4. New video system: vision code is in C++; separate from V4L; all cameras (blob, v4l, and fake) now work with vision system; new TutorialCamera to go along with Wiki tutorial; interactive system allows setting of filters/exploration of vision components through GUI
  5. added 'maxval'/'maxval' keywords in get(): robot.get('range', 'value', range(4), 'minval') that just returns min/max values. The min/max keywords return both [pos, min/max].
  6. Makefile now automatically makes all Blob and Fake cameras.

Version 2.1.0

  1. Rewrite of Tkinter GUI main loop to make Tk8.4 compatible (Thank you Jeff Provost!)
  2. Basic support for B21R added
  3. PIL Fonts added (for visualiztions)
  4. Start of some visualization tools added (in pyrobot/tools/)
  5. Backward compatibility changes for Tk8.0 (app.wm_state('withdrawn') -> app.withdraw())
  6. added robot.motors(left, right) for differential control paradigm
  7. Fixed some Khepera values (light maxvalue); Khepera sim now loads/saves to Pyro world dir
  8. Fixed some Khepera world files (some still have invisible objects) Thanks Chris Prince for bug report!
  9. startService() now returns a list of services; robot.startService("BlobCamera")[0].makeWindow()
  10. Changed wiki colors so that it shows under some kind of MS web browser called IE 1. New pyrobot/tools/slider.py that allows interactive variable adjustment (inspired by NetLogo and Hannah Wilhelm)
  11. Joystick now shows translate and rotate vectors
  12. "My Copy" in file dialog window (see also PyroForBeginners)

Version 2.0.4

  1. Additional vision enhancements
  2. new FSMBrain with FSMSquare sample
  3. Joystick driving brain (based on pyrobot/tools/joystick.py)
  4. continued RAVQ enhancements
  5. fixes to file load dialog (removed too complex "last directory" logic)

Version 2.0.3

This is the version used for the first Pyro workshop.

  1. Prototype of new C-based vision routines, currently tied to V4L interface
  2. Fixes of the inspector.py
  3. Multitude of bug fixes throughout (some C-based issues with SOM)
  4. Fixed issues with camera window updating and hanging
  5. Menu items to enable/disable Pioneer's motors

Version 2.0.2

  1. Command window now evaluates in a static environment. That means you can do things like:

gripper = robot.getService("gripper")
gripper.open()
gripper.close()

Previously, there was no memory from line to line, so you would have to:

robot.getService("gripper").open()
robot.getService("gripper").close()

You can also "import somemodule" and use it on the command line. Now, Pyro command line is a real Python interpreter.

  1. Command line history is now persistent from session to session. That means that "up arrow" in a Pyro session will retrieve the last line that you typed in, even if you quit Pyro in between. Data saved in ~/.pyrobothist
  2. World files now reside in pyrobot/plugins/worlds/SIMULATORNAME/*.world
  3. Passing -w worldfiles works with all simulator types. Khepera simulator now selects world file when starting
  4. -v flag allows passing in of services to start. Must use -r flag also. Example: pyrobot -r Player1 -v blob,Blobcamera,gripper. See PyroServices for more info. Comma separated.
  5. -a flag passes args to engine. Example: pyrobot -a thisisatest, or pyrobot -a "this is a test". Accessible via engine.args. Example: engine.args.split() => ['this', 'is', 'a', 'test'].
  6. Makefile now builds only desired optional items. "make config" reconfigures a pyro install.
  7. Load window now remembers the last directory that you loaded for each item (robot, brain, map, view, service, sim, and each type of simworld)
  8. Added the ability to specify raw motor values for the Khepera. Use [robot].act('raw_move', left, right), where left and right are integers in the range [-127, 127]. Not for general consumption.
  9. Updated Aria to use new services interface. Added "gripper" and "ptz". gripper matches the Player/Stage interface. Somewhat tested.
  10. Truth service has getPose() and setPose() (which will actually move the robot). Both are in meters. Any Player/Stage service that has a pose get/set command will work.
  11. Fixed bug with "self" in GUI (now refers to brain)

Version 2.0.1

Friday, June 27, 2003

  1. Reworked main Pyro window to be small, but resizeable
  2. Added Devices, Services, Views, and Maps to Load menu.
  3. renamed Plots to Views (anticipating OpenGL view there)
  4. Added Inspector to Help menu
  5. Added "Save Map..." to file menu
  6. Moved menu item "Move" next to "Load" because both are inactive till a robot is active
  7. Double-clicking disabled in File load/save dialogs (due to error on Jeremy's computer)
  8. Menu item "Refresh" renamed "Window"
  9. "Clear Messages" added to Window menu
  10. Global Perceptual Space (map) added to LPSWander; added in pyrobot/gui/gps.py.
  11. Global Perc Space now makes global map when you have perfect sensors and perfect deadreckoning; how useful is that?!
  12. Added Matt's VisConx to CVS
  13. Context layers initialized automatically the first time propagate() is called.
  14. Conx now uses fast Numeric functions for all array operations.
  15. First draft of Services interface is moved camera to services; removed references to devices
  16. Player/Stage speed and timing adjusted a bit. WARNING: THIS CAN EFFECT EXPERIMENTS.
  17. Exception handled better in command window
  18. robot.update() reworked to handle services.update()

Version 2.0.0

Saturday, June 20, 2003

Conx Changes:

  1. Activations not in [0-1] produce warning
  2. Targets not in [0-1] throw exception
  3. Checks arguments to setInputs and setTargets
  4. addSRNLayer -> addThreeLayers
  5. Hidden activations are automatically copied to context layers
  6. New type "kind" attribute for layers
  7. Added prop_from() method
  8. connect() enforces layer and connection order
  9. Connection class matrix attributes transposed, ex. getWeights( from, to )[to][from] -> getWeights( from, to )[from][to]
  10. SRN now has addContext() and copyHiddenToContext() methods.
  11. Network has verifyArchitecture() method for error checking.
  12. Stylistic changes to conx.py
  13. Added new Exception classes and more informative error strings to conx.py
  14. Fixed and modified file IO in conx.py

Other changes:

  1. Fixed most of the know issues in the GUI
  2. Load/reload should work properly
  3. Robot should stop when you press or type "Stop"
  4. Plot (scatter, hinton, etc) windows should go away when you call plot.destroy() in your own brain.destroy() method
  5. Tested setup() - appears to work with and without params
  6. Removed all extra menu items (working out issues between devices and services)
  7. Pyro should hang very rarely now (no more Control+Z, killall -9 pyrobot)
  8. Brain print statements now appear in the Pyro scrollable text area
  9. Player/Stage robots now have communication ability. See PyroModuleMultirobot for example.
  10. Command window now has "self" bound to the current brain. This allows code cut-n-pasted from the brain to work as-is. No more distinction between "self.getRobot()" and "robot".
  11. New map plugin subdirectory; new map classes: pyrobot.map.Map(), pyrobot.map.tkmap.TkMap(), occupancyGrid() and LPS()
  12. Fixed error in Khepera internals; would have effected plotting sensor origins and conversion to meters
  13. Aria/Player/Khepera all now report in same units: x - meters, y - meters, th - degrees. Global th given/set in degrees in range 0-360.
  14. Main Pyro window now resizable
  15. Added Matt's VisConx
  16. Upgraded Pyro to work with new version of Player/Stage. See PlayerStageInstallation.
  17. robot.localize(xMeters, yMeters, thDegrees) now works for all robot types
  18. Fixed pyrobot.map.lps so that it doesn't overwrite hits
  19. Refactored map/__init__.py, map/tkmap.py, LPSWander.py

Version 1.3.4

Monday, June 08 2003

  1. Fixed loading sim/worlds; shows world file in window; asks for world file
  2. Fixed updating unnecessary buttons in Tk gui
  3. Fixed plots in Tk gui; now shows basic plots
  4. Added beginning of Maps menu for visualization; added pyrobot.gui.plots.map. Planning to start OpenGL window from Tk window (as separate window)
  5. Changed window names for easier window viewing/selection
  6. Got rid of Tk window that would appear
  7. Setup can now accept keyword-based args

Version 1.3.3

Friday, June 06 2003

  1. Added Blob Faux Framegrabber interface
  2. renamed Aria gripper functions to standard "gripper" word
  3. moved Player/Stage gripper functions up a level to playerbase robot (and renamed to match Aria)
  4. Removed PTZ from camera class. Will be its own service
  5. Finished converting examples with __init__ -> setup(), dev.gripper, dev.blobfinder

The following should be searched for in the Wiki and changed:

  • You should not be using getSensorGroup (use get() instead)
  • You should not use __init__ in robots or brains (use setup() instead)
  • You should not use robot.dev (use robot.service functions instead)
  • You should not use setQuickProp() in Conx code (just delete it)
  • Remove init_slopes() in Conx code
  • Remove calls to postinit() in any engine code

Version 1.3.2

Thursday, June 05 2003

  1. Added new setup() method to brains and robots. Idea is that you no longer have to define __init__ nor call the parent __init__ if you do. Anything you want in the constructor (like instance vars), put here. (I've converting all examples to this method. -Doug)
  2. New GUI: buttons for each thing to load (sim, robot, brain, camera); scrollable area; disabled buttons until you are ready to pick --- forces ordering
  3. New Blobvision: converts blobdata into an image. Camera -> Load -> Blob
  4. Rewrite of camera window GUI: now can load camera anytime
  5. Start of communication interface
  6. New robot methods: startService, stopService, getServiceData, hasService, sendMessage, getMessages
  7. Colorized term output
  8. Got rid of postinit method in engine (thanks to camera rewrite)

Version 1.2.5

Wednesday, April 30, 2003

  1. When running with "-g tty" and "-e run" the simple tty gui would not stop (because it wasn't in a thread). So, added a new command-line command "runtillquit" that will run the gui till the brain calls self.quit(), and then exit. This is only needed in tty mode when you want the brains to stop the gui.
  2. Added "components" keyword to PCAPlot in pyrobot/tools/cluster/pcaplot.py to allow plotting of different principle components.
  3. Updated Aria robots to use PTZ and gripper
  4. Fixed the GA/GP code
  5. Added -p PORT for stage so that multiusers won't conflict

Version 1.2.4

Monday, April 21, 2003

  1. Changed Makefile to better detect/remove the Khepera plugins/simulator script.
  2. Added Ability for Stage simulator to detect the -g tty setting to run without gui.
  3. Removed Pioneer/Saphira 6.2 code. All Pioneer/Saphira users should upgrade to Aria.
  4. added brain.quit() method so that brains can shutdown the entire gui.
  5. rearranged player: player/playerbase/playerpuck so that playerpuck is a simple thing to connect onto (i.e., for controlling X,Y through "truth" interface.)

Version 1.2.3

Friday, April 18, 2003

  1. Changed interface to loading objects (cameras, brains, robots, plots, etc) to allow access to config information. See PyroSetUp for more details.

Version 1.2.2

Thursday, April 17, 2003

  1. Added -w worldfile flag; loads particular worldfile. Works with Aria, and Stage. Does not work with the Khepera simuator.

Version 1.2.1

Tuesday, April 15, 2003

  1. Added -e "string" flag that allows commands to be sent. string is a semicolon separated list of commands, such as "run; stop; quit"

Version 1.2.0

Monday, April 14, 2003

This version adds full support for Player/Stage and fixes some bugs in the Khepera simulator.

  1. The Khepera simulator had troubles because of the simple shared memory code it had. A slightly better, but still simple, fix allows each user to get their own shared memory. This should prevent two users on the same computer from effecting each other. NOTE: you should close down the system like this: close Pyro window, then click on "run" in the Khepera simulator (so that it is no longer selected), then click on "quit".
  2. There are two Player demonstration robots in pyrobot/plugins/robots. They are named Player1 and Player2. These will connect onto the sample world that is loaded from pyrobot/plugins/simulators/Stage.

Version 1.1.1

Thursday, April 10, 2003

This is a temporary release that supports a live video image. Tk is currently the default window viewer.

  1. -i is now the config flag (was -c). i stands for Init
  2. -c is now the camera flag. Load camera on command line: "-c V4L"
  3. There are now Camera types in pyrobot/plugins/cameras/. Camera is loaded with the -c flag, and lives at robot.camera
  4. Tk is currently default because: Video window seems to conflict with opening Tk windows in a particular order, so it needs to open it first. But, Opengl doesn't work right if it isn't the first thing to open. So, for now, no Opengl window.
  5. Version planned for multirobot module (using USC's Player/Stage). Instructions for setup are currently in PlayerStageInstallation
  6. Added Fake camera (-c Fake)
  7. Added symbolic pattern handling in pyrobot.brain.conx; added example RAAM in wiki PyroRAAMExample
  8. Added Player/Stage robot and simulator

Version 1.0.3

Friday, March 28, 2003

  1. Added pyrobot/tools/cluster treeplot.py and pcaplot.py (see PyroModuleAnalysis for details). Requires Gnuplot.py (see emergent.brynmawr.edu/~dblank/pyrobot/tars/)
  2. Updated plots
  3. Updated BBWander
  4. Updated saphira, aria, ksim, and som SWIG-based code

Version 1.0.2

Wednesday, March 26, 2003

  1. Fixed problems with new SWIG and khepera sim and som
  2. Fixed problem with config and khepera

Version 1.0.1

Tuesday, March 25, 2003

  1. Added configuration support (.pyrobot ini file). See PyroSetUp for details. This is useful if you are running slightly different configs on each machine (for example, the Khepera serial connection is on /dev/ttyS0 on some machines and /dev/ttyS1 on others).
  2. Bug in Khepera's angle of close/far---was backwards from that of Pioneer.
  3. Pyro now interfaces with Aria.

Version 1.0.0

See PyroUpgradingTo1.0 for help on upgrading.

Monday, March 10, 2003

  1. Rewrote main OpenGL loop which removed a few problems:
    1. Window now updates if you issue a direct command to robot from command line
    2. Loop no longer takes 98% of the CPU: now takes closer to 3%
    3. Got rid of "Refresh" button
  2. Rewrote Con-x Backprop stuff
  3. Cleaned up examples. Removed robot.getSensorGroup() interface. Replaced it with robot.get('range', 'value', sensor-group-name)
  4. Added code to all Tk widgets to handle events (this allows the windows to show up in Python interactive mode)
  5. Added support for Aria-based robots.
  6. Upgraded to SWIG-1.3.17 for Aria
  7. Fixed conflicts in old code with new SWIG
  8. Added View item on menu to allow changing view items
    1. added slow, medium and fast update options
  9. Rewrote Conx save to file; now uses pickle
  10. Added ability for Conx to read/write tlearn files
  11. Aria simulator with Pyro is designed to work via TCP ports from the local computer. The port number is based on the UID plus 8000.

Version 0.9.2

Sunday, March 1, 2003

  1. Cleaned up pyrobot/brain/psom/vis.py (moved buttons; removed zeros; show hexagon topology)
  2. Rewrote pyrobot/brain/ga.py and gp.py (genetic systems)
  3. Added support for freezing weights and active layers in Con-x (neural network code)
  4. Fixed additional issues in ga and gp (evolutionary computation)

Version 0.9.1

Sunday, February 9, 2003

  1. Removed unnecessary imports of OpenGL.Tk; changed to Tkinter
  2. Fixed rescale of hinton, matrix, and scatter on redraw
  3. Rewrote scatter to allow xStart, xEnd, yStart, yEnd plot ranges
  4. Added config variable to allow setting python binary precisely
  5. Fixed a bug in pyrobot/robot/__init__.py: reported wrong pos in get(... 'min') and get(... 'max')

Version 0.9.0

Wednesday, January 15 2003

  1. Fixed OpenGL update bug in step() of direct control brain
  2. Added support for EDITOR env variable (see PyroUsersManual too)
  3. Added Update to Move menu
  4. Added "Info", "Usage", and "About" to Help menu, and command line: Info show brain and robot details, inclding filename; About gives URL for Pyro
  5. Removed unnecessary files from CVS and tarfile
  6. Added 3 second pause after simulators start to allow initialization time
  7. Added new get() interface:

robot.get(sensor, value, set[, func])

where set is a tuple, list or named group from getSensorGroup, and func is min, max, or avg.

Examples:

robot.get('sonar', 'value', (3, 5, 7))
   Returns list of those three sonar's range values
robot.get('sonar', 'y', (3,))
   Returns list of that one sonar's y-coord hit value
robot.get('sonar', 'value', (3, 5, 7), 'min')
   Returns the min vector (distance, angle) of those three sensors
robot.get('ir', 'value', 'front')
   Returns list of those IR's range values
robot.get('light', 'x', 'front', 'max')
robot.get('sonar', 'value', range(4), 'avg')

  1. Removed buggy plots from plugins/plots
  2. Renamed 'min' in get() to 'close'; 'max' to 'far', and added 'min'/'max' that returns (pos, dist)
  3. Made "Refresh" also do an update() (so you don't have to click Stop to update)
  4. Changed Makefile/configure to allow explicit naming of Python binary. (Thanks to Chis Couples, Bryn Mawr College sys admin, for testing all manners of possible configs)

Version 0.8.14

Sunday, January 12 2003

  • State.add() method now takes a third parameter that is a dict of effects like: {'translate': .3, 'rotate': .4}. "Name" was moved to the 4th parameter of add(), and all test brains were changed to reflect this (BBTest, BBTest2).
  • If Behavior.IF() names are not specified, then they are assigned a name like "RuleN" where N is the rule number, starting at 1. Rule names are still in the 4th position and optional (this may change). The rule name appears in the Brain->View window for FuzzyBehaviorBasedBrains.

Version 0.8.13

Aug 15, 2002

  • A version of Olivier Michel's Khepera Simulator now accessible from Pyro (it is included in the Pyro files)
  • Example Neural Network brains that can learn to avoid obstacles

Version 0.8.11

July 12, 2002

  • Configure.py called in make; designed to auto config Pyro
  • SOM logging facility
  • Logging class in pyrobot.system.log
  • Resampling method for making images smaller
  • Khepera stall check ability
  • Khepera dead reckoning (alpha version)

Version 0.8.10

July 5, 2002

  • New makefile structure won't compile saphira/pioneer items if you leave SAPHIRA empty.
  • Now edit Makefile.cfg.

Version 0.8.9

June 21, 2002

  • Real-time visualization of self-organizing maps
  • Command-line editing in GUI
  • Brains: NNRandom, NNCluster
  • Requires PIL, Python Image Library


Home ]Software ]Curriculum ]Hardware ]Community ][ News ]Publications ]Search ]

CreativeCommons View Wiki Source | Edit Wiki Source | Mail Webmaster