Project Questor

rgordon

USA
robot video thumbnail
robot video thumbnail
robot video thumbnail
robot video thumbnail
robot video thumbnail
robot video thumbnail

Introducing Questor.

I put a hold on my large robot project Magnus awhile back due to budget and time constraints. I wanted to have a platform that was way smaller, easy to modify for testing purposes and small enough to roam around inside the house autonomously. Questor will serve as a test platform for systems that will eventually be placed in Magnus. Questor was not intended to be a cool looking robot platform, just functional and very basic in appearance. My main goal is for him to be autonomous with the option of me being able to take over remote control separately if needed. I would like for him to be able to automatically find and connect with his battery charger and to eventually have a good A.I.

So here is a first look at him...

User-inserted image

User-inserted image

User-inserted image

The head is made from a small boom box which I thought was neat because of the alien eye look. When illuminated they have a white border with blue eyes.

User-inserted image

User-inserted image

User-inserted image

His nose is the camera. Just below that is his voice lights made from an LED flashlight. I actually drilled a hole through the tilt servo case to pass the voice light wires through. The cluster of LEDs above his head are IR LEDs.

User-inserted image

User-inserted image

Here you can see the EZ-B and the R/C Mux and Battle Switch.

User-inserted image

User-inserted image

The LEDs on the silver box are for effect only. They will flash sequentially back and forth.

User-inserted image

User-inserted image

View of the motors and battery compartment area.

User-inserted image

The power system deck.

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

User-inserted image

Weird....the pictures below [b]this line were not intended to be here in this first post. When I made the new post below, it saved the pictures in this post also. When I tried to go back and edit them out of this first post they don't show up on the thread so I can delete them. They belong in the post below....see details for the new wheels in the later post.[/b]

By — Last update
Jump to end

ARC Pro

Upgrade to ARC Pro

Join the ARC Pro community and gain access to a wealth of resources and support, ensuring your robot's success.

#121  

@Rich - When you get the time could you help me with the voice lights script I posted. It is my first attempt so I know it looks kinda crude. I am sure I could, for instance, put the voice lights loop script in with the wake up script as a sub routine and maybe there is a better way of doing this. But at least for now it works well enough to use and only flashes the voice lights while he is speaking and no other sounds trigger it. However, I am needing a small tutorial to understand the script commands: GOTO, RETURN, IF, ELSEIF, ELSE, and ENDIF.

What I am unsure of is how they cause the script to jump from one place to another and whether they pause the script or not. Maybe some examples tracing out what lines or directions in the script these commands take and come back to would help.

United Kingdom
#122  

Sorry, I was ill Friday evening and ended up having to help sort out my nephews Christening over the weekend. Hopefully tonight if not tomorrow.

#123  

Thanks...take your time...hope you feel better.

#124  

HI REX your goodie package on the way,second i put in 2 sharp optical sensors ,something like the ones we use only a short range ,i think 8 inches

DATA SHEET kinda hard to find,buy i asked neato company and they gave me the full part # i mostly sell them about $6 but free to my buddy

I have about 60 of them

RICH one day becomes my buddy might send him some free stuff too.

#125  

Thanks very much Fred. I can't wait to experiment with them!

Thanks BTW for posting pictures of your robots. I have enjoyed looking through all of the photos. I like the built from scratch version.

#126  

HERE is a good example ,in google search put in (turtlebot) they sell open source robot using a irobot create ,laptop with LINUX ROS and a kinect,i made the same one in my robot photos and works very good.

United Kingdom
#127  

Sorry Rex, I totally forgot about this until 5 minutes ago... but here we go:)

First add the Sound servo control and set it up as below.

User-inserted image

Then add a new script control or new script to a script manager...


# $soundvalue = auto
$pwmvalue = 0

:loop
IF ($soundvalue < 10)
  $pwmvalue = 0
ELSEIF ($soundvalue < 20)
  $pwmvalue = 10
ELSEIF ($soundvalue < 30)
  $pwmvalue = 20
ELSEIF ($soundvalue < 40)
  $pwmvalue = 30
ELSEIF ($soundvalue < 50)
  $pwmvalue = 40
ELSEIF ($soundvalue < 60)
  $pwmvalue = 50
ELSEIF ($soundvalue < 70)
  $pwmvalue = 60
ELSEIF ($soundvalue < 80)
  $pwmvalue = 70
ELSEIF ($soundvalue < 90)
  $pwmvalue = 80
ELSE 
  $pwmvalue = 90
ENDIF 
PWM(D7, $pwmvalue)
Sleep(100)
Goto(loop)

Change the port on the PWM command line if needed, I used D7 but any port will work. Duplicate that line with a different port number if you need 2 (or more) ports to react.

You may also need to adjust the PWM values in the if/elseif part to suit your robot.

United Kingdom
#128  

If, ElseIf, Else, Goto and Return... Let's see if I can describe them:) (I guess I'll copy this to another topic as a tutorial once it's done).

An if command requires a condition, this is the part in brackets after it. Think of it logically, it's the same as you think when you decide IF you want to do something or not. So, for instance, you go to the supermarket, you walk past the apples and need to decide IF you need any. You check how many you have at home (not sure how, I didn't think this through well but we will carry on as it's unimportant), how many you need and decide.

IF($ApplesAtHome < $ApplesNeeded)
  Buy some apples
EndIf

This says, if you have less than the amount of apples you need at home then you need to buy some apples. Otherwise do nothing. Basically, whatever is between the IF and the EndIf lines is only executed IF the condition is met or true. Otherwise it is ignored.

ElseIf works in a similar way but is part of a bigger condition. Say you wanted to know IF you needed to buy a lot apples or needed to buy just a few apples.

IF($ApplesAtHome = 0)
  Buy lots of apples
ElseIf($ApplesAtHome < $ApplesNeeded)
   Buy a few apples
EndIf

You could change it so it works out how many apples to buy with some arithmetic functions but I will save that for another time. One function at a time is easiest to learn.

You can have as many ElseIfs as you need. It's only the part between the first ElseIf and the next ElseIf line or EndIf (if it's last) that is executed, the rest is ignored.

Now say only needed apples provided you had no bananas, this is where the AND and OR conditions come in to play. Again, think logically. If I have no bananas and have no apples then I need some apples...

IF($BananasAtHome = 0 and $ApplesAtHome < $ApplesNeeded)
  Buy apples
EndIf

Only if both parts of the condition are met will the command between the IF and EndIf be executed.

Or is another condition that can be used. For instance, you now look at the pears, but you only need to buy pears IF you have no apples or have no bananas.

IF($apples = 0 OR $bananas = 0)
  Buy some pears
EndIf

All of the AND, OR, <, >, =, <=, >= and <> conditions can be used in all IF statements and all ElseIf statements. You can also mix and match the ANDs and ORs. Phrase the condition correctly, in the order you would phrase it to a person or in your head...

IF($apples = 0 OR $bananas = 0 AND $pears &lt; 5)
  Buy some pears
ElseIf($apples = 0 AND $bananas = 0 or $Apples = 0 AND $pears &lt; 2)
  Buy a mango
EndIf

In this example, if you have no bananas or apples and less than 5 pears you will buy some pears. If you have no apples and no bananas, or no apples and less than 2 pears you will buy a mango. Otherwise you buy nothing.

Else is slightly different, else doesn't have a condition. Think of the last example and when you buy nothing. Else fills in this gap. Rather than buying nothing, or executing nothing, if no condition is met something else can be executed or bought.

IF($apples = 0 OR $bananas = 0 AND $pears &lt; 5)
  Buy some pears
ElseIf($apples = 0 AND $bananas = 0 or $Apples = 0 AND $pears &lt; 2)
  Buy a mango
Else
  You have too much fruit, buy beer
EndIf

In this example, if you have no bananas or apples and less than 5 pears you will buy some pears. If you have no apples and no bananas, or no apples and less than 2 pears you will buy a mango. Otherwise you buy beer.

As for goto and return. These are two parts of a very similar command. One will jump to a label (goto) the other will jump back to where it come from (return).

Following on the same examples. Your wife tells you to GOTO the shop


Goto(shop)

So you go to the shop. Or in the script, jump to the label called shop.

:shop

You then carry on following whatever instructions are after that label. Let's say it's the above IFs. You keep following line by line ignoring anything that any IF conditions are not met.

At the end of it you need to RETURN home. So a return command is used.

Return()

This command will go back to the line after the last Goto command which was executed is, and then you carry on following instructions line by line.

So, an example with line numbers;


1 Print(&quot;Hello world&quot;)
2 If($day = &quot;Monday&quot;)
3   Goto(monday)
4 ElseIf($day = &quot;Friday&quot;)
5   Goto(friday)
6 ElseIf($day = &quot;Saturday&quot; or $day = &quot;Sunday&quot;)
7   Goto(weekend)
8 Else
9   Goto(end)
10 EndIf
11 Halt()
12 :monday
13 Print(&quot;It is Monday, Boo!&quot;)
14 Return()
15 :friday
16 Print(&quot;It is Friday, the weekend is almost here!&quot;)
17 Return()
18 :weekend
19 Print(&quot;It is the weekend, yay!&quot;)
20 Return()
21 :end
22 Print(&quot;Today isnt important - terminating&quot;)
23 Halt()

In this example code, if it's a Monday it will execute the lines of code in this order; 1, 2, 3, 12, 13, 14, 10, 11

If it's a Friday it will execute in this order; 1, 2, 4, 5, 15, 16, 17, 10, 11

If it's a weekend; 1, 2, 4, 6, 7, 18, 19, 20, 10, 11

If it's any other day; 1, 2, 4, 6, 8, 9, 21, 22, 23

Hopefully that is clear enough but if you have any questions or if anything doesn't quite make sense to you please ask.