Dependencies: SimpleMapSerialization serial_communication
communication.cpp@2:074942a78af1, 2016-04-03 (annotated)
- Committer:
- inst
- Date:
- Sun Apr 03 06:30:39 2016 +0000
- Revision:
- 2:074942a78af1
- Parent:
- 0:8b0edcbd3b87
- Child:
- 4:24d383b68566
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 | #include "mbed.h" |
inst | 0:8b0edcbd3b87 | 7 | |
inst | 0:8b0edcbd3b87 | 8 | communication* communication::instance_ = NULL; |
inst | 2:074942a78af1 | 9 | const int communication::velocity_offset_ = 32767; |
inst | 2:074942a78af1 | 10 | |
inst | 2:074942a78af1 | 11 | communication::communication() {} |
inst | 0:8b0edcbd3b87 | 12 | |
inst | 0:8b0edcbd3b87 | 13 | node_system::moving_object::CONTROL_MODE communication::get_mode() const { |
inst | 0:8b0edcbd3b87 | 14 | return node_system::moving_object::MANUAL_MODE; |
inst | 0:8b0edcbd3b87 | 15 | } |
inst | 0:8b0edcbd3b87 | 16 | |
inst | 0:8b0edcbd3b87 | 17 | communication::vector2f communication::get_velocity() const { |
inst | 0:8b0edcbd3b87 | 18 | uint32_t iv[] = { |
inst | 2:074942a78af1 | 19 | serial_communication::instance()->get("stkLX"), |
inst | 2:074942a78af1 | 20 | serial_communication::instance()->get("stkLY") |
inst | 0:8b0edcbd3b87 | 21 | }; |
inst | 0:8b0edcbd3b87 | 22 | |
inst | 0:8b0edcbd3b87 | 23 | // 受信データは [0, 65535] の範囲であるので [-1, 1] に変換する |
inst | 2:074942a78af1 | 24 | if ((iv[0] == velocity_offset_) && (iv[1] == velocity_offset_)) { |
inst | 0:8b0edcbd3b87 | 25 | return vector2f(); |
inst | 0:8b0edcbd3b87 | 26 | } |
inst | 0:8b0edcbd3b87 | 27 | |
inst | 0:8b0edcbd3b87 | 28 | vector2f v; |
inst | 0:8b0edcbd3b87 | 29 | |
inst | 0:8b0edcbd3b87 | 30 | for (uint32_t i = 0; i < 2; ++i) { |
inst | 0:8b0edcbd3b87 | 31 | v[i] = iv[i]; |
inst | 2:074942a78af1 | 32 | v[i] -= velocity_offset_; |
inst | 2:074942a78af1 | 33 | v[i] /= velocity_offset_; |
inst | 0:8b0edcbd3b87 | 34 | /* |
inst | 0:8b0edcbd3b87 | 35 | switch(iv[i]) { |
inst | 0:8b0edcbd3b87 | 36 | case 0: |
inst | 0:8b0edcbd3b87 | 37 | v[i] = 0.0f; |
inst | 0:8b0edcbd3b87 | 38 | break; |
inst | 0:8b0edcbd3b87 | 39 | |
inst | 0:8b0edcbd3b87 | 40 | case 1: |
inst | 0:8b0edcbd3b87 | 41 | v[i] = 1.0f; |
inst | 0:8b0edcbd3b87 | 42 | |
inst | 0:8b0edcbd3b87 | 43 | break; |
inst | 0:8b0edcbd3b87 | 44 | |
inst | 0:8b0edcbd3b87 | 45 | case 2: |
inst | 0:8b0edcbd3b87 | 46 | v[i] = -1.0f; |
inst | 0:8b0edcbd3b87 | 47 | break; |
inst | 0:8b0edcbd3b87 | 48 | } |
inst | 0:8b0edcbd3b87 | 49 | */ |
inst | 0:8b0edcbd3b87 | 50 | } |
inst | 0:8b0edcbd3b87 | 51 | |
inst | 0:8b0edcbd3b87 | 52 | if (v.length() > 1.0f) { |
inst | 2:074942a78af1 | 53 | return v.unit(); |
inst | 0:8b0edcbd3b87 | 54 | } |
inst | 0:8b0edcbd3b87 | 55 | |
inst | 2:074942a78af1 | 56 | return v; |
inst | 2:074942a78af1 | 57 | |
inst | 0:8b0edcbd3b87 | 58 | /* |
inst | 0:8b0edcbd3b87 | 59 | vector2f velocity = v.unit(); |
inst | 0:8b0edcbd3b87 | 60 | return velocity; |
inst | 0:8b0edcbd3b87 | 61 | */ |
inst | 0:8b0edcbd3b87 | 62 | } |
inst | 0:8b0edcbd3b87 | 63 | float communication::get_angular_velocity_rad_per_sec() const { |
inst | 0:8b0edcbd3b87 | 64 | return 0.0f; |
inst | 0:8b0edcbd3b87 | 65 | } |
inst | 0:8b0edcbd3b87 | 66 | communication::vector2f communication::get_target_position_mm() const { |
inst | 0:8b0edcbd3b87 | 67 | return vector2f(); |
inst | 0:8b0edcbd3b87 | 68 | } |
inst | 0:8b0edcbd3b87 | 69 | float communication::get_target_heading_rad() const { |
inst | 0:8b0edcbd3b87 | 70 | return 0.0f; |
inst | 0:8b0edcbd3b87 | 71 | } |