Difference between revisions of "Modules - Command Format"

From Asibot & HOAP3 & TEO Wiki
Jump to: navigation, search
(Joint Motion Controllers (JMC))
 
(37 intermediate revisions by 2 users not shown)
Line 2: Line 2:
 
{| class="bluetable" style="width:100%"
 
{| class="bluetable" style="width:100%"
 
|-  
 
|-  
! align="center" | <div style="font-size:162%; border:none; margin:0; padding:.1em; color:#000;">'''Module Standard v0.3''' - Command Format</div>
+
! align="center" | <div style="font-size:162%; border:none; margin:0; padding:.1em; color:#000;">'''Robot Component Guidelines v0.3''' - Command Format</div>
 
|-
 
|-
| The intention of this standard is to keep internal coherence and compatability with RoboticsLab robot Modules which follow this standard (such as [[Asibot - Implemented Modules]]). It corresponds to [[Modules - Standard v0.3|Module Standard v0.3]] and replaces [[Modules - Standard v0.1|v0.1]] and [[Modules - Standard v0.2|v0.2]]. It is intended to be a description of module interfaces and data flow representation. Port interface is referred to TCP/UDP/MCAST/SHMEM ''cloud'' side, not CAN or USB (that can coexist in hardware-related modules). A referenced list of implemented modules should also be included. Be sure to check the [[Modules - Dependency Version]] page too.
+
| The intention of this standard is to keep internal coherence and compatability with RoboticsLab robot Modules which follow this standard (such as [[Asibot - Implemented Modules]]). It corresponds to [[Modules - Guidelines v0.3|Robot Component  Guidelines v0.3]] and replaces [[Modules - Standard v0.1|v0.1]] and [[Modules - Standard v0.2|v0.2]]. It is intended to be a description of module interfaces and data flow representation. Port interface is referred to TCP/UDP/MCAST/SHMEM ''cloud'' side, not CAN or USB (that can coexist in hardware-related modules). A referenced list of implemented modules should also be included. Be sure to check the [[Modules - Dependency Version]] page too.
 
|}
 
|}
  
Line 17: Line 17:
 
   
 
   
 
  In:
 
  In:
  - Stop:             "I:-1"
+
  - General Stop:     "I:-1"
  - Status poll:      "I:0 (S:verb D:''verb''=0)"
+
  - Status poll:      "I:0 (S:verb I:''verb''=0)"
 
  - Absolute position: "I:1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)"
 
  - Absolute position: "I:1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)"
  - Relative position: "I:1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)"
+
  - Relative position: "I:2 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)"
 
  - Velocity:          "I:3 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''"
 
  - Velocity:          "I:3 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''"
 
  - Force:            "I:4 S:''tag1'' D:''amp1'' ... S:''tagn'' D:''ampn''"
 
  - Force:            "I:4 S:''tag1'' D:''amp1'' ... S:''tagn'' D:''ampn''"
Line 26: Line 26:
 
   
 
   
 
  Out:
 
  Out:
  - Status response (verb=0): "I:stat S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn''"
+
- General Stop Response:    "I:-1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn''"
   
+
  - Status Response (verb=0): "I:0 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn''"
 +
  - Status Response (verb=1): "I:0 S:''tag1'' D:''pos1'' S:''tag1''vel D:''vel1'' S:''tag1''tar D:''tar1'' S:''tag1''stat I:''stat1'' ...
 +
                              ... S:''tagn'' D:''posn'' S:''tagn''vel D:''veln'' S:''tagn''tar D:''tarn'' S:''tagn''stat I:''statn''"
 +
 
 
  Units: Degrees, Percentage of maximum degrees per second, Amperes
 
  Units: Degrees, Percentage of maximum degrees per second, Amperes
 
   
 
   
  Example Tags: q1, q2, q3, q4, q5, q6, q7
+
  Example Tags: q1 (motor 1), q2 (motor 2), q3 (motor 3), q4 (motor 4), q5 (motor 5)...
 +
 
 +
