Skip to content
Chris Timperley edited this page Mar 2, 2017 · 18 revisions

Safety Invariants

  • robot must not collide with any objects (binary COLLISION objective)

Quality Attributes

  • accuracy: what is the delta between the robot's believed position and its actual position (upon reaching the goal).

Parameters

Perhaps it makes sense to describe missions using either an XML or JSON format?

  • provide a default configuration for the robot
  • provide a world file (and its associated map file)
  • specify the spawn point for the robot within the world

Measurements

Accuracy

We can measure pose accuracy at any given point by comparing the believed robot pose (provided to /odom) to the ground truth pose (which we can fetch from Gazebo).

  • there's also an amcl_pose
  • how can we fetch the ground truth pose from Gazebo using Python?
  • if the robot is moving, there's always going to be a delta between the believed and ground truth pose, even if the believed position is perfectly accurate, since the robot keeps moving between the two measurements.
  • the standard TurtleBot suffers from sensor drift. The longer it runs for and the further it moves, the delta between its odometry and the ground truth will increase. In practice, we can tackle this through the use of an extended Kalmann filter.

If we only want to measure the difference at a single point within the program, we may be able to use the wait_for_message functionality within rospy. Otherwise, we could set up a continuous monitoring node that observes both the ground truth and believed position and records them (or their differences) to file.

Proximity

How close to the goal did you come?

  • the shortest Euclidean distance doesn't necessarily correspond to the shortest distance that would need to be travelled by the robot.
  • if target X were in the corner of a room, we would be closer to X were we in the corner of the adjoining room, rather than a few meters away in the same room.
Collisions

We need a way to detect and record collisions between the robot and physical objects. For now, we're using the TurtleBot's bumper sensors to detect a collision, although this is far from ideal. These sensors aren't entirely trustworthy, especially when one perturbs the system.

Outcomes

Best described using an algebraic data-type.

  • Crashed
  • TimedOut
  • ReachedGoal with quality attributes (time, distance to goal, positional accuracy)

Possible Missions

  • Find the pizza
  • Find all of the pizzas
  • Escape from the nasty robot

JSON Mission Format