Python Robotics Library Project: Roboscience.org

As we discussed, there are several components to this project.

  1. Textbook Algorithms

    1. Code up the algorithms presented in the text. The list of algorithms is given below in Book algorithms (formulas).
    2. Design a class structure that organizes the methods but is not terribly complex. Provide a consistent interface.
    3. Provide ROS and non-ROS interfaces. Need a clear design for both.

    User Stories - As a user,

    1. I would to import the textbook routines.
    2. I would like use methods with a consistent calling convention.
    3. I would like to call the routines in Python.
    4. I would like to only use scipy stack and the textbook library.
    5. I would like a map object to use for path planning. An external map tool would be nice.
    6. I would like a display tool (openCV or mathplotlib) for maps and paths.
    7. I would like rc control tool.
    8. I would like a control panel to monitor the robot.
  2. Auxiliary functions for Veranda.

    Need to determine which code elements are internal to Veranda and what it uses via ROS.

    1. Create additional robots and drive systems (Front wheel steer, rear wheel … all the drive systems mentioned in Book algorithms (formulas).)
    2. Code up additional sensors.
    3. Support routines such as timers, controls, OpenCV.

    User Stories - As a user,

    1. I would like to have a bunch of robots ready to work with.
    2. I would like a group of sensors to use on the robot.
    3. I would like a group of maps to use.
  3. ROS Packages and Support

    There are a number of ROS1 packages that have not been ported to ROS2. One of the main tools is rviz. The first thing that needs to be done is figure out the landscape. What is being ported or queued to be ported? What is not going to be? What looks stalled? Maybe a port or maybe a rewrite is in order. Rviz was used to monitor a ros collection. Be nice if we could monitor the data on the topics effectively.

    1. Rqt, Rviz
    2. Control panel
    3. ROS1 interface
    4. Robot Designer
    5. SLAM - get some of the SLAM codes working.
    6. Perception - There are some ROS1 packages that support point clouds and object detection.

    User Stories - As a user,

    1. I would like a control panel to view (subscribe to) the data streams (video, IMU, etc).
    2. I would like a control panel to control (publish to) the various command topics. Either real or simulator.
    3. I would like to have the drag and drop interface of the Robot Designer working.
  4. Machine Learning Additions

    Machine learning is entering the field. We want ANN versions of the following algorithms.

    1. filters
    2. planners
    3. vision
    4. kinematics

    This will require some careful design and experimentation.

Book algorithms (formulas)

Non-Veranda versions. Need to resolve a map object used for planners below. Need to have plotting resolved.

  1. Forward Kinematics Two Link Manipulator.
  2. Inverse Kinematics Two Link Manipulator.
  3. Forward and Inverse Kinematics Parallel Two Link. (Separate like above.)
  4. Constant Velocity solution DD robot (Integrated solution from text. Single interval and then a multiple interval version passing intervals and wheel speeds.)
  5. Simple pub-sub examples. Examples of 1-1, 1-2, 2-3, and multiarray.
  6. Forward kinematics DD robot (Discrete formulas/Euler. Single timestep. Then multiple time steps.)
  7. Basic Motion Algorithm. Parameters for turn angle, run distance and errors.
  8. Bugs 1, 2, 3 and Tangent Bug.
  9. Maze escape.
  10. Wave front algorithm.
  11. Inverse Kinematics DD robot.
  12. FK and IK Mecanum.
  13. FK and IK Steered.
  14. Value to PWM, PWM to value (here value is percent of period).
  15. Simulation of sensors (IMUs, encoders).
  16. Interface to sensor - write some high level interfaces to provide a generic sensor interface.
  17. Triangulation using lasers.
  18. Hooks to use OpenCV. What do we need here?
  19. Lane detection code - opencv based.
  20. Traffic sign detector - CNN approach.
  21. CNN based lane detection.
  22. PID control family.
  23. Low and high pass filters.
  24. Weighted Average.
  25. Recursive Filter.
  26. Kalman Filter (Scalar and Vector).
  27. Extended Kalman Filter.
  28. Unscented Filter and Sigma point filter.
  29. Particle filters.
  30. Potential function.
  31. Brushfire algorithm.