schpin_dev Package

Package contains nodes that represents hardware devices (not direct hw communication!). Devices of same class (ie. Joint) should use same topic interface to be replacable at will.

Target goal is to support simple PWM servos with fake ‘done’ report simulation, and dynamixel smart servos that gives you real time feedback.

Eventually this package should be popullated with additional nodes for sensory

Joint Nodes

Nodes that represent one single joint. Only angular position based joints are supported. Every joint should fully support messages -> be able to get disabled by control msg and be able to make blocked moves.

Default state should be disabled.

Every node should use these topics:

Subscribes on

Publishes on

msgs

schpin_msgs/JointReport
Field:
  • node (string) –
  • seq (uint32) –
  • status (uint8) –
Constant:
  • OK (uint8):0
  • BLOCKED (uint8):1
  • DISABLED (uint8):2
  • UNFINISHED (uint8):3
  • OUT_OF_RANGE (uint8):4

report sent by joint node after move is finished, node is name of node that send the message and seq is seq from move message

schpin_msgs/JointMove
Field:
  • stamp (time) –
  • seq (uint32) –
  • block (bool) –
  • position (float64) –

Commands joint to move to specific angle.

joint will answert with JointReport message, after move is done.

seq is used to identify this message in report!

schpin_msgs/JointControl
Field:
  • header (std_msgs/Header) –
  • servo (string) –
  • state (uint8) –
Constant:
  • DISABLE (uint8):0
  • ENABLE (uint8):1

Control Joints, allows enabling/disabling them msg is received by multiple joints, the one that matches ‘servo’ string with node name accepts the msg, other nodes throw it away.

Instead of node name, * can be used to match all servos

sensor_msgs/JointState
Field:
  • header (std_msgs/Header) –
  • name[] (string) –
  • position[] (float64) –
  • velocity[] (float64) –
  • effort[] (float64) –

This is a message that holds data to describe the state of a set of torque controlled joints.

The state of each joint (revolute or prismatic) is defined by:
  • the position of the joint (rad or m),
  • the velocity of the joint (rad/s or m/s) and
  • the effort that is applied in the joint (Nm or N).

Each joint is uniquely identified by its name The header specifies the time at which the joint states were recorded. All the joint states in one message have to be recorded at the same time.

This message consists of a multiple arrays, one for each part of the joint state. The goal is to make each of the fields optional. When e.g. your joints have no effort associated with them, you can leave the effort array empty.

All arrays in this message should have the same size, or be empty. This is the only way to uniquely associate the joint name with the correct states.

package.xml

schpin_dev
Version:

0.1.0

Description:

The schpin_dev package contains all nodes that represents specific devices, such as PWM Servo

Maintainers:
  • Jan ‘veverak’ Koniarik <jan DOT koniarik AT gmail DOT com>
Licenses:
  • TODO
Authors:
  • Jan ‘veverak’ Koniarik
BuildDepends:
  • schpin_msgs
  • dynamic_reconfigure
BuildtoolDepends:
 
  • catkin
BuildExportDepends:
 
  • dynamic_reconfigure
  • schpin_msgs
ExecDepends:
  • dynamic_reconfigure
  • schpin_msgs
TestDepends:
  • rosunit
  • schpin_testlib
Exports:
  • <rosdoc config=”rosdoc.yaml”/>