Skip to content
nanoseb edited this page Feb 11, 2017 · 44 revisions

An overview of the nodes and topics is in our repository: Node Overview (open with inkscape)

Topics

Debug topics

coordinate system

The coordinate system of the boat is z-axis down, y-axis point to star port. See the picture below: Coordinate system

sailing_state

Data type: [String]

  • 'normal' sail towards goal heading
  • 'tack_to_port_tack' and 'tack_to_stbd_tack'overwrites goal heading
wind_direction_apparent

Data type: [Float64]

  • angle 0 to 360 degrees, giving the direction the wind is coming from, relative to the boat; 0 degrees means boat is heading directly upwind (see figure below)
wind_direction_real

Data type: [Float32]

  • angle 0 to 360 degrees, giving an estimate of the actual direction the wind is coming from, 0 degrees is North (see figure below)
wind_direction_average

Data type: [Float32]

  • angle 0 to 360 degrees, giving the average direction the wind is coming from, 0 degrees is North (see figure below) Wind Direction
wind_speed_apparent

Data type: [Float64]

  • Speed in m/s
wind_speed_real

Data type: [Float32]

  • Speed in m/s
heading

Data type: [Float32]

  • angle 0 to 360 degrees, giving the current heading of the boat; 0 degrees is North (see figure below)
pitch

Data type: [Float32]

  • pitch angle in radian between -pi and pi based on the accelerometer
roll

Data type: [Float32]

  • roll angle in radian between -pi and pi based on the accelerometer
goal_heading

Data type: [Float32]

  • angle 0 to 360 degrees, heading that the boat is currently trying to achieve; 0 degrees is North (see figure below)

figure

imu

Data type: self defined msg

  • accx [Float32]
  • accy [Float32]
  • accz [Float32]
  • gyrox [Float32]
  • gyroy [Float32]
  • gyroz [Float32]
  • magx [Float32]
  • magy [Float32]
  • magz [Float32]
current_wp

Data type: nmea NavSatFix: sensor_msgs/NavSatFix

  • next point the path planning wants the boat to head to
gps

Data type: nmea NavSatFix: sensor_msgs/NavSatFix

  • rough position from the gps
gps_satellites

Data type: [Int16]

  • Number of satellites detected by the GPS
position

Data type: nmea NavSatFix: sensor_msgs/NavSatFix

  • estimate of the position based on imu and gps
position_error

Data type: [Float32]

  • In meters, giving the absolute error in global position.
PoS_control

Data type: [Float32]

  • In degrees, giving the angle at which the sail should be, based on current heading and wind speed (see figure above)
sail_servo

Data type: [UInt16]

  • In degrees, giving maximum winch servo the control angle (0 to 90)
tack_sail (OVERWRITES: PoS_control)

Data type: [Float32]

  • In degrees, giving the angle at which the sail should be for completing a tack
rudder_control

Data type: [Int16]

  • In degrees, giving the angle at which the rudder should be for achieving the current goal heading (see figure above)
tack_rudder (OVERWRITES: rudder_control)

Data type: [Float32]

  • In degrees, giving the rudder angle for completing a tack manoeuvre
distance_to_waypoint

Data type: [Float32]

  • In metres, the cartesian distance between the boat's GPS location and the active waypoint. Only published while the current task is sailing to a waypoint.
heading_to_waypoint

Data type: [Float32]

  • The heading from the boat's GPS location to the active waypoint. Only published while the current task is sailing to a waypoint.
camera_detection

Data type: [String]

  • publish nothing when nothing is detected, and detected when something is detected

Debug topics

debug_sailsheet_normalized

Data type: [Float32]

  • The servo setting for the sail normalized between 0 and 1, 0 representing the sheet being fully in, 1 the sheet being fully out
debug_sailsheet_pwm

Data type: [Float32]

  • raw PWM value given to the sail pin
led_blink

Data type: [Int32]

  • rgb values given as an int with a shift of 300:
  • red= 255*300*300 + 0*300 + 0
  • green= 0*300*300 + 255*300 + 0
  • lilac= 200*300*300 + 162*300 + 200
debugging_2D_plot

Data type: [MarkerArray]

  • Pulish the history of the boat position for RViz
debugging_2D_plot_origin

Data type: [NavSatFix]

  • Pulish map origin position for RViz
debugging_2D_plot_wp

Data type: [MarkerArray]

  • Pulish the waypoints for RViz
gps_fix

Data type: [gpswtime]

  • Publish the gps time as well as the boat position
gps_satellites

Data tyoe: [Int16]

  • Publish the amount of satellites visible by the gps
mag_x_comp

Data type: [Float32]

  • magnetometer X compensated
mag_y_comp

Data type: [Float32]

  • magnetometer Y compensated
mag_x

Data type: [Float32]

  • raw magnetometer X
mag_y

Data type: [Float32]

  • raw magnetometer Y
mag_z

Data type: [Float32]

  • raw magnetometer Z

Messages

velocity

Data type: self defined msg

  • velx [Float32]
  • vely [Float32]
  • velz [Float32]
gpswtime

Data type: self defined msg

  • fix [NavSatFix]
  • time_h [uint16]
  • time_m [uint16]
  • time_s [uint16]

Parameters

The parameters are defined in yaml files in the sailing_robot/launch/parameters folder. A few notes on parameters:

  • make sure you add a comment above each parameter, explaining it and specifying what units it is in
  • getting parameters from the parameter server takes noticeably time (tens of ms), so don't use it in loops
  • parameters are values that may change from experiment to experiment, but not during the experiment
  • think python dictionary! Parameters can be interpreted as python dictionaries containing python dictionaries...
  • more information: ROS wiki

Internal variables

goal_$$$

the output to be published

Clone this wiki locally