Skip to content

Commit dbd1dc5

Browse files
committed
wip
1 parent 30bc0e1 commit dbd1dc5

File tree

4 files changed

+24
-25
lines changed

4 files changed

+24
-25
lines changed

components/arm/client.go

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ type client struct {
2323
resource.TriviallyCloseable
2424
name string
2525
client pb.ArmServiceClient
26+
model referenceframe.Model
2627
logger logging.Logger
2728
}
2829

@@ -35,12 +36,24 @@ func NewClientFromConn(
3536
logger logging.Logger,
3637
) (Arm, error) {
3738
pbClient := pb.NewArmServiceClient(conn)
38-
return &client{
39+
c := &client{
3940
Named: name.PrependRemote(remoteName).AsNamed(),
4041
name: name.ShortName(),
4142
client: pbClient,
4243
logger: logger,
43-
}, nil
44+
}
45+
clientFrame, err := c.Kinematics(ctx)
46+
if err != nil {
47+
logger.CWarnw(
48+
ctx,
49+
"error getting model for arm; making the assumption that joints are revolute and that their positions are specified in degrees",
50+
"err",
51+
err,
52+
)
53+
} else {
54+
c.model = clientFrame
55+
}
56+
return c, nil
4457
}
4558

4659
func (c *client) EndPosition(ctx context.Context, extra map[string]interface{}) (spatialmath.Pose, error) {
@@ -79,12 +92,7 @@ func (c *client) MoveToJointPositions(ctx context.Context, positions []reference
7992
if err != nil {
8093
return err
8194
}
82-
m, err := c.Kinematics(ctx)
83-
if err != nil {
84-
return err
85-
}
86-
87-
jp, err := referenceframe.JointPositionsFromInputs(m, positions)
95+
jp, err := referenceframe.JointPositionsFromInputs(c.model, positions)
8896
if err != nil {
8997
return err
9098
}
@@ -110,12 +118,8 @@ func (c *client) MoveThroughJointPositions(
110118
c.logger.Warnf("%s MoveThroughJointPositions: position argument is nil", c.name)
111119
}
112120
allJPs := make([]*pb.JointPositions, 0, len(positions))
113-
m, err := c.Kinematics(ctx)
114-
if err != nil {
115-
return err
116-
}
117121
for _, position := range positions {
118-
jp, err := referenceframe.JointPositionsFromInputs(m, position)
122+
jp, err := referenceframe.JointPositionsFromInputs(c.model, position)
119123
if err != nil {
120124
return err
121125
}
@@ -145,11 +149,7 @@ func (c *client) JointPositions(ctx context.Context, extra map[string]interface{
145149
if err != nil {
146150
return nil, err
147151
}
148-
m, err := c.Kinematics(ctx)
149-
if err != nil {
150-
return nil, err
151-
}
152-
return referenceframe.InputsFromJointPositions(m, resp.Positions)
152+
return referenceframe.InputsFromJointPositions(c.model, resp.Positions)
153153
}
154154

155155
func (c *client) Stop(ctx context.Context, extra map[string]interface{}) error {

components/arm/client_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package arm_test
22

33
import (
44
"context"
5-
"errors"
65
"net"
76
"testing"
87

@@ -83,7 +82,7 @@ func TestClient(t *testing.T) {
8382
return errStopUnimplemented
8483
}
8584
injectArm.KinematicsFunc = func(ctx context.Context) (referenceframe.Model, error) {
86-
return nil, errors.New("KinematicsFunc unimplemented")
85+
return nil, errKinematicsUnimplemented
8786
}
8887
injectArm.GeometriesFunc = func(ctx context.Context) ([]spatialmath.Geometry, error) {
8988
return expectedGeometries, nil
@@ -110,7 +109,7 @@ func TestClient(t *testing.T) {
110109
return nil
111110
}
112111
injectArm2.KinematicsFunc = func(ctx context.Context) (referenceframe.Model, error) {
113-
return nil, errors.New("KinematicsFunc unimplemented")
112+
return nil, errKinematicsUnimplemented
114113
}
115114

116115
armSvc, err := resource.NewAPIResourceCollection(arm.API, map[resource.Name]arm.Arm{

components/arm/server.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,6 @@ func (s *serviceServer) GetJointPositions(ctx context.Context, req *pb.GetJointP
6666
if err != nil {
6767
return nil, err
6868
}
69-
7069
jp, err := referenceframe.JointPositionsFromInputs(m, pos)
7170
if err != nil {
7271
return nil, err

components/arm/server_test.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ var (
2626
errMoveToJointPositionFailed = errors.New("can't move to joint positions")
2727
errStopUnimplemented = errors.New("Stop unimplemented")
2828
errArmUnimplemented = errors.New("not found")
29+
errKinematicsUnimplemented = errors.New("kinematics unimplemented")
2930
)
3031

3132
func newServer() (pb.ArmServiceServer, *inject.Arm, *inject.Arm, error) {
@@ -114,7 +115,7 @@ func TestServer(t *testing.T) {
114115
return errMoveToJointPositionFailed
115116
}
116117
injectArm2.KinematicsFunc = func(ctx context.Context) (referenceframe.Model, error) {
117-
return nil, errors.New("KinematicsFunc unimplemented")
118+
return nil, errKinematicsUnimplemented
118119
}
119120
injectArm2.StopFunc = func(ctx context.Context, extra map[string]interface{}) error {
120121
return errStopUnimplemented
@@ -249,8 +250,8 @@ func TestServer(t *testing.T) {
249250
test.That(t, kinematics.Format, test.ShouldResemble, commonpb.KinematicsFileFormat_KINEMATICS_FILE_FORMAT_URDF)
250251

251252
kinematics, err = armServer.GetKinematics(context.Background(), &commonpb.GetKinematicsRequest{Name: failArmName})
252-
test.That(t, err, test.ShouldBeNil)
253-
test.That(t, kinematics.Format, test.ShouldResemble, commonpb.KinematicsFileFormat_KINEMATICS_FILE_FORMAT_UNSPECIFIED)
253+
test.That(t, err, test.ShouldNotBeNil)
254+
test.That(t, err, test.ShouldResemble, errKinematicsUnimplemented)
254255
})
255256

256257
t.Run("stop", func(t *testing.T) {

0 commit comments

Comments
 (0)