feat: implement copilot drive mode
This commit is contained in:
@@ -158,7 +158,7 @@ func (c *Controller) onRCSteering(_ mqtt.Client, message mqtt.Message) {
|
||||
func (c *Controller) onTFSteering(_ mqtt.Client, message mqtt.Message) {
|
||||
c.muDriveMode.RLock()
|
||||
defer c.muDriveMode.RUnlock()
|
||||
if c.driveMode != events.DriveMode_PILOT {
|
||||
if c.driveMode != events.DriveMode_PILOT && c.driveMode != events.DriveMode_COPILOT {
|
||||
// User mode, skip new message
|
||||
return
|
||||
}
|
||||
|
@@ -65,6 +65,20 @@ func TestDefaultSteering(t *testing.T) {
|
||||
events.SteeringMessage{Steering: 0.7, Confidence: 1.0},
|
||||
events.ObjectsMessage{},
|
||||
},
|
||||
{
|
||||
events.DriveModeMessage{DriveMode: events.DriveMode_COPILOT},
|
||||
events.SteeringMessage{Steering: 0.5, Confidence: 1.0},
|
||||
events.SteeringMessage{Steering: 0.6, Confidence: 1.0},
|
||||
events.SteeringMessage{Steering: 0.6, Confidence: 1.0},
|
||||
events.ObjectsMessage{},
|
||||
},
|
||||
{
|
||||
events.DriveModeMessage{DriveMode: events.DriveMode_COPILOT},
|
||||
events.SteeringMessage{Steering: 0.4, Confidence: 1.0},
|
||||
events.SteeringMessage{Steering: 0.7, Confidence: 1.0},
|
||||
events.SteeringMessage{Steering: 0.7, Confidence: 1.0},
|
||||
events.ObjectsMessage{},
|
||||
},
|
||||
{
|
||||
events.DriveModeMessage{DriveMode: events.DriveMode_USER},
|
||||
events.SteeringMessage{Steering: 0.5, Confidence: 1.0},
|
||||
@@ -214,6 +228,23 @@ func TestController_Start(t *testing.T) {
|
||||
// Get rc value without correction
|
||||
want: events.SteeringMessage{Steering: 0.4, Confidence: 1.0},
|
||||
},
|
||||
{
|
||||
name: "On copilot drive mode, none correction",
|
||||
fields: fields{
|
||||
driveMode: events.DriveMode_COPILOT,
|
||||
enableCorrection: false,
|
||||
enableCorrectionOnUser: false,
|
||||
},
|
||||
msgEvents: msgEvents{
|
||||
driveMode: events.DriveModeMessage{DriveMode: events.DriveMode_COPILOT},
|
||||
rcSteering: events.SteeringMessage{Steering: 0.3, Confidence: 1.0},
|
||||
tfSteering: events.SteeringMessage{Steering: 0.4, Confidence: 1.0},
|
||||
objects: events.ObjectsMessage{Objects: []*events.Object{&objectOnMiddleNear}},
|
||||
},
|
||||
correctionOnObject: 0.5,
|
||||
// Get rc value without correction
|
||||
want: events.SteeringMessage{Steering: 0.4, Confidence: 1.0},
|
||||
},
|
||||
{
|
||||
name: "On pilot drive mode, correction enabled",
|
||||
fields: fields{
|
||||
@@ -248,6 +279,40 @@ func TestController_Start(t *testing.T) {
|
||||
// Get rc value without correction
|
||||
want: events.SteeringMessage{Steering: 0.5, Confidence: 1.0},
|
||||
},
|
||||
{
|
||||
name: "On copilot drive mode, correction enabled",
|
||||
fields: fields{
|
||||
driveMode: events.DriveMode_COPILOT,
|
||||
enableCorrection: true,
|
||||
enableCorrectionOnUser: false,
|
||||
},
|
||||
msgEvents: msgEvents{
|
||||
driveMode: events.DriveModeMessage{DriveMode: events.DriveMode_COPILOT},
|
||||
rcSteering: events.SteeringMessage{Steering: 0.3, Confidence: 1.0},
|
||||
tfSteering: events.SteeringMessage{Steering: 0.4, Confidence: 1.0},
|
||||
objects: events.ObjectsMessage{Objects: []*events.Object{&objectOnMiddleNear}},
|
||||
},
|
||||
correctionOnObject: 0.5,
|
||||
// Get rc value without correction
|
||||
want: events.SteeringMessage{Steering: 0.5, Confidence: 1.0},
|
||||
},
|
||||
{
|
||||
name: "On copilot drive mode, all corrections enabled",
|
||||
fields: fields{
|
||||
driveMode: events.DriveMode_COPILOT,
|
||||
enableCorrection: true,
|
||||
enableCorrectionOnUser: true,
|
||||
},
|
||||
msgEvents: msgEvents{
|
||||
driveMode: events.DriveModeMessage{DriveMode: events.DriveMode_COPILOT},
|
||||
rcSteering: events.SteeringMessage{Steering: 0.3, Confidence: 1.0},
|
||||
tfSteering: events.SteeringMessage{Steering: 0.4, Confidence: 1.0},
|
||||
objects: events.ObjectsMessage{Objects: []*events.Object{&objectOnMiddleNear}},
|
||||
},
|
||||
correctionOnObject: 0.5,
|
||||
// Get rc value without correction
|
||||
want: events.SteeringMessage{Steering: 0.5, Confidence: 1.0},
|
||||
},
|
||||
{
|
||||
name: "On user drive mode, only correction PILOT enabled",
|
||||
fields: fields{
|
||||
|
Reference in New Issue
Block a user