feat: record drive mode and autopilot steering
This commit is contained in:
@ -8,7 +8,6 @@ import (
|
||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||
"go.uber.org/zap"
|
||||
"google.golang.org/protobuf/proto"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
)
|
||||
|
||||
@ -69,7 +68,7 @@ func (r *Recorder) onRecordMsg(_ mqtt.Client, message mqtt.Message) {
|
||||
l.Errorf("unable to create %v directory: %v", imgDir, err)
|
||||
return
|
||||
}
|
||||
err = ioutil.WriteFile(imgName, msg.GetFrame().GetFrame(), os.FileMode(0755))
|
||||
err = os.WriteFile(imgName, msg.GetFrame().GetFrame(), os.FileMode(0755))
|
||||
if err != nil {
|
||||
l.Errorf("unable to write img file %v: %v", imgName, err)
|
||||
return
|
||||
@ -83,15 +82,17 @@ func (r *Recorder) onRecordMsg(_ mqtt.Client, message mqtt.Message) {
|
||||
return
|
||||
}
|
||||
record := Record{
|
||||
UserAngle: msg.GetSteering().GetSteering(),
|
||||
CamImageArray: imgRef,
|
||||
UserAngle: msg.GetSteering().GetSteering(),
|
||||
CamImageArray: imgRef,
|
||||
AutopilotAngle: msg.GetAutopilotSteering().GetSteering(),
|
||||
DriveMode: msg.GetDriveMode().GetDriveMode().String(),
|
||||
}
|
||||
jsonBytes, err := json.Marshal(&record)
|
||||
if err != nil {
|
||||
l.Errorf("unable to marshal json content: %v", err)
|
||||
return
|
||||
}
|
||||
err = ioutil.WriteFile(recordName, jsonBytes, 0755)
|
||||
err = os.WriteFile(recordName, jsonBytes, 0755)
|
||||
if err != nil {
|
||||
l.Errorf("unable to write json file %v: %v", recordName, err)
|
||||
}
|
||||
@ -99,6 +100,8 @@ func (r *Recorder) onRecordMsg(_ mqtt.Client, message mqtt.Message) {
|
||||
}
|
||||
|
||||
type Record struct {
|
||||
UserAngle float32 `json:"user/angle,"`
|
||||
CamImageArray string `json:"cam/image_array,"`
|
||||
UserAngle float32 `json:"user/angle,"`
|
||||
AutopilotAngle float32 `json:"autopilot/angle,"`
|
||||
CamImageArray string `json:"cam/image_array,"`
|
||||
DriveMode string `json:"drive/mode,omitempty"`
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ import (
|
||||
mqtt "github.com/eclipse/paho.mqtt.golang"
|
||||
"github.com/golang/protobuf/ptypes/timestamp"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
"testing"
|
||||
"time"
|
||||
@ -35,12 +36,14 @@ func TestRecorder_onRecordMsg(t *testing.T) {
|
||||
recordSet: "default",
|
||||
},
|
||||
args: args{
|
||||
message: generateMessage("1", "default", -0.5),
|
||||
message: generateMessage("1", "default", -0.5, 0.6, events.DriveMode_PILOT),
|
||||
},
|
||||
wantJsonFileName: "record_1.json",
|
||||
wantRecord: Record{
|
||||
UserAngle: -0.5,
|
||||
CamImageArray: "cam/cam-image_array_1.jpg",
|
||||
UserAngle: -0.5,
|
||||
CamImageArray: "cam/cam-image_array_1.jpg",
|
||||
AutopilotAngle: 0.6,
|
||||
DriveMode: events.DriveMode_PILOT.String(),
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -50,7 +53,7 @@ func TestRecorder_onRecordMsg(t *testing.T) {
|
||||
recordsDir: tt.fields.recordsDir,
|
||||
}
|
||||
r.onRecordMsg(nil, tt.args.message)
|
||||
fis, err := ioutil.ReadDir(tt.fields.recordsDir)
|
||||
fis, err := os.ReadDir(tt.fields.recordsDir)
|
||||
if err != nil {
|
||||
t.Errorf("unable to list files: %v", err)
|
||||
return
|
||||
@ -64,7 +67,7 @@ func TestRecorder_onRecordMsg(t *testing.T) {
|
||||
if fis[0].Name() != tt.name {
|
||||
t.Errorf("bad directory name '%v', want '%v'", fis[0].Name(), tt.fields.recordSet)
|
||||
}
|
||||
records, err := ioutil.ReadDir(path.Join(tt.fields.recordsDir, fis[0].Name()))
|
||||
records, err := os.ReadDir(path.Join(tt.fields.recordsDir, fis[0].Name()))
|
||||
if err != nil {
|
||||
t.Errorf("unable to list record files")
|
||||
return
|
||||
@ -113,7 +116,8 @@ func TestRecorder_onRecordMsg(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func generateMessage(id string, recordSet string, userAngle float32) mqtt.Message {
|
||||
func generateMessage(id string, recordSet string, userAngle float32, autopilotAngle float32,
|
||||
driveMode events.DriveMode) mqtt.Message {
|
||||
now := time.Now()
|
||||
msg := events.RecordMessage{
|
||||
Frame: &events.FrameMessage{
|
||||
@ -139,6 +143,21 @@ func generateMessage(id string, recordSet string, userAngle float32) mqtt.Messag
|
||||
},
|
||||
},
|
||||
},
|
||||
DriveMode: &events.DriveModeMessage{
|
||||
DriveMode: driveMode,
|
||||
},
|
||||
AutopilotSteering: &events.SteeringMessage{
|
||||
Steering: autopilotAngle,
|
||||
Confidence: 0.8,
|
||||
FrameRef: &events.FrameRef{
|
||||
Name: fmt.Sprintf("framie-%s", id),
|
||||
Id: id,
|
||||
CreatedAt: ×tamp.Timestamp{
|
||||
Seconds: now.Unix(),
|
||||
Nanos: int32(now.Nanosecond()),
|
||||
},
|
||||
},
|
||||
},
|
||||
RecordSet: recordSet,
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user