Difference between revisions of "Modules - Command Format"

From Asibot & HOAP3 & TEO Wiki
Jump to navigation Jump to search
(Created page with '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…')
 
 
(77 intermediate revisions by 3 users not shown)
Line 1: Line 1:
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 replaces [[Modules - Standard v0.1]]. 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.
+
__NOTITLE__
 +
{| class="bluetable" style="width:100%"
 +
|-
 +
! 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 - 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.
 +
|}
  
 
  Nomenclature: D for double, I for integer, S for string.
 
  Nomenclature: D for double, I for integer, S for string.
  
== Joint Motion Controllers (jmc) ==
+
== 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.
 
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.
  
Line 11: Line 17:
 
   
 
   
 
  In:
 
  In:
  - Stop:             "I:-1" (bottle_q_i)
+
  - General Stop:     "I:-1"
  - Status poll:      "I:0" (bottle_q_i)
+
  - Status poll:      "I:0 (S:verb I:''verb''=0)"
  - Absolute position: "I:1 S:tag1 D:Q1pos ... S:tag''n'' D:Q''n''pos D:Qgenvel" (bottle_q_i)
+
  - Absolute position: "I:1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)"
  - Relative position: "I:2 S:tag1 D:Q1pos ... S:tag''n'' D:Q''n''pos D:Qgenvel" (bottle_q_i)
+
  - Relative position: "I:2 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)"
  - Velocity:          "I:3 S:tag1 D:Q1vel ... S:tag''n'' D:Q''n''vel" (bottle_q_i)
+
  - Velocity:          "I:3 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''"
  - Syncronize:        "I:4 S:tag1 D:Q1vel ... S:tag''n'' D:Q''n''vel" (bottle_q_i)
+
- Force:            "I:4 S:''tag1'' D:''amp1'' ... S:''tagn'' D:''ampn''"
 +
  - Syncronize:        "I:5 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''"
 
   
 
   
 
  Out:
 
  Out:
  - Status Response:   "I:stat D:Q1pos ... D:Q''n''pos" (bottle_q_o)
+
- 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
 +
 +
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:
 +
 +
'''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) ==
 +
 
 +
Module: '''cmc_''name'''''
 +
 
 +
Port: '''''name''_x'''
 
   
 
   
  Units: Degrees, Percentage based on max degrees per second, ¿¿N/m or A??.
+
  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''"
 
   
 
   
  Tags: q1, q2, ..., q''n''.
+
  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:''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''"
  
  Implemented Drivers:
+
Example Tags: x, y, z, roll, pitch, yaw
 +
 
 +
'''<u>Example:</u> Command to /recursive_z: 1 z -0.1'''
 +
 
 +
  Implemented CMCs:
 
   
 
   
  '''jmc_rave''': A module that instantiates a OpenRAVE kitchen with ASIBOT environment. [[Asibot_-_Implemented_Modules#drv_rave_.5B3.5D|read more...]]
+
  '''cmc_recursive''': A CMC module based on recursive methods, such as Newton-Raphson. [[Asibot_-_Implemented_Modules#cmc_recursive_.28Ubuntu_.2F_Windows.29|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:

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: