Project

General

Profile

Navigation component

This is the Navigation component from the GenoM3 OSMOSIS show case.

It navigates in a graph of predefined positions read from a file. Given a Position to reach, it produces successive intermediate positions taken from a navigation Graph, and write them in the Target (out) port, as it reaches them one after another.

  • port Target (out) contains the next position to reach, in this experiment, it is used by PotentialField as an intermediate goal.

  • port Pose (in) contains the current position of the robot.

Note Note that when we use GotoPosition (activity), it looks for the closest nodes to the starting position, navigates to it, then navigates between nodes, and finally from the node closest to the goal, to the goal. When using GotoNode (activity), it navigates from nodes to nodes.

Ports

Pose (in)

Data structure
  • struct ::or_pose_estimator::state Pose

    • struct ::or::time::ts ts

      • long sec

      • long nsec

    • boolean intrinsic

    • optional< struct ::or::t3d::pos > pos

      • double x

      • double y

      • double z

    • optional< struct ::or::t3d::att > att

      • double qw

      • double qx

      • double qy

      • double qz

    • optional< struct ::or::t3d::vel > vel

      • double vx

      • double vy

      • double vz

    • optional< struct ::or::t3d::avel > avel

      • double wx

      • double wy

      • double wz

    • optional< struct ::or::t3d::acc > acc

      • double ax

      • double ay

      • double az

    • optional< struct ::or::t3d::aacc > aacc

      • double awx

      • double awy

      • double awz

    • optional< struct ::or::t3d::pos_cov > pos_cov

      • double cov[6]

    • optional< struct ::or::t3d::att_cov > att_cov

      • double cov[10]

    • optional< struct ::or::t3d::att_pos_cov > att_pos_cov

      • double cov[12]

    • optional< struct ::or::t3d::vel_cov > vel_cov

      • double cov[6]

    • optional< struct ::or::t3d::avel_cov > avel_cov

      • double cov[6]

    • optional< struct ::or::t3d::acc_cov > acc_cov

      • double cov[6]

    • optional< struct ::or::t3d::aacc_cov > aacc_cov

      • double cov[6]

The current position of the robot.


Target (out)

Data structure
  • struct ::or::t3d::pos Target

    • double x

    • double y

    • double z

The position to reach for now.


Services

GetIDS (attribute)

Outputs
  • struct ::Navigation::ids ids

    • struct ::navigation::Path path

      • unsigned long size

      • struct ::navigation::Node seq[40]

        • string name

        • struct ::or::t3d::pos coord

          • double x

          • double y

          • double z

    • long current_index

    • double th

    • struct ::or::t3d::pos target

      • double x

      • double y

      • double z

    • struct ::or::t3d::pos ftarget

      • double x

      • double y

      • double z

    • struct ::or::t3d::pos pose

      • double x

      • double y

      • double z

Get the whole IDS (mostly useful for debuging).


SetTarget (attribute)

Inputs
  • struct ::or::t3d::pos target

    • double x

    • double y

    • double z

Set directly the IDS target.


SetThreshold (attribute)

Inputs
  • double th (default "0.9")

Set the threshold distance at which one has reached the target and should move to the next one.


Stop (function)

Context

Stop the robot.


SetVerbose (function)

Inputs
  • long verbose_level (default "0") Verbose level

Set the verbose level.


SetTargetToCurrentPose (activity)

Throws
  • exception ::Navigation::bad_target_port

  • exception ::Navigation::bad_pose_port

Context

Reset the target to the current position. This is useful when you want to stop the robot


ReadMapGraph (activity)

Inputs
  • string file (default "test.graph") File containing the json graph description.

  • boolean bi_directional (default "1") Are the edges bi directional?

Throws
  • exception ::Navigation::bad_file_name

Context

Read the map graph structure from file.


GotoTarget (activity)

Inputs
  • struct ::or::t3d::pos goto_target

    • double x

    • double y

    • double z

Throws
  • exception ::Navigation::bad_target_port

Context

Goto the target directly, no graph search, and export the port.


GotoPosition (activity)

Inputs
  • struct ::or::t3d::pos fposition: Goto position

    • double x

    • double y

    • double z

Throws
  • exception ::Navigation::bad_target_port

  • exception ::Navigation::bad_pose_port

Context

Produce and execute a plan to reach a final position according to the current graph map.


GotoNode (activity)

Inputs
  • string node (default "N1") Name of the node to navigate too.

Throws
  • exception ::Navigation::bad_node_name

  • exception ::Navigation::bad_target_port

  • exception ::Navigation::bad_pose_port

Context

Produce a plan to reach the named node in the current graph map. Share some codels with GotoPosition (activity).


Tasks

Context
  • Frequency 5.0 Hz