Difference between revisions of "Modules - Command Format"
Jump to navigation
Jump to search
Jgvictores (talk | contribs) |
Jgvictores (talk | contribs) |
||
(66 intermediate revisions by 3 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;">''' | + | ! 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 - | + | | 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: | + | - General Stop: "I:-1" |
− | - Status poll: "I:0" | + | - Status poll: "I:0 (S:verb I:''verb''=0)" |
− | - Absolute position: "I:1 S:tag1 D: | + | - Absolute position: "I:1 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)" |
− | - Relative position: "I:2 S:tag1 D: | + | - Relative position: "I:2 S:''tag1'' D:''pos1'' ... S:''tagn'' D:''posn'' (S:vgen D:''vgen''=100)" |
− | - Velocity: "I:3 S:tag1 D: | + | - Velocity: "I:3 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''" |
− | - Force: "I:4 S:tag1 D: | + | - Force: "I:4 S:''tag1'' D:''amp1'' ... S:''tagn'' D:''ampn''" |
− | - Syncronize: "I:5 S:tag1 D: | + | - Syncronize: "I:5 S:''tag1'' D:''vel1'' ... S:''tagn'' D:''veln''" |
Out: | Out: | ||
− | - Status Response: | + | - 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, ... | + | 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 44: | Line 49: | ||
In: | In: | ||
− | - Stop: | + | - General Stop: "I:-1" |
− | - Status poll: | + | - Status poll: "I:0 (S:verb I:''verb=0'')" |
− | - Absolute position (base): "I:1 S:tag1 D:pos1 ... S: | + | - 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: | + | - 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:''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 | ||
+ | |||
+ | '''<u>Example:</u> Command to /recursive_z: 1 z -0.1''' | ||
+ | |||
+ | Implemented CMCs: | ||
+ | |||
+ | '''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: