Skip to content

Commit fc108f4

Browse files
committed
make getTarget return an std::optional
1 parent 398d024 commit fc108f4

3 files changed

Lines changed: 32 additions & 27 deletions

File tree

include/ur_client_library/control/motion_primitives.h

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,14 @@ class MotionPrimitiveWithTarget : public MotionPrimitive
117117

118118
virtual void setTarget(const MotionTarget& target) = 0;
119119

120-
MotionTarget getTarget() const
120+
[[nodiscard]]
121+
std::optional<MotionTarget> getTarget() const
121122
{
122-
return *target_;
123+
if (target_ != nullptr)
124+
{
125+
return *target_;
126+
}
127+
return std::nullopt;
123128
}
124129

125130
protected:

src/control/trajectory_point_interface.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ bool TrajectoryPointInterface::writeMotionPrimitive(const std::shared_ptr<contro
122122
case MotionType::OPTIMOVEL_JOINT:
123123
{
124124
auto with_target = std::static_pointer_cast<control::MotionPrimitiveWithTarget>(primitive);
125-
first_block = motionTargetToBlock(with_target->getTarget());
125+
first_block = motionTargetToBlock(with_target->getTarget().value());
126126
second_block.fill(primitive->velocity);
127127
third_block.fill(primitive->acceleration);
128128
break;
@@ -133,7 +133,7 @@ bool TrajectoryPointInterface::writeMotionPrimitive(const std::shared_ptr<contro
133133
case MotionType::MOVEC_JOINT_POSE:
134134
{
135135
auto movec_primitive = std::static_pointer_cast<control::MoveCPrimitive>(primitive);
136-
first_block = motionTargetToBlock(movec_primitive->getTarget());
136+
first_block = motionTargetToBlock(movec_primitive->getTarget().value());
137137
second_block = motionTargetToBlock(movec_primitive->getVia());
138138
third_block = {
139139
primitive->velocity, primitive->acceleration, static_cast<double>(movec_primitive->mode), 0, 0, 0

tests/test_trajectory_point_interface.cpp

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -657,9 +657,9 @@ TEST_F(TrajectoryPointInterfaceTest, send_movej)
657657
traj_point_interface_->writeMotionPrimitive(primitive);
658658
auto received_primitive = client_->getMotionPrimitive();
659659
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEJ);
660-
EXPECT_EQ(
661-
std::get<urcl::Q>(std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget()),
662-
send_positions);
660+
EXPECT_EQ(std::get<urcl::Q>(
661+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value()),
662+
send_positions);
663663
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
664664
EXPECT_EQ(received_primitive->velocity, velocity);
665665
EXPECT_EQ(received_primitive->acceleration, acceleration);
@@ -680,7 +680,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movel)
680680
auto received_primitive = client_->getMotionPrimitive();
681681
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEL);
682682
EXPECT_EQ(std::get<urcl::Pose>(
683-
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget()),
683+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value()),
684684
send_positions);
685685
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
686686
EXPECT_EQ(received_primitive->velocity, velocity);
@@ -700,7 +700,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movep)
700700
auto received_primitive = client_->getMotionPrimitive();
701701
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEP);
702702
EXPECT_EQ(std::get<urcl::Pose>(
703-
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget()),
703+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value()),
704704
send_positions);
705705
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
706706
EXPECT_EQ(received_primitive->velocity, velocity);
@@ -722,7 +722,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movec)
722722
auto received_primitive = client_->getMotionPrimitive();
723723
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEC);
724724
auto received_movec = std::static_pointer_cast<control::MoveCPrimitive>(received_primitive);
725-
EXPECT_EQ(std::get<urcl::Pose>(received_movec->getTarget()), send_target);
725+
EXPECT_EQ(std::get<urcl::Pose>(received_movec->getTarget().value()), send_target);
726726
EXPECT_EQ(std::get<urcl::Pose>(received_movec->getVia()), send_via);
727727
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
728728
EXPECT_EQ(received_primitive->acceleration, acceleration);
@@ -744,7 +744,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movej_pose)
744744
auto received_primitive = client_->getMotionPrimitive();
745745
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEJ_POSE);
746746
EXPECT_EQ(std::get<urcl::Pose>(
747-
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget()),
747+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value()),
748748
send_pose);
749749
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
750750
EXPECT_EQ(received_primitive->velocity, velocity);
@@ -765,10 +765,10 @@ TEST_F(TrajectoryPointInterfaceTest, send_movel_joint)
765765
traj_point_interface_->writeMotionPrimitive(primitive);
766766
auto received_primitive = client_->getMotionPrimitive();
767767
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEL_JOINT);
768-
EXPECT_EQ(
769-
std::get<urcl::Q>(std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget())
770-
.values,
771-
send_joints.values);
768+
EXPECT_EQ(std::get<urcl::Q>(
769+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value())
770+
.values,
771+
send_joints.values);
772772
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
773773
EXPECT_EQ(received_primitive->velocity, velocity);
774774
EXPECT_EQ(received_primitive->acceleration, acceleration);
@@ -787,10 +787,10 @@ TEST_F(TrajectoryPointInterfaceTest, send_movep_joint)
787787
traj_point_interface_->writeMotionPrimitive(primitive);
788788
auto received_primitive = client_->getMotionPrimitive();
789789
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEP_JOINT);
790-
EXPECT_EQ(
791-
std::get<urcl::Q>(std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget())
792-
.values,
793-
send_joints.values);
790+
EXPECT_EQ(std::get<urcl::Q>(
791+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value())
792+
.values,
793+
send_joints.values);
794794
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
795795
EXPECT_EQ(received_primitive->velocity, velocity);
796796
EXPECT_EQ(received_primitive->acceleration, acceleration);
@@ -811,7 +811,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movec_joint_joint)
811811
auto received_primitive = client_->getMotionPrimitive();
812812
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEC_JOINT);
813813
auto movec = std::static_pointer_cast<control::MoveCPrimitive>(received_primitive);
814-
EXPECT_EQ(std::get<urcl::Q>(movec->getTarget()).values, send_target.values);
814+
EXPECT_EQ(std::get<urcl::Q>(movec->getTarget().value()).values, send_target.values);
815815
EXPECT_EQ(std::get<urcl::Q>(movec->getVia()).values, send_via.values);
816816
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
817817
EXPECT_EQ(received_primitive->acceleration, acceleration);
@@ -837,7 +837,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movec_pose_joint)
837837
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEC_JOINT_POSE);
838838
auto movec = std::static_pointer_cast<control::MoveCPrimitive>(received_primitive);
839839
EXPECT_EQ(std::get<urcl::Pose>(movec->getVia()), send_via);
840-
EXPECT_EQ(std::get<urcl::Q>(movec->getTarget()).values, send_target.values);
840+
EXPECT_EQ(std::get<urcl::Q>(movec->getTarget().value()).values, send_target.values);
841841
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
842842
EXPECT_EQ(received_primitive->acceleration, acceleration);
843843
EXPECT_EQ(received_primitive->velocity, velocity);
@@ -862,7 +862,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_movec_joint_pose)
862862
EXPECT_EQ(received_primitive->type, control::MotionType::MOVEC_POSE_JOINT);
863863
auto movec = std::static_pointer_cast<control::MoveCPrimitive>(received_primitive);
864864
EXPECT_EQ(std::get<urcl::Q>(movec->getVia()).values, send_via.values);
865-
EXPECT_EQ(std::get<urcl::Pose>(movec->getTarget()), send_target);
865+
EXPECT_EQ(std::get<urcl::Pose>(movec->getTarget().value()), send_target);
866866
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
867867
EXPECT_EQ(received_primitive->acceleration, acceleration);
868868
EXPECT_EQ(received_primitive->velocity, velocity);
@@ -882,7 +882,7 @@ TEST_F(TrajectoryPointInterfaceTest, send_optimovej_pose)
882882
auto received_primitive = client_->getMotionPrimitive();
883883
EXPECT_EQ(received_primitive->type, control::MotionType::OPTIMOVEJ_POSE);
884884
EXPECT_EQ(std::get<urcl::Pose>(
885-
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget()),
885+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value()),
886886
send_pose);
887887
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
888888
EXPECT_EQ(received_primitive->velocity, velocity_fraction);
@@ -901,10 +901,10 @@ TEST_F(TrajectoryPointInterfaceTest, send_optimovel_joint)
901901
traj_point_interface_->writeMotionPrimitive(primitive);
902902
auto received_primitive = client_->getMotionPrimitive();
903903
EXPECT_EQ(received_primitive->type, control::MotionType::OPTIMOVEL_JOINT);
904-
EXPECT_EQ(
905-
std::get<urcl::Q>(std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget())
906-
.values,
907-
send_joints.values);
904+
EXPECT_EQ(std::get<urcl::Q>(
905+
std::static_pointer_cast<control::MotionPrimitiveWithTarget>(received_primitive)->getTarget().value())
906+
.values,
907+
send_joints.values);
908908
EXPECT_EQ(received_primitive->blend_radius, blend_radius);
909909
EXPECT_EQ(received_primitive->velocity, velocity_fraction);
910910
EXPECT_EQ(received_primitive->acceleration, acceleration_fraction);

0 commit comments

Comments
 (0)