Dependencies:   SimpleMapSerialization serial_communication

Committer:
inst
Date:
Thu Mar 31 04:43:01 2016 +0000
Revision:
0:8b0edcbd3b87
Child:
2:074942a78af1

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
inst 0:8b0edcbd3b87 1 #include "communication.hpp"
inst 0:8b0edcbd3b87 2 #include "moving_object.hpp"
inst 0:8b0edcbd3b87 3 #include "serial_communication.hpp"
inst 0:8b0edcbd3b87 4
inst 0:8b0edcbd3b87 5 #include "mbed_stl.hpp"
inst 0:8b0edcbd3b87 6
inst 0:8b0edcbd3b87 7
inst 0:8b0edcbd3b87 8 #include "mbed.h"
inst 0:8b0edcbd3b87 9
inst 0:8b0edcbd3b87 10 communication* communication::instance_ = NULL;
inst 0:8b0edcbd3b87 11
inst 0:8b0edcbd3b87 12 node_system::moving_object::CONTROL_MODE communication::get_mode() const {
inst 0:8b0edcbd3b87 13 return node_system::moving_object::MANUAL_MODE;
inst 0:8b0edcbd3b87 14 }
inst 0:8b0edcbd3b87 15
inst 0:8b0edcbd3b87 16 communication::vector2f communication::get_velocity() const {
inst 0:8b0edcbd3b87 17 uint32_t iv[] = {
inst 0:8b0edcbd3b87 18 serial_communication::instance()->get_data("stkLX"),
inst 0:8b0edcbd3b87 19 serial_communication::instance()->get_data("stkLY")
inst 0:8b0edcbd3b87 20 };
inst 0:8b0edcbd3b87 21
inst 0:8b0edcbd3b87 22 // 受信データは [0, 65535] の範囲であるので [-1, 1] に変換する
inst 0:8b0edcbd3b87 23 int offset = 32767;
inst 0:8b0edcbd3b87 24
inst 0:8b0edcbd3b87 25 if ((iv[0] == offset) && (iv[1] == offset)) {
inst 0:8b0edcbd3b87 26 return vector2f();
inst 0:8b0edcbd3b87 27 }
inst 0:8b0edcbd3b87 28
inst 0:8b0edcbd3b87 29 vector2f v;
inst 0:8b0edcbd3b87 30
inst 0:8b0edcbd3b87 31 for (uint32_t i = 0; i < 2; ++i) {
inst 0:8b0edcbd3b87 32 v[i] = iv[i];
inst 0:8b0edcbd3b87 33 v[i] -= offset;
inst 0:8b0edcbd3b87 34 v[i] /= offset;
inst 0:8b0edcbd3b87 35 /*
inst 0:8b0edcbd3b87 36 switch(iv[i]) {
inst 0:8b0edcbd3b87 37 case 0:
inst 0:8b0edcbd3b87 38 v[i] = 0.0f;
inst 0:8b0edcbd3b87 39 break;
inst 0:8b0edcbd3b87 40
inst 0:8b0edcbd3b87 41 case 1:
inst 0:8b0edcbd3b87 42 v[i] = 1.0f;
inst 0:8b0edcbd3b87 43
inst 0:8b0edcbd3b87 44 break;
inst 0:8b0edcbd3b87 45
inst 0:8b0edcbd3b87 46 case 2:
inst 0:8b0edcbd3b87 47 v[i] = -1.0f;
inst 0:8b0edcbd3b87 48 break;
inst 0:8b0edcbd3b87 49 }
inst 0:8b0edcbd3b87 50 */
inst 0:8b0edcbd3b87 51 }
inst 0:8b0edcbd3b87 52
inst 0:8b0edcbd3b87 53 if (v.length() > 1.0f) {
inst 0:8b0edcbd3b87 54 return ;
inst 0:8b0edcbd3b87 55 }
inst 0:8b0edcbd3b87 56
inst 0:8b0edcbd3b87 57 /*
inst 0:8b0edcbd3b87 58 vector2f velocity = v.unit();
inst 0:8b0edcbd3b87 59 return velocity;
inst 0:8b0edcbd3b87 60 */
inst 0:8b0edcbd3b87 61 }
inst 0:8b0edcbd3b87 62 float communication::get_angular_velocity_rad_per_sec() const {
inst 0:8b0edcbd3b87 63 return 0.0f;
inst 0:8b0edcbd3b87 64 }
inst 0:8b0edcbd3b87 65 communication::vector2f communication::get_target_position_mm() const {
inst 0:8b0edcbd3b87 66 return vector2f();
inst 0:8b0edcbd3b87 67 }
inst 0:8b0edcbd3b87 68 float communication::get_target_heading_rad() const {
inst 0:8b0edcbd3b87 69 return 0.0f;
inst 0:8b0edcbd3b87 70 }