Skip to content
This repository has been archived by the owner on Oct 25, 2023. It is now read-only.

Roadmap 2019 (Draft)

Pierre Laclau edited this page Aug 27, 2018 · 1 revision

Chapter 1 : Transition to version 2

1. General cleanup

  • AI
    • Scheduler: Subscribe and wait for a message to have the right attributes until timeout
    • game_status: blocking arming step
  • Navigator
    • Option to disable pathfinder
    • Respond "success" when asked to go where the robot already is (+- 5mm)
    • If start or end position is invalid, no need to retry
    • Moving close to an edge, or getting out when robot position is inside a wall impossible
    • Show in Rviz when no path found
  • Collisions
    • Migration to C++
    • Selectable sources
  • Sensors
    • Ability to disable layers and/or individual sensors everywhere (belt, lidar, collisions)
    • objects_classifier destroys object when inside the robot
  • Actuators
    • Actuators/ax12 link
    • Startup sequence
    • Create generate_arduino.sh for roslib

2. Nice Rviz

  • Panel for lidar_objects
  • Obstacles markers displayed by obstacles_classifier, not collisions
  • Nice robot STL
  • Navigator displays the current navigation direction (forwards/backwards)
  • Interactive markers ?
  • TF visual tweaking (e.g. to easily setup the laser frame)
  • Collisions highlights dangerous objects
  • Display current path

3. Packages reorganization

  • No more namespace_ in the package names
  • Relative message paths
  • ai_game_status + ai_timer = ai_game_game_manager
  • New map strategy (static objects only, no more JSON)
  • Extended objects_classifier to new recognizer node
  • Nodes grouping into fewer packages

4. Development workflow

  • Robots connect to a WiFi hotspot
  • Test SCP workflow
  • Cross-platform CI/CD compilation ?

Chapter 2 : A stable system

1. Precise navigation

Asserv

  • Adjust PIDs (zero-or-full speed and no wobbling)
  • Smart PWM™ ability + handle simulation
  • ROS position back to asserv connection (option to SetPos only X, Y and/or A)

Localization

  • IMU angle connection to localizer
    • Kalman filter on localizer

Displacement

  • Implement displacement moments in scheduler
  • Bump displacement method (Smart PWM™)
  • LiDAR displacement method (wall, corner)

2. Intelligent navigation

Navigator & asserv

  • Adjustable navigation speed
    • Scheduler option
    • Autonomous decision : if the travel is near an object, approaching a waypoint, short distance then navigate slowly
  • Pathfinder modes : consider all objects, all except game objects, only the enemy, no pathfinder…
  • Correct simulation when Smart PWM, bumping into a wall

Pathfinder

  • Gives the turning direction for each waypoint
  • Implement target_frame (+ offset) attributes for the navigation goal
  • Automatic waypoint approach
  • Backwards ability (after a collision & regular navigation)
  • Speed management during collisions
  • Pathfinder loginfo time statistics, logerr path not found…

3. Remade Sensors stack

Sensors & processing

  • Simplified map : only holds static objects and waypoints, GET/SET not based on JSON anymore…
  • objects_classifier generalized to objects_recognizer, outputs all vision objects from belt/LiDAR with labels (wall, robot, cube…)
    • Display labels in Rviz (+ change colors)
  • belt_interpreter generalized to range_filler, supports 1D sensors (alone for displacement or arrays for the belt)

Collisions

  • Options to ignore layers or sensors
  • Feed obstacles from obstacles_classifier, not map
  • Get static objects from map

4. Nice touches

  • Beautiful Rviz
  • HMI
  • Button to restart the whole system
  • LEDs and confirmation for 12V
  • Team indication on all screens
  • Connect everything directly to the RPi ?

5. Adaptive AI

  • Implement task pauses and resumes (resume only at the end of the regular tree)
  • Feed task responses into other tasks' requests
    • Conditions before task executing

6. Buddy communication

  • Implement full communication between two robots (multi-frequency!)
  • Feed the robots' positions to the collisions nodes.

Chapter 3 : Making it Badass

1. Navigation

  • Put the robot (almost) anywhere on the table and it will find its position & move to the spawn

2. Enemy tracking

  • Disable scheduler actions based on the enemy's position
  • Predict whole enemy navigation paths (=> better collisions management)

3. Badass AI

  • Simultaneous tasks (TODO needed?)

4. Displacement

  • Navigation strategies for displacement corrections
  • LiDAR displacement on corners

5. Vision

  • Camera support
  • Industrial displacement sensors