data.py
Go to the documentation of this file.
00001 import roslib; roslib.load_manifest('clearpath_base')
00002 import rospy
00003 
00004 from clearpath_base.msg import *
00005 
00006 # This structure maps ROS data topics to message classes
00007 msgs = {
00008     'system_status': SystemStatus,
00009     'power_status': PowerStatus,
00010     'processor_status': ProcessorStatus,
00011     'safety_status': SafetyStatus,
00012     'differential_speed': DifferentialSpeed,
00013     'differential_control': DifferentialControl,
00014     'differential_output': DifferentialOutput,
00015     'velocity': VelocitySetpt,
00016     'platform_orientation': Orientation,
00017     'platform_rotation': RotateRate,
00018     'platform_magnetometer': Magnetometer,
00019     'encoders': Encoders,
00020     'raw_encoders': RawEncoders,
00021     'distance': Distance
00022 }
00023 
00024 # Helper function for copying from payload to message.
00025 def copy_attributes(source, dest, attrs):
00026     for attr in attrs:
00027         setattr(dest, attr, getattr(source, attr))
00028 
00029 def pkg_robot_info(platform_name, platform_info, firmware_info):
00030     msg = ClearpathRobot();
00031     msg.name = platform_name.name
00032     msg.model = platform_info.model
00033     msg.platform_revision = platform_info.revision
00034     msg.serial = platform_info.serial
00035     msg.horizon_version = firmware_info.version
00036     msg.firmware_version = firmware_info.firmware
00037     msg.write_date = str(firmware_info.written)
00038     return msg
00039 
00040 def pkg_system_status(payload):
00041     msg = SystemStatus()
00042     copy_attributes(payload, msg, ['uptime', 'voltages', 
00043                                    'currents', 'temperatures']) 
00044     return msg
00045 
00046 def pkg_power_status(payload):
00047     msg = PowerStatus()
00048     charges = payload.charges
00049     capacities = payload.capacities
00050     descriptions = payload.descriptions
00051     for i in range(len(charges)):
00052         msg_s = PowerSource(charge=charges[i], 
00053                             capacity=capacities[i])
00054         msg_s.present, msg_s.in_use, msg_s.description = descriptions[i]
00055         msg.sources.append(msg_s)
00056     return msg
00057 
00058 def pkg_processor_status(payload):
00059     msg = ProcessorStatus()
00060     msg.errors = payload.errors
00061     return msg
00062 
00063 def pkg_differential_speed(payload):
00064     msg = DifferentialSpeed()
00065     copy_attributes(payload, msg, ['left_speed', 'right_speed',
00066                                    'left_accel', 'right_accel'])
00067     return msg
00068 
00069 def pkg_differential_control(payload):
00070     msg = DifferentialControl()
00071     copy_attributes(payload, msg, ['left_p', 'left_i', 'left_d',
00072                                    'left_ffwd', 'left_stic', 'left_sat',
00073                                    'right_p', 'right_i', 'right_d',
00074                                    'right_ffwd', 'right_stic', 'right_sat'])
00075     return msg
00076 
00077 def pkg_differential_output(payload):
00078     msg = DifferentialOutput()
00079     copy_attributes(payload, msg, ['left', 'right'])
00080     return msg
00081 
00082 def pkg_ackermann_output(payload):
00083     msg = AckermannOutput()
00084     copy_attributes(payload, msg, ['steering', 'throttle', 'brake'])
00085     return msg
00086 
00087 def pkg_velocity(payload):
00088     msg = VelocitySetpt()
00089     copy_attributes(payload, msg, ['trans', 'rot', 'accel'])
00090     return msg
00091 
00092 def pkg_platform_orientation(payload):
00093     msg = Orientation()
00094     copy_attributes(payload, msg, ['roll', 'pitch', 'yaw'])
00095     return msg
00096 
00097 def pkg_platform_rotation(payload):
00098     msg = RotateRate()
00099     copy_attributes(payload, msg, ['roll', 'pitch', 'yaw'])
00100     return msg
00101 
00102 def pkg_platform_magnetometer(payload):
00103     msg = Magnetometer()
00104     copy_attributes(payload, msg, ['x', 'y', 'z'])
00105     return msg
00106 
00107 def pkg_encoders(payload):
00108     msg = Encoders()
00109     travels = payload.travel
00110     speeds = payload.speed
00111     for i in range(len(travels)):
00112         msg.encoders.append(Encoder(travel=travels[i],
00113                                     speed=speeds[i]))
00114     return msg
00115 
00116 def pkg_raw_encoders(payload):
00117     msg = RawEncoders()
00118     msg.ticks = payload.ticks
00119     return msg
00120 
00121 def pkg_safety_status(payload):
00122     msg = SafetyStatus()
00123     msg.flags = payload.flags
00124     msg.estop = payload.flags & 0x8;
00125     return msg
00126 
00127 def pkg_distance(payload):
00128     msg = Distance()
00129     msg.distances = payload.distances
00130     return msg


clearpath_base
Author(s): Mike Purvis
autogenerated on Sat Dec 28 2013 16:50:47