vrpn 07.35
Virtual Reality Peripheral Network
|
#include <vrpn_Tracker_Crossbow.h>
Classes | |
struct | raw_packet |
Public Member Functions | |
vrpn_Tracker_Crossbow (const char *name, vrpn_Connection *c, const char *port="/dev/ttyS0", long baud=38400, float g_range=2.0f, float ar_range=100.0f) | |
The constructor is given the name of the tracker (the name of the sender it should use), the connection on which it is to send its messages, the name of the serial port it is to open (default is /dev/ttyS0 (first serial port in Linux), the baud rate at which it is to communicate (default 38400), the linear acceleration range of the sensor in Gs (default 2), and the angular acceleration range of the sensor in degrees per second (default 100). | |
~vrpn_Tracker_Crossbow () | |
virtual void | mainloop () |
Uses the get_report, send_report, and reset routines to implement a server. | |
void | reset () |
Reset the tracker. | |
int | get_report () |
Gets a report if one is available, returns 0 if not, 1 if complete report. | |
vrpn_uint32 | get_serial_number () |
const char * | get_version_string () |
void | recalibrate (vrpn_uint16 num_samples=20000) |
![]() | |
vrpn_Tracker_Serial (const char *name, vrpn_Connection *c, const char *port="/dev/ttyS1", long baud=38400) | |
virtual | ~vrpn_Tracker_Serial () |
![]() | |
vrpn_Tracker (const char *name, vrpn_Connection *c=NULL, const char *tracker_cfg_file_name=NULL) | |
virtual | ~vrpn_Tracker (void) |
int | read_config_file (FILE *config_file, const char *tracker_name) |
void | print_latest_report (void) |
int | register_server_handlers (void) |
void | get_local_t2r (vrpn_float64 *vec, vrpn_float64 *quat) |
void | get_local_u2s (vrpn_int32 sensor, vrpn_float64 *vec, vrpn_float64 *quat) |
![]() | |
vrpn_BaseClass (const char *name, vrpn_Connection *c=NULL) | |
Names the device and assigns or opens connection, calls registration methods. | |
virtual | ~vrpn_BaseClass () |
![]() | |
vrpn_BaseClassUnique () | |
virtual | ~vrpn_BaseClassUnique () |
Unregister all of the message handlers that were to be autodeleted. | |
vrpn_Connection * | connectionPtr () |
Returns a pointer to the connection this object is using. | |
Protected Member Functions | |
void | unbuffer_packet (raw_packet &dest, unsigned char *buffer) |
int | validate_packet (const raw_packet &packet) |
void | process_packet (const raw_packet &packet) |
float | convert_scalar (vrpn_int16 data, float scale) const |
void | xb_quat_from_euler (q_type destQuat, double pitch, double roll) const |
void | send_report () |
void | ping () |
![]() | |
bool | ensure_enough_unit2sensors (unsigned num) |
virtual int | register_types (void) |
Register the types of messages this device sends/receives. Return 0 on success, -1 on fail. | |
virtual int | encode_to (char *buf) |
virtual int | encode_vel_to (char *buf) |
virtual int | encode_acc_to (char *buf) |
virtual int | encode_tracker2room_to (char *buf) |
Encodes the "Tracker to Room" transformation into the buffer specified. | |
virtual int | encode_unit2sensor_to (char *buf) |
Encodes the "Unit to Sensor" transformation into the buffer specified. | |
virtual int | encode_workspace_to (char *buf) |
![]() | |
virtual int | init (void) |
Initialize things that the constructor can't. Returns 0 on success, -1 on failure. | |
virtual int | register_senders (void) |
Register the sender for this device (by default, the name of the device). Return 0 on success, -1 on fail. | |
![]() | |
int | register_autodeleted_handler (vrpn_int32 type, vrpn_MESSAGEHANDLER handler, void *userdata, vrpn_int32 sender=vrpn_ANY_SENDER) |
Registers a handler with the connection, and remembers to delete at destruction. | |
int | send_text_message (const char *msg, struct timeval timestamp, vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL, vrpn_uint32 level=0) |
Sends a NULL-terminated text message from the device d_sender_id. | |
SendTextMessageBoundCall | send_text_message (vrpn_TEXT_SEVERITY type=vrpn_TEXT_NORMAL) |
Returns an object you can stream into to send a text message from the device like send_text_message(vrpn_TEXT_WARNING) << "Value of i is: " << i; This use requires including vrpn_SendTextMessageStreamProxy.h. | |
void | server_mainloop (void) |
Handles functions that all servers should provide in their mainloop() (ping/pong, for example) Should be called by all servers in their mainloop() | |
void | client_mainloop (void) |
Handles functions that all clients should provide in their mainloop() (warning of no server, for example) Should be called by all clients in their mainloop() | |
Protected Attributes | |
struct timeval | init_time |
float | lin_accel_range |
float | ang_accel_range |
vrpn_uint32 | device_serial |
char * | device_version |
int | just_read_something |
![]() | |
char | portname [VRPN_TRACKER_BUF_SIZE] |
long | baudrate |
int | serial_fd |
unsigned char | buffer [VRPN_TRACKER_BUF_SIZE] |
vrpn_uint32 | bufcount |
![]() | |
vrpn_int32 | position_m_id |
vrpn_int32 | velocity_m_id |
vrpn_int32 | accel_m_id |
vrpn_int32 | tracker2room_m_id |
vrpn_int32 | unit2sensor_m_id |
vrpn_int32 | request_t2r_m_id |
vrpn_int32 | request_u2s_m_id |
vrpn_int32 | request_workspace_m_id |
vrpn_int32 | workspace_m_id |
vrpn_int32 | update_rate_id |
vrpn_int32 | connection_dropped_m_id |
vrpn_int32 | reset_origin_m_id |
vrpn_int32 | d_sensor |
vrpn_float64 | pos [3] |
vrpn_float64 | d_quat [4] |
vrpn_float64 | vel [3] |
vrpn_float64 | vel_quat [4] |
vrpn_float64 | vel_quat_dt |
vrpn_float64 | acc [3] |
vrpn_float64 | acc_quat [4] |
vrpn_float64 | acc_quat_dt |
struct timeval | timestamp |
vrpn_int32 | frame_count |
struct timeval | watchdog_timestamp |
vrpn_float64 | tracker2room [3] |
vrpn_float64 | tracker2room_quat [4] |
vrpn_int32 | num_sensors |
vrpn_Tracker_Pos * | unit2sensor |
vrpn_Tracker_Quat * | unit2sensor_quat |
unsigned | num_unit2sensors |
vrpn_float64 | workspace_min [3] |
vrpn_float64 | workspace_max [3] |
int | status |
![]() | |
vrpn_Connection * | d_connection |
Connection that this object talks to. | |
char * | d_servicename |
Name of this device, not including the connection part. | |
vrpn_int32 | d_sender_id |
Sender ID registered with the connection. | |
vrpn_int32 | d_text_message_id |
ID for text messages. | |
vrpn_int32 | d_ping_message_id |
Ask the server if they are there. | |
vrpn_int32 | d_pong_message_id |
Server telling that it is there. | |
Additional Inherited Members | |
![]() | |
static int VRPN_CALLBACK | handle_t2r_request (void *userdata, vrpn_HANDLERPARAM p) |
static int VRPN_CALLBACK | handle_u2s_request (void *userdata, vrpn_HANDLERPARAM p) |
static int VRPN_CALLBACK | handle_workspace_request (void *userdata, vrpn_HANDLERPARAM p) |
![]() | |
bool | shutup |
![]() | |
static int | encode_text_message_to_buffer (char *buf, vrpn_TEXT_SEVERITY severity, vrpn_uint32 level, const char *msg) |
Encodes the body of the text message into a buffer, preparing for sending. | |
static int | decode_text_message_from_buffer (char *msg, vrpn_TEXT_SEVERITY *severity, vrpn_uint32 *level, const char *buf) |
Decodes the body of the text message from a buffer from the connection. | |
Definition at line 16 of file vrpn_Tracker_Crossbow.h.
vrpn_Tracker_Crossbow::vrpn_Tracker_Crossbow | ( | const char * | name, |
vrpn_Connection * | c, | ||
const char * | port = "/dev/ttyS0" , |
||
long | baud = 38400 , |
||
float | g_range = 2.0f , |
||
float | ar_range = 100.0f |
||
) |
The constructor is given the name of the tracker (the name of the sender it should use), the connection on which it is to send its messages, the name of the serial port it is to open (default is /dev/ttyS0 (first serial port in Linux), the baud rate at which it is to communicate (default 38400), the linear acceleration range of the sensor in Gs (default 2), and the angular acceleration range of the sensor in degrees per second (default 100).
Definition at line 17 of file vrpn_Tracker_Crossbow.C.
vrpn_Tracker_Crossbow::~vrpn_Tracker_Crossbow | ( | ) |
Definition at line 28 of file vrpn_Tracker_Crossbow.C.
References device_version.
|
protected |
Definition at line 334 of file vrpn_Tracker_Crossbow.C.
Referenced by process_packet().
|
virtual |
Gets a report if one is available, returns 0 if not, 1 if complete report.
Implements vrpn_Tracker_Serial.
Definition at line 82 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Serial::bufcount, vrpn_Tracker_Serial::buffer, just_read_something, process_packet(), vrpn_Tracker_Serial::serial_fd, vrpn_Tracker::status, unbuffer_packet(), validate_packet(), vrpn_flush_input_buffer(), vrpn_read_available_characters(), vrpn_TRACKER_AWAITING_STATION, vrpn_TRACKER_PARTIAL, vrpn_TRACKER_SYNCING, and vrpn_write_characters().
vrpn_uint32 vrpn_Tracker_Crossbow::get_serial_number | ( | ) |
Definition at line 316 of file vrpn_Tracker_Crossbow.C.
References device_serial, and reset().
const char * vrpn_Tracker_Crossbow::get_version_string | ( | ) |
Definition at line 322 of file vrpn_Tracker_Crossbow.C.
References device_version, and reset().
|
virtual |
Uses the get_report, send_report, and reset routines to implement a server.
This function should be called each time through the main loop of the server code.
It polls for a report from the tracker and sends them if there are one or more. It will reset the tracker if there is no data from it for a few seconds.
Reimplemented from vrpn_Tracker_Serial.
Definition at line 329 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Serial::mainloop().
|
protected |
Definition at line 266 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Serial::buffer, vrpn_Tracker_Serial::serial_fd, vrpn_read_available_characters(), and vrpn_write_characters().
|
protected |
Definition at line 338 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker::acc, vrpn_Tracker::acc_quat, vrpn_Tracker::acc_quat_dt, vrpn_Tracker_Crossbow::raw_packet::accel_x, vrpn_Tracker_Crossbow::raw_packet::accel_y, vrpn_Tracker_Crossbow::raw_packet::accel_z, ang_accel_range, convert_scalar(), vrpn_Tracker::d_quat, lin_accel_range, MPSS_PER_G, vrpn_Tracker_Crossbow::raw_packet::pitch_angle, vrpn_Tracker::pos, vrpn_Tracker_Crossbow::raw_packet::roll_angle, vrpn_Tracker::timestamp, vrpn_Tracker::vel, vrpn_Tracker::vel_quat, vrpn_Tracker::vel_quat_dt, VRPN_DEGREES_TO_RADIANS, vrpn_gettimeofday, xb_quat_from_euler(), and vrpn_Tracker_Crossbow::raw_packet::yaw_rate.
Referenced by get_report().
void vrpn_Tracker_Crossbow::recalibrate | ( | vrpn_uint16 | num_samples = 20000 | ) |
Definition at line 283 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Serial::buffer, vrpn_Tracker_Serial::serial_fd, vrpn_drain_output_buffer(), vrpn_flush_input_buffer(), vrpn_read_available_characters(), vrpn_SleepMsecs(), and vrpn_write_characters().
|
virtual |
Reset the tracker.
Implements vrpn_Tracker_Serial.
Definition at line 169 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Serial::baudrate, device_serial, device_version, just_read_something, vrpn_Tracker_Serial::portname, vrpn_Tracker_Serial::serial_fd, vrpn_Tracker::status, vrpn_Tracker::timestamp, vrpn_clear_rts(), vrpn_close_commport(), vrpn_drain_output_buffer(), vrpn_flush_input_buffer(), vrpn_flush_output_buffer(), vrpn_gettimeofday, vrpn_open_commport(), vrpn_read_available_characters(), vrpn_set_rts(), vrpn_SleepMsecs(), vrpn_TRACKER_FAIL, vrpn_TRACKER_SYNCING, vrpn_unbuffer(), and vrpn_write_characters().
Referenced by get_serial_number(), and get_version_string().
|
protectedvirtual |
Reimplemented from vrpn_Tracker_Serial.
Definition at line 370 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker::accel_m_id, vrpn_BaseClassUnique::d_connection, vrpn_BaseClassUnique::d_sender_id, vrpn_Tracker::encode_acc_to(), vrpn_Tracker::encode_to(), vrpn_Tracker::encode_vel_to(), vrpn_Connection::pack_message(), vrpn_Tracker::position_m_id, vrpn_Tracker::timestamp, vrpn_Tracker::velocity_m_id, and vrpn_CONNECTION_LOW_LATENCY.
|
protected |
Definition at line 36 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Crossbow::raw_packet::accel_x, vrpn_Tracker_Crossbow::raw_packet::accel_y, vrpn_Tracker_Crossbow::raw_packet::accel_z, vrpn_Tracker_Serial::buffer, vrpn_Tracker_Crossbow::raw_packet::checksum, vrpn_Tracker_Crossbow::raw_packet::header, vrpn_Tracker_Crossbow::raw_packet::part_number, vrpn_Tracker_Crossbow::raw_packet::pitch_angle, vrpn_Tracker_Crossbow::raw_packet::roll_angle, vrpn_Tracker_Crossbow::raw_packet::status, vrpn_Tracker_Crossbow::raw_packet::temp_voltage, vrpn_Tracker_Crossbow::raw_packet::timer, vrpn_unbuffer(), and vrpn_Tracker_Crossbow::raw_packet::yaw_rate.
Referenced by get_report().
|
protected |
Definition at line 51 of file vrpn_Tracker_Crossbow.C.
References vrpn_Tracker_Crossbow::raw_packet::checksum, and vrpn_Tracker_Crossbow::raw_packet::header.
Referenced by get_report().
|
protected |
Definition at line 397 of file vrpn_Tracker_Crossbow.C.
Referenced by process_packet().
|
protected |
Definition at line 71 of file vrpn_Tracker_Crossbow.h.
Referenced by process_packet().
|
protected |
Definition at line 73 of file vrpn_Tracker_Crossbow.h.
Referenced by get_serial_number(), and reset().
|
protected |
Definition at line 74 of file vrpn_Tracker_Crossbow.h.
Referenced by get_version_string(), reset(), and ~vrpn_Tracker_Crossbow().
|
protected |
Definition at line 69 of file vrpn_Tracker_Crossbow.h.
|
protected |
Definition at line 76 of file vrpn_Tracker_Crossbow.h.
Referenced by get_report(), and reset().
|
protected |
Definition at line 70 of file vrpn_Tracker_Crossbow.h.
Referenced by process_packet().