<<PackageHeader(tulip_gazebo)>>
<<TOC(4)>>

= Package Summary =
This package contains the controller, sensor publishers and launch files for the [[Robots/TUlip|TUlip]] simulation. To communicate with the gazebo simulator in real-time, the  [[pr2_controller_manager]] infrastructure is used. The geometric, inertial and visual properties of TUlip are described in [[tulip_description]].

== Controller ==
Functionally the controllers manage TUlip's movement in simulation. The structure of the controller is as follows:
{{{
#!clearsilver CS/NodeAPI
name = TUlipController
desc = Generic controller which parses <<MsgLink(sensor_msgs/JointState)>> messages and calculates the torques on the corresponding joints. The controller also returns the current position of the joints as <<MsgLink(sensor_msgs/JointState)>> messages. This generic controller is used as leg, arm and head controller. Currently, the desired joint angles are imported from a yaml parameter file. In the future, we may release our walking algorithm which publishes joint angles such that the controller can subscribe to these. 
pub {
   0{
    name = /joint_states
    type = sensor_msgs/JointState
    desc = Joint state data
    }
  }
}}}

== Sensors ==
TUlip has two cameras for stereo vision on its head, four force sensors under each foot and an inertial measurement unit on its torso. The structure of the sensors is as follows:
{{{
#!clearsilver CS/NodeAPI
name = Camera
desc = Generic sensor that publishes camera info and data.
pub {
   0{
    name = /camera/(left or right)/camera_info
    type = sensor_msgs/CameraInfo
    desc = Info of the left and right camera
    }
   1{
    name = /camera/(left or right)/image_raw
    type = sensor_msgs/Image
    desc = Raw image data of left and right camera
    }
  }
}}}
{{{
#!clearsilver CS/NodeAPI
name = Foot Sensor
desc = Generic footsensor that publishes foot sensor state and data.
pub {
   0{
    name = /(left or right)_(heel or toe)_(inner or outer)_foot_sensor/state
    type = gazebo_msgs/ContactsState
    desc = State of the foot sensor at all corners of each foot
    }
   1{
    name = /(left or right)_(heel or toe)_(inner or outer)_foot_sensor/state
    type = gazebo_msgs/ContactsState
    desc = Foot sensor data of at all corners of each foot
    }
  }
}}}
{{{
#!clearsilver CS/NodeAPI
name = Inertial Measurement Unit
desc = Generic inertial measurement unit that publishes odometry data.
pub {
   0{
    name = /xsens_pose_ground_truth
    type = nav_msgs/Odometry
    desc = Odometry data of the torso of the robot
    }
  }
}}}

== Matlab ==
Besides publishing sensor data in the standard ROS message types, the package publishes the sensor data also in a format which can be easily imported in Mathworks Matlab.
{{{
#!clearsilver CS/NodeAPI
name = Matlab Publisher
desc = Generic publisher for sensor data which is easily accessible in Mathworks Matlab.
pub {
   0{
    name = /tulip_controller/matlab_joints
    type = tulip_gazebo/joint_state_message
    desc = Joint state data in Matlab readable format
    }
   1{
    name = /tulip_controller/matlab_footsens
    type = tulip_gazebo/footsens_state_message
    desc = Foot sensor data data in Matlab readable format
    }
   2{
    name = /tulip_controller/matlab_xsens
    type = tulip_gazebo/xsens_state_message
    desc = Odometry data in Matlab readable format
    }
  }
}}}


== Launch files ==

=== start.launch ===
This file loads the [[tulip_description]], spawns it in gazebo and launches the gazebo-gui. Furthermore, it starts the [[pr2_controller_manager]] followed by the TUlip simulation controllers.

=== rviz.launch ===
This file loads the [[tulip_description]] and shows it in rviz.

## AUTOGENERATED DON'T DELETE
## CategoryPackage