'''<u>Example:</u> Command to /rave_q: 1 q3 45 q2 -45''' moves motor 3 45 degrees and motor 2 -45
  
 
  Implemented JMCs:
 
  Implemented JMCs:
 
   
 
   
 
  '''jmc_rave''': A module that instantiates a OpenRAVE kitchen with ASIBOT environment. [[Asibot_-_Implemented_Modules#jmc_rave_.28Ubuntu_.2F_Windows.29|read more...]]
 
  '''jmc_rave''': A module that instantiates a OpenRAVE kitchen with ASIBOT environment. [[Asibot_-_Implemented_Modules#jmc_rave_.28Ubuntu_.2F_Windows.29|read more...]]
 +
'''jmc_can''':
  
 
== Cartesian Motion Controllers (CMC) ==
 
== Cartesian Motion Controllers (CMC) ==
Line 43: Line 49:
 
   
 
   
 
  In:
 
  In:
  - Stop:             "I:-1"
+
  - General Stop:             "I:-1"
  - Status poll:       "I:0"
+
  - Status poll:             "I:0 (S:verb I:''verb=0'')"
  - Absolute position (base): "I:1 S:tag1 D:pos1 ... S:tag''n'' D:Q''n''pos D:Qgenvel"
+
  - Absolute position (base): "I:1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen=100'')"
  - Relative position (base): "I:2 S:tag1 D:pos1 ... S:tag''n'' D:Q''n''pos D:Qgenvel"
+
  - Relative position (base): "I:2 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen=100'')"
  - End-effector position:    "I:3 S:tag1 D:pos1 ... S:tag''n'' D:Q''n''pos D:Qgenvel"
+
  - End-effector position:    "I:3 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen=100'')"
 +
- Velocity (base):          "I:4 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''"
 +
- Velocity (end-effector):  "I:5 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''"
 
   
 
   
 
  Out:
 
  Out:
  - Status response (verb=0): "I:stat S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn''"
+
- General Stop Response:    "I:-1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn''"
   
+
  - Status Response (verb=0): "I:0 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn''"
 +
  - Status Response (verb=1): "I:0 S:''tag1'' D:''pos1'' S:''tag1''vel D:''vel1'' S:''tag1''tar D:''tar1'' S:''tag1''stat I:''stat1'' ...
 +
                              ... S:''tagn'' D:''posn'' S:''tagn''vel D:''veln'' S:''tagn''tar D:''tarn'' S:''tagn''stat I:''statn''"
 +
 
 
  Example Tags: x, y, z, roll, pitch, yaw
 
  Example Tags: x, y, z, roll, pitch, yaw
 +
 +
'''<u>Example:</u> Command to /recursive_z: 1 z -0.1'''
  
 
  Implemented CMCs:
 
  Implemented CMCs:
 
   
 
   
  '''cmc_rave''': A module...
+
  '''cmc_recursive''': A CMC module based on recursive methods, such as Newton-Raphson. [[Asibot_-_Implemented_Modules#cmc_recursive_.28Ubuntu_.2F_Windows.29|read more...]]
  
== Sensors ==
+
== Human Machine Interfaces (HMI) ==
 +
 
 +
Module: '''hmi_''name'''''
 +
 
 +
== Sensors (SNS) ==
  
 
  Module: '''sns_''name'''''
 
  Module: '''sns_''name'''''
Line 71: Line 88:
 
   
 
   
 
  Example Tags: accX, accY, accZ, gyrX, gyrY, gyrZ, magX, magY, magZ
 
  Example Tags: accX, accY, accZ, gyrX, gyrY, gyrZ, magX, magY, magZ
 +
 +
Implemented SNSs:

Latest revision as of 18:33, 10 November 2010

Robot Component Guidelines v0.3 - Command Format
The intention of this standard is to keep internal coherence and compatability with RoboticsLab robot Modules which follow this standard (such as Asibot - Implemented Modules). It corresponds to Robot Component Guidelines v0.3 and replaces v0.1 and v0.2. It is intended to be a description of module interfaces and data flow representation. Port interface is referred to TCP/UDP/MCAST/SHMEM cloud side, not CAN or USB (that can coexist in hardware-related modules). A referenced list of implemented modules should also be included. Be sure to check the Modules - Dependency Version page too.
Nomenclature: D for double, I for integer, S for string.

Joint Motion Controllers (JMC)

These modules should recieve joint (q) commands. While any q is in movement, a callback should be a set up to be able to receive Stop or Status Poll command. On the other hand, the module should send a message when a command has been performed (w/ info on degree of accomplishment) or stopped.

Module: jmc_name
Port: name_q

In:
- General Stop:      "I:-1"
- Status poll:       "I:0 (S:verb I:verb=0)"
- Absolute position: "I:1 S:tag1 D:pos1 ... S:tagn D:posn (S:vgen D:vgen=100)"
- Relative position: "I:2 S:tag1 D:pos1 ... S:tagn D:posn (S:vgen D:vgen=100)"
- Velocity:          "I:3 S:tag1 D:vel1 ... S:tagn D:veln"
- Force:             "I:4 S:tag1 D:amp1 ... S:tagn D:ampn"
- Syncronize:        "I:5 S:tag1 D:vel1 ... S:tagn D:veln"

Out:
- General Stop Response:    "I:-1 S:tag1 D:pos1 ... S:tagn D:posn"
- Status Response (verb=0): "I:0 S:tag1 D:pos1 ... S:tagn D:posn"
- Status Response (verb=1): "I:0 S:tag1 D:pos1 S:tag1vel D:vel1 S:tag1tar D:tar1 S:tag1stat I:stat1 ...
                             ... S:tagn D:posn S:tagnvel D:veln S:tagntar D:tarn S:tagnstat I:statn"
Units: Degrees, Percentage of maximum degrees per second, Amperes

Example Tags: q1 (motor 1), q2 (motor 2), q3 (motor 3), q4 (motor 4), q5 (motor 5)...
Example: Command to /rave_q: 1 q3 45 q2 -45 moves motor 3 45 degrees and motor 2 -45
Implemented JMCs:

jmc_rave: A module that instantiates a OpenRAVE kitchen with ASIBOT environment. read more...
jmc_can:

Cartesian Motion Controllers (CMC)

Module: cmc_name
Port: name_x

In:
- General Stop:             "I:-1"
- Status poll:              "I:0 (S:verb I:verb=0)"
- Absolute position (base): "I:1 S:tag1 D:pos1 ... S:tagn D:posn (S:vgen D:vgen=100)"
- Relative position (base): "I:2 S:tag1 D:pos1 ... S:tagn D:posn (S:vgen D:vgen=100)"
- End-effector position:    "I:3 S:tag1 D:pos1 ... S:tagn D:posn (S:vgen D:vgen=100)"
- Velocity (base):          "I:4 S:tag1 D:vel1 ... S:tagn D:veln"
- Velocity (end-effector):  "I:5 S:tag1 D:vel1 ... S:tagn D:veln"

Out:
- General Stop Response:    "I:-1 S:tag1 D:pos1 ... S:tagn D:posn"
- Status Response (verb=0): "I:0 S:tag1 D:pos1 ... S:tagn D:posn"
- Status Response (verb=1): "I:0 S:tag1 D:pos1 S:tag1vel D:vel1 S:tag1tar D:tar1 S:tag1stat I:stat1 ...
                             ... S:tagn D:posn S:tagnvel D:veln S:tagntar D:tarn S:tagnstat I:statn"
Example Tags: x, y, z, roll, pitch, yaw
Example: Command to /recursive_z: 1 z -0.1
Implemented CMCs:

cmc_recursive: A CMC module based on recursive methods, such as Newton-Raphson. read more...

Human Machine Interfaces (HMI)

Module: hmi_name

Sensors (SNS)

Module: sns_name
Port: name_info

In:
- Status poll:       "I:0"

Out:
- Status response:   "I:0 S:tag1 D:value1 ... S:tagn D:valuen"

Example Tags: accX, accY, accZ, gyrX, gyrY, gyrZ, magX, magY, magZ
Implemented SNSs: