Asked — Edited
Resolved Resolved by bhouston!

How To Make My Robot Give Different Responses When The Robot'S Camera Detects 3

I want to make my robot do a function in such a way that for example, when it detects a red colour object, the robot responses as "I see a red colour object" and it does the same thing for blue or green object.


ARC Pro

Upgrade to ARC Pro

ARC Pro is your gateway to a community of like-minded robot enthusiasts and professionals, all united by a passion for advanced robot programming.

#1  

Use the tracking script in the camera control and the variable $CameraObjectColor to return the colour detected...

User-inserted image

User-inserted image

Canada
#2  

this is a portion of script I am using to track a red tag to navigate in a room:

Search for color tag containing QR code to help find destination

set Color tracking ex:red

start scanning for red card

move to an open space ( adjust distance sensors to a larger detection area)

if not found move to next open space

on tracking result successful move toward it

set QR code tracking on

read code and move according to the code

$target=0

if ($destination = 1)  
      $target= ("Office")

  ElseIf  ($destination = 2)
      $target= ("bedroom")

  ElseIf  ($destination = 3)
      $target= ("lodge")

  ElseIf  ($destination = 4)
      $target= ("workshop")

EndIf 

If ($destination > 0)
        ControlCommand("Camera", CameraColorTracking, "red")       Enable red detection
        

        Say("Scanning around to find red tag showing direction to the"+ $target)

                                              # scan with head and/or body to detect color tag
                                              # If no success move to an open space
endif

$CameraVerticalQuadrant= "Unknown" # reset variable for subsequent reading

RepeatUntil ($CameraVerticalQuadrant="Middle") # Variable switching state when red color is detected
Sleep(500)

EndRepeatUntil

$CameraVerticalQuadrant= "Unknown" # reset variable Say("found red tag")

#3  

Aerius, I dont want it to detect one colour. I want multiple colours. If it detects Red colour, i expect the robot to do action A. If it detects Blue, action B and if Yellow, Action C.

#4  

@NYP.Shank_95 ... See my post above... You use $CameraObjectColor to determine which colour the camera is tracking....

#5  

@NYP.Shank_95 Here's a script that does what you want. You have to calibrate your colors in the "Multi Color" tab in the Camera control.


$sent = "Ok looking for different colors"
ControlCommand("2 Text to Speech", ScriptStart)

:loop
ControlCommand("Camera", CameraServoTrackEnable)
ControlCommand("Camera", CameraMultiColorTracking)

Waitfor($cameraverticalquadrant = "middle" and $camerahorizontalquadrant = "middle",1000)

If($CameraObjectColor = "red")
$sent = "red" # says red
ControlCommand("2 Text to Speech", ScriptStart)
ControlCommand("Camera", CameraMultiColorTrackingDisable)

endif
sleep(500)
ControlCommand("Camera", CameraServoTrackEnable)
ControlCommand("Camera", CameraMultiColorTracking)

Waitfor($cameraverticalquadrant = "middle" and $camerahorizontalquadrant = "middle",1000)

if($CameraObjectColor = "blue")
$sent = "blue" #says blue
ControlCommand("2 Text to Speech", ScriptStart)
ControlCommand("Camera", CameraMultiColorTrackingDisable)

endif
sleep(500)
ControlCommand("Camera", CameraServoTrackEnable)
ControlCommand("Camera", CameraMultiColorTracking)

Waitfor($cameraverticalquadrant = "middle" and $camerahorizontalquadrant = "middle",1000)

if($CameraObjectColor = "green")
$sent = "green" #says green
ControlCommand("2 Text to Speech", ScriptStart)
ControlCommand("Camera", CameraMultiColorTrackingDisable)

endif
sleep(500)
ControlCommand("Camera", CameraServoTrackEnable)
ControlCommand("Camera", CameraMultiColorTracking)

Waitfor($cameraverticalquadrant = "middle" and $camerahorizontalquadrant = "middle",1000)

if($CameraObjectColor = "yellow")
$sent = "yellow" #says yellow
ControlCommand("2 Text to Speech", ScriptStart)
ControlCommand("Camera", CameraMultiColorTrackingDisable)

endif

goto(loop)

You can put in whatever you want the robot to do after it detects the color. I have it just saying the color it sees.

Edit: It says the last color detect over and over again until it sees a different color. I'm working on that, if anyone has any suggestions, let me know

#7  

Richard, it has been there right from beginning. I was actually looking for something like what bhouston commented.

#8  

@NYP.Shank_95 You mean you wanted one of us to write the code for you?.... Ok, but it is hard to learn when you just copy someone else's work... I always try to do something myself first. I don't like asking for help (because I feel like I am admitting defeat) but sometimes If I get really stuck I ask here as there are a lot of smarter guys on here than me...