Skip to content

Commit 374844a

Browse files
committed
入れ子スキルのコマンドの扱いに注意
1 parent 7a3ed57 commit 374844a

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

crane_robot_skills/include/crane_robot_skills/kickoff_attack.hpp

+3
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,10 @@ class KickoffAttack : public SkillBase<KickoffAttackState>
3030
addStateFunction(
3131
KickoffAttackState::PREPARE_KICKOFF,
3232
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
33+
std::cout << "KickoffAttackState::PREPARE_KICKOFF" << std::endl;
3334
if (not go_over_ball) {
3435
go_over_ball = std::make_shared<GoOverBall>(robot->id, world_model);
36+
go_over_ball->setCommander(command);
3537
go_over_ball->setParameter("next_target_x", getParameter<double>("target_x"));
3638
go_over_ball->setParameter("next_target_y", getParameter<double>("target_y"));
3739
go_over_ball->setParameter("margin", 0.3);
@@ -46,6 +48,7 @@ class KickoffAttack : public SkillBase<KickoffAttackState>
4648

4749
addStateFunction(
4850
KickoffAttackState::KICKOFF, [this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
51+
std::cout << "KickoffAttackState::KICKOFF" << std::endl;
4952
command->setMaxVelocity(0.5);
5053
command->kickStraight(getParameter<double>("kick_power"));
5154
command->setTargetPosition(world_model->ball.pos);

crane_robot_skills/include/crane_robot_skills/skill_base.hpp

+5
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,11 @@ class SkillBase : public SkillInterface
168168
}
169169
}
170170

171+
void setCommander(const std::shared_ptr<RobotCommandWrapper> & commander)
172+
{
173+
this->command = commander;
174+
}
175+
171176
Status run(
172177
ConsaiVisualizerWrapper::SharedPtr visualizer,
173178
std::optional<std::unordered_map<std::string, ParameterType>> parameters_opt =

crane_robot_skills/src/single_ball_placement.cpp

+6
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ SingleBallPlacement::SingleBallPlacement(uint8_t id, const std::shared_ptr<World
2020
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
2121
if (not go_over_ball) {
2222
go_over_ball = std::make_shared<GoOverBall>(robot->id, world_model);
23+
go_over_ball->setCommander(command);
2324
go_over_ball->setParameter("next_target_x", getParameter<double>("placement_x"));
2425
go_over_ball->setParameter("next_target_y", getParameter<double>("placement_y"));
2526
go_over_ball->setParameter("margin", 0.4);
@@ -39,6 +40,7 @@ SingleBallPlacement::SingleBallPlacement(uint8_t id, const std::shared_ptr<World
3940
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
4041
if (not get_ball_contact) {
4142
get_ball_contact = std::make_shared<GetBallContact>(robot->id, world_model);
43+
get_ball_contact->setCommander(command);
4244
}
4345

4446
skill_status = get_ball_contact->run(visualizer);
@@ -55,6 +57,7 @@ SingleBallPlacement::SingleBallPlacement(uint8_t id, const std::shared_ptr<World
5557
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
5658
if (not move_with_ball) {
5759
move_with_ball = std::make_shared<MoveWithBall>(robot->id, world_model);
60+
move_with_ball->setCommander(command);
5861
move_with_ball->setParameter("target_x", getParameter<double>("placement_x"));
5962
move_with_ball->setParameter("target_y", getParameter<double>("placement_y"));
6063
}
@@ -73,6 +76,7 @@ SingleBallPlacement::SingleBallPlacement(uint8_t id, const std::shared_ptr<World
7376
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
7477
if (not sleep) {
7578
sleep = std::make_shared<Sleep>(robot->id, world_model);
79+
sleep->setCommander(command);
7680
}
7781
skill_status = sleep->run(visualizer);
7882
return Status::RUNNING;
@@ -87,6 +91,7 @@ SingleBallPlacement::SingleBallPlacement(uint8_t id, const std::shared_ptr<World
8791
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
8892
if (not sleep) {
8993
sleep = std::make_shared<Sleep>(robot->id, world_model);
94+
sleep->setCommander(command);
9095
sleep->setParameter("duration", 0.5);
9196
}
9297
skill_status = sleep->run(visualizer);
@@ -102,6 +107,7 @@ SingleBallPlacement::SingleBallPlacement(uint8_t id, const std::shared_ptr<World
102107
[this](ConsaiVisualizerWrapper::SharedPtr visualizer) -> Status {
103108
if (not set_target_position) {
104109
set_target_position = std::make_shared<CmdSetTargetPosition>(robot->id, world_model);
110+
set_target_position->setCommander(command);
105111
}
106112
// メモ:().normalized() * 0.6したらなぜかゼロベクトルが出来上がってしまう
107113
Vector2 diff = (robot->pose.pos - world_model->ball.pos);

0 commit comments

Comments
 (0)