Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
shared/OnOffMovement/OnOffMovement.cpp@0:ee7e9405e1c7, 2021-04-14 (annotated)
- Committer:
- e2011220
- Date:
- Wed Apr 14 07:26:19 2021 +0000
- Revision:
- 0:ee7e9405e1c7
first
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| e2011220 | 0:ee7e9405e1c7 | 1 | #include "OnOffMovement.h" |
| e2011220 | 0:ee7e9405e1c7 | 2 | |
| e2011220 | 0:ee7e9405e1c7 | 3 | OnOffMovement::OnOffMovement(Movement *movement) : AutomaticMovement(movement) |
| e2011220 | 0:ee7e9405e1c7 | 4 | {} |
| e2011220 | 0:ee7e9405e1c7 | 5 | |
| e2011220 | 0:ee7e9405e1c7 | 6 | Eigen::Vector3d OnOffMovement::move_automatic(Eigen::Vector3d current_position) |
| e2011220 | 0:ee7e9405e1c7 | 7 | { |
| e2011220 | 0:ee7e9405e1c7 | 8 | Eigen::Vector3d position_difference, speed_move; |
| e2011220 | 0:ee7e9405e1c7 | 9 | position_difference = _target_position - current_position; |
| e2011220 | 0:ee7e9405e1c7 | 10 | |
| e2011220 | 0:ee7e9405e1c7 | 11 | for(int i = 0; i < 3; i++){ |
| e2011220 | 0:ee7e9405e1c7 | 12 | if(fabs(position_difference(i)) < _near_distance(i)) |
| e2011220 | 0:ee7e9405e1c7 | 13 | speed_move(i) = 0; |
| e2011220 | 0:ee7e9405e1c7 | 14 | else |
| e2011220 | 0:ee7e9405e1c7 | 15 | speed_move(i) = position_difference(i) |
| e2011220 | 0:ee7e9405e1c7 | 16 | / fabs(position_difference(i)) |
| e2011220 | 0:ee7e9405e1c7 | 17 | * _speed(i); |
| e2011220 | 0:ee7e9405e1c7 | 18 | } |
| e2011220 | 0:ee7e9405e1c7 | 19 | |
| e2011220 | 0:ee7e9405e1c7 | 20 | EigenCalculation::rotate_coordinate(&speed_move, -current_position(Movement::Yaw)); |
| e2011220 | 0:ee7e9405e1c7 | 21 | |
| e2011220 | 0:ee7e9405e1c7 | 22 | _movement->move(speed_move); |
| e2011220 | 0:ee7e9405e1c7 | 23 | |
| e2011220 | 0:ee7e9405e1c7 | 24 | return speed_move; |
| e2011220 | 0:ee7e9405e1c7 | 25 | } |
| e2011220 | 0:ee7e9405e1c7 | 26 | |
| e2011220 | 0:ee7e9405e1c7 | 27 | void OnOffMovement::set_near_distance(Eigen::Vector3d near_distance) |
| e2011220 | 0:ee7e9405e1c7 | 28 | { |
| e2011220 | 0:ee7e9405e1c7 | 29 | _near_distance = near_distance; |
| e2011220 | 0:ee7e9405e1c7 | 30 | } |
| e2011220 | 0:ee7e9405e1c7 | 31 | |
| e2011220 | 0:ee7e9405e1c7 | 32 | void OnOffMovement::set_speed(Eigen::Vector3d speed) |
| e2011220 | 0:ee7e9405e1c7 | 33 | { |
| e2011220 | 0:ee7e9405e1c7 | 34 | _speed = speed; |
| e2011220 | 0:ee7e9405e1c7 | 35 | } |