This package contains a driver that integrates MetraLabs Scitos G5 robots into ROS using MetraLabs' former MLRobotic libraries.

If your Scitos is newer and only runs "MIRA" try scitos_drivers or cognidrive_ros


  • URDF model included

  • diagnostics support (atm. just the battery state)

  • access Scitos hardware features via dynamic_reconfigure (EBC ports, sonar, display led, free run mode...)

  • publish sonar data as Range message with automatic sonar (de)activation when nodes (un)subscribe (to disable sonar remove the <sonar> tag from the scitos-config-xml)

  • bumper status / reset supported via topics
  • ...
  • A manipulator supported by MetraLabs can be controlled via this node.

    • Supported protocols: AmtecMotionProtocol and SchunkMotionProtocol

    • Each specific manipulator hardware can adjust its specifics via subclassing
    • joint naming freedom
    • mimicking joints support
    • FollowJointTrajectoryAction server

    • ...

Feel free to ask for improvements or file issues.

Node API

ScitosServer node

The driver for the Scitos robot platform.

Subscribed Topics

/cmd_vel (geometry_msgs/Twist)
  • drive the robot
/bumper_reset (std_msgs/Empty)
  • reset the bumper

Published Topics

/odom (nav_msgs/Odometry)
  • odometry from Scitos platform
/bumper (invalid message type for MsgLink(msg/type))
  • bumper status
/sonar (sensor_msgs/Range)
  • sonar data
/diagnostics (diagnostics_msgs/DiagnosticArray)
  • diagnostics, see features list


~scitos_config_file (string, default: /opt/MetraLabs/MLRobotic/etc/config/SCITOS-G5_without_Head_config.xml)
  • SCITOS config file to use
~robot_arm_class (string, default: None)
  • Which RobotArm class to load if not None (just an ID, no real classloader yet)
Dynamically Reconfigurable Parameters
See the dynamic_reconfigure package for details on dynamically reconfigurable parameters.
~EBC0_Enable5V (bool, default: False)
  • Enable power output
~EBC0_Enable12V (bool, default: False)
  • Enable power output
~EBC0_Enable24V (bool, default: False)
  • Enable power output
~EBC1_Enable5V (bool, default: False)
  • Enable power output
~EBC1_Enable12V (bool, default: False)
  • Enable power output
~EBC1_Enable24V (bool, default: False)
  • Enable power output
~FreeRunMode (bool, default: False)
  • Disable brakes to push the robot
~SonarsActive (bool, default: False)
  • Enable sonar
~StatusDisplayKnobLock (bool, default: False)
  • Lock display knob
~StatusDisplayLED (bool, default: False)
  • Switch display status LED

Provided tf Transforms

  • odometry transform
  • transform for each sonar sensor


The manipulator part actually cannot be made a separate node. But it can be disabled if not needed and therefore this list is split.

Subscribed Topics

/joint_states (sensor_msgs/JointState)
  • current joint states
schunk/status (metralabs_msgs/SchunkStatus)
  • current joint status data
schunk/emergency (std_msgs/Empty)
  • emergency halt the manipulator
schunk/stop (std_msgs/Empty)
  • soft stop the manipulator
schunk/ack (std_msgs/Int8)
  • ack/reset the joint with given index
schunk/ack_all (std_msgs/Empty)
  • ack/reset the manipulator
schunk/set_velocity (metralabs_msgs/IDAndFloat)
  • set velocity for one joint
schunk/set_acceleration (metralabs_msgs/IDAndFloat)
  • set acceleration for one joint
schunk/set_current (metralabs_msgs/IDAndFloat)
  • set current for one joint
schunk/set_current_max_all (std_msgs/Empty)
  • sets maximum current of all joints to their maximum, if supported
schunk/move_position (metralabs_msgs/IDAndFloat)
  • move one joint to position
schunk/move_velocity (metralabs_msgs/IDAndFloat)
  • move one joint with velocity
schunk/move_all_position (metralabs_msgs/IDAndFloat)
  • move manipulator to position
schunk/move_all_velocity (metralabs_msgs/IDAndFloat)
  • move manipulator with velocity
schunk/trajectory_command (trajectory_msgs/JointTrajectory)
  • move manipulator according to trajectory (Deprecated, use action instead)
schunk/<follow_joint_trajectory_action_name> (control_msgs/FollowJointTrajectoryAction)
  • move manipulator according to trajectory action; the name can be parameterized

Published Topics

schunk/trajectory_state (control_msgs/JointTrajectoryControllerState)
  • the state information published by the old trajectory executor


follow_joint_trajectory_action_name (string, default: follow_joint_trajectory)
  • The name to for this node's FollowJointTrajectoryAction server (will be prefixed with namespace schunk)

Wiki: metralabs_ros (last edited 2013-09-09 11:22:50 by FelixKolbe)