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.
Dependents: ususama_serial_demo WRS2021_mecanum_driver
Revision 4:fd646595de66, committed 2021-08-25
- Comitter:
- sgrsn
- Date:
- Wed Aug 25 12:11:35 2021 +0000
- Parent:
- 3:3625406774ec
- Commit message:
- Update
Changed in this revision
| ususama_controller.hpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/ususama_controller.hpp Wed Aug 25 08:53:43 2021 +0000
+++ b/ususama_controller.hpp Wed Aug 25 12:11:35 2021 +0000
@@ -26,6 +26,18 @@
{
move_command.enable = false;
}
+ switch(last_command_)
+ {
+ case UsusamaProtocol::COMMAND_POSE_X:
+ case UsusamaProtocol::COMMAND_POSE_Y:
+ case UsusamaProtocol::COMMAND_POSE_THETA:
+ cmd_pose_changed_ = true;
+ break;
+ case UsusamaProtocol::COMMAND_MOVE:
+ //cmd_pose_changed_ = false;
+ break;
+ }
+
move_reply.x = x;
move_reply.y = y;
move_reply.theta = theta;
@@ -58,17 +70,41 @@
void reply_commad_pose()
{
// 受け取った値をそのまま返す
- pc_ -> writeData(pc_->_register[UsusamaProtocol::COMMAND_POSE_X], UsusamaProtocol::REPLY_COMMAND_X);
- pc_ -> writeData(pc_->_register[UsusamaProtocol::COMMAND_POSE_Y], UsusamaProtocol::REPLY_COMMAND_Y);
- pc_ -> writeData(pc_->_register[UsusamaProtocol::COMMAND_POSE_THETA], UsusamaProtocol::REPLY_COMMAND_THETA);
+ switch(n_reply_commad_pose)
+ {
+ case 0:
+ pc_ -> writeData(pc_->_register[UsusamaProtocol::COMMAND_POSE_X], UsusamaProtocol::REPLY_COMMAND_X);
+ break;
+ case 1:
+ pc_ -> writeData(pc_->_register[UsusamaProtocol::COMMAND_POSE_Y], UsusamaProtocol::REPLY_COMMAND_Y);
+ break;
+ case 2:
+ pc_ -> writeData(pc_->_register[UsusamaProtocol::COMMAND_POSE_THETA], UsusamaProtocol::REPLY_COMMAND_THETA);
+ break;
+ }
+ n_reply_commad_pose++;
+ if (n_reply_commad_pose == 3) n_reply_commad_pose = 0;
}
void reply_current_pose()
{
- pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.reached), UsusamaProtocol::REPLY_MOVE);
- pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.x), UsusamaProtocol::REPLY_STATE_X);
- pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.y), UsusamaProtocol::REPLY_STATE_Y);
- pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.theta), UsusamaProtocol::REPLY_STATE_THETA);
+ switch(n_reply_current_pose)
+ {
+ case 0:
+ pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.reached), UsusamaProtocol::REPLY_MOVE);
+ break;
+ case 1:
+ pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.x), UsusamaProtocol::REPLY_STATE_X);
+ break;
+ case 2:
+ pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.y), UsusamaProtocol::REPLY_STATE_Y);
+ break;
+ case 3:
+ pc_ -> writeData(UsusamaProtocol::encode_float2int(move_reply.theta), UsusamaProtocol::REPLY_STATE_THETA);
+ break;
+ }
+ n_reply_current_pose++;
+ if (n_reply_current_pose == 4) n_reply_current_pose = 0;
}
bool is_enable_to_move()
@@ -80,7 +116,14 @@
move_command.enable = false;
return move_command.enable;
}
-
+ bool is_ref_pose_changed()
+ {
+ return cmd_pose_changed_;
+ }
+ void notify_use_ref_pose()
+ {
+ cmd_pose_changed_ = false;
+ }
bool is_stop_called()
{
return stop_command.stop;
@@ -131,6 +174,9 @@
UsusamaSerial *pc_;
uint8_t last_command_ = 0;
bool cmd_pose_changed_ = false;
+
+ int n_reply_current_pose = 0;
+ int n_reply_commad_pose = 0;
};
#endif
\ No newline at end of file