Dependencies: SimpleMapSerialization serial_communication
communication.cpp@0:8b0edcbd3b87, 2016-03-31 (annotated)
- Committer:
- inst
- Date:
- Thu Mar 31 04:43:01 2016 +0000
- Revision:
- 0:8b0edcbd3b87
- Child:
- 2:074942a78af1
Who changed what in which revision?
User | Revision | Line number | New 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 | } |