Author Topic: The amazing Antbot  (Read 22819 times)

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #45 on: June 27, 2008, 06:26:15 PM »
Now that's cool.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline fulizer

  • Bot Destroyer
  • ***
  • Posts: 198
    • View Profile
The amazing Antbot
« Reply #46 on: June 30, 2008, 06:24:01 AM »
I was making a antbot (not very far) and planned to have a puller bot.
what makes them different is that mine are simpler thanother antbots iv'e seen. mainly, rather than getting its loation from the quenn at birth it gets it from its own position and it doesn't (so far) store food lo0cations in it, the queen doesn't feed itself before getting it's first worker, and the worker goes within about 10 cycles
"If this is coffee bring me tea, If this is tea, bring me coffee"

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #47 on: July 22, 2008, 08:05:44 AM »
The problem is that when multiple bots are in the colony, they tend to push the queen away from her original position. This means that the queen might end up far away from where the workers think.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
The amazing Antbot
« Reply #48 on: July 23, 2008, 12:21:15 AM »
Why not just fix the queens position at her birth. Then just unfix all the non-queens.

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #49 on: September 01, 2008, 12:37:46 AM »
Ah, there's the big problem. It's something to do with the collision pyhsics, I think, that even fixed bots can be bumped out of place. Can anyone confirm?
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
The amazing Antbot
« Reply #50 on: September 01, 2008, 11:31:31 AM »
Well, a new change is coming. Look athttp://www.darwinbots.com/Forum/index.php?showtopic=2854
But, anyway. As far I know at this moment fixing means fixed, fixed as in unmovable. If at this moment it is not, it would be a bug, I think   . You can add any suggestions about fixpos at the earlier named topic, now is the time for a suggestion about it.
Oh my god, who the hell cares.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
The amazing Antbot
« Reply #51 on: October 11, 2008, 01:49:16 AM »
So, any updates?

This is really cool, keep it up!

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #52 on: October 11, 2008, 05:14:38 PM »
Not really; somewhere along, I must have undermined the code, because the queens are too fragile and the drones don't replace them.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #53 on: October 11, 2008, 05:38:05 PM »
Actually, I was thinking of building a complicated hive multibot. If you are interested in working together on a project, feel free. This was the rough sketch I made:
1-Single cells start out as 'spores', and wait until they have enough nrg/see enough veggies to form a colony
2-The hive is controlled by a centralized brain, which cycles through its ties using something like *.timer x mod .readtie store, then collecting data from the outer cells
3-A secondary set of cells which connect the brain to outer cells, relaying information and stimulating production of shell/poison/venom etc. They also bind to veggies.
4-Tentacle cells form around the central cells, which seek out food and drag it in. Also expel waste.
5-Sensor cells at the tip of tentacles which attack intruders, and may move the hive around (not sure if it moves yet). They collect data about eyes, shell etc, which gets fed back to the brains.

Feel free to change this, it's only a rough idea of varying levels of detail.
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
The amazing Antbot
« Reply #54 on: October 11, 2008, 11:23:21 PM »
Quote from: bacillus
Actually, I was thinking of building a complicated hive multibot. If you are interested in working together on a project, feel free. This was the rough sketch I made:
1-Single cells start out as 'spores', and wait until they have enough nrg/see enough veggies to form a colony
2-The hive is controlled by a centralized brain, which cycles through its ties using something like *.timer x mod .readtie store, then collecting data from the outer cells
3-A secondary set of cells which connect the brain to outer cells, relaying information and stimulating production of shell/poison/venom etc. They also bind to veggies.
4-Tentacle cells form around the central cells, which seek out food and drag it in. Also expel waste.
5-Sensor cells at the tip of tentacles which attack intruders, and may move the hive around (not sure if it moves yet). They collect data about eyes, shell etc, which gets fed back to the brains.

Feel free to change this, it's only a rough idea of varying levels of detail.

I've always wanted to see a MB with a multicellular brain, but I currently know nothing on coding bots. I do know a few computer languages, though, and I'm knowledgeable in neuroscience, so I might be able to help if you need opinions on making the central neural network.

With an MB this complex, you could make sperm and eggs, too. One cell breaks off the hive, which searches for another free-floating cell from another hive to form a spore.

Or, similarly, the hive could be the queen of an ant colony. When it needs something, it just breaks off one of it's cells to become an ant. The ant cell then brings back food, etc... until it is no longer needed and can re-assimilate into the hive.

The coolest thing by far, though, would be for it to actually learn. Like if it keeps getting attacked when it gets close to another hive, it will learn to avoid other hives. Would that be feasible, though?

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
The amazing Antbot
« Reply #55 on: October 12, 2008, 08:49:57 AM »
It's my impression that fixed bots can be moved by collisions... so you risk having your queen moved... so you could ofcourse store the old location and try to move back... but what if more bots just push you further away ?
My experience is that often making a bot too acurate and too precise is not an advantage but just leaves a tight margin for errors. Instead of having absolute values the bot could remember where it was last time it saw a queen.... and when looking for that queen instead of going to the exact location it goes to a location in that area, if it can't find the queen it can keep looking or give up at some point and just wander off or make a new queen....

Either way the point is to just let the bots be more impulsive, less acurate and less clever... if theres anything that can be simplified it can often be an advatage even though it seems like a crude way of doing things it can often be a better way to do it... and it would also make it more suited for evo sims...

Also, when dragin alge it's a lot easier if you eat some of it's body or make it feed on itself... alge can get pretty big and reach a rather large mass, it might be good with a backup plan in case an alge has reached a mass you won't be able to move... you can also just have the alge drag you instead of having to drag it yourself

But overall I think whenever workers and queens loose track of eachother or seem to get lost or buggy it's probably because their requirements are too specific and a simpler behavior for whatever went wrong might be worth considering... remember it's not survival of the smartest...

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #56 on: October 13, 2008, 12:21:58 AM »
I figured that bit out when making the bot. The problem is, how do you define "looking in an area"? Assuming you have two coords, the queen could always have moved, or could be missed because another bot got in the way etc. Really the best way to go, I figured, is to either constantly update the queen coordinate or have a network of queens. The scouts do feed body, by the way.
My thoughts on the neural bot are that they switch between several memory locations in a cycle, gathering data on attacks they were stung with, average enemy bot population over a sample of time, say 500 cycles, etc.
Programming knowledge is very good to have, especially if you know how the stack works. The inner workings of DB is two stacks interacting with each other, one boolean stack (for conditions) and one number stack (everything else). Memory locations are stored in a big array. Basically, every number, command, label etc. manipulates either of those stacks, with *, store, inc and dec being the commands that interact with the array. But you probably knew all this (and if you didn't, pretend you did   )
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline bacillus

  • Bot Overlord
  • ****
  • Posts: 907
    • View Profile
The amazing Antbot
« Reply #57 on: October 17, 2008, 12:29:18 AM »
Here's the drafted version of Cranium:
Code: [Select]
def spore 0
def brain 1
def neuron 2
def sensor 3
def actuator 4

def normal 10
def branch 20
def tip 30

def type 990
def structure 991
def current 992
def neuronid 993

'IO ports
'1-Conspec
'2-Type
'3-Reproduction init
'4-New tie init//for ties, venval
'5-Sharing info
'6-Venom type to be produced
'7-Shell info
'8-Poison info
'9-Length of neuron

cond
 *.robage 1 =
start
 *.tin9 ++ .tout9 store
 *.in3 .type store
 3835 .out1 store
 *.in4 dup .tie store .current store
 .tip .structure store
 *.in4 .neuronid store
stop

cond
 *.robage 20 >
 *.numties 0 =
start
 .spore .type store
 .current store
 .tout9 store
stop

cond
 *.robage 0 >
start
 50 .sharenrg store
 50 .sharewaste store
 *.type .out2 store
 400 *.body sub dup .strbody store - .fdbody store
 20 *.velup sub .up store
  -4 *.eye1 *.eye9 sub sgn 0 floor mult *.eye1 *.eye8 sub sgn 0 floor mult *.eye1 *.eye7 sub sgn 0    floor mult *.eye1 *.eye6 sub sgn 0 floor mult *.eye1 *.eye5 sub sgn 0 floor mult *.eye1 *.eye4 sub   sgn 0 floor mult *.eye1 *.eye3 sub sgn 0 floor mult *.eye1 *.eye2 sub sgn 0 floor mult 4 *.eye9     *.eye8 sub sgn 0 floor mult *.eye9 *.eye7 sub sgn 0 floor mult *.eye9 *.eye6 sub sgn 0 floor mult
 *.eye9 *.eye5 sub sgn 0 floor mult *.eye9 *.eye4 sub sgn 0 floor mult *.eye9 *.eye3 sub sgn 0 floor  mult *.eye9 *.eye2 sub sgn 0 floor mult *.eye9 *.eye1 sub sgn ++ sgn mult add -3 *.eye2 *.eye9 sub   sgn ++ sgn mult *.eye2 *.eye8 sub sgn 0 floor mult *.eye2 *.eye7 sub sgn 0 floor mult *.eye2 *.eye6  sub sgn 0 floor mult *.eye2 *.eye5 sub sgn 0 floor mult *.eye2 *.eye4 sub sgn 0 floor mult *.eye2    *.eye3 sub sgn 0 floor mult *.eye2 *.eye1 sub sgn ++ sgn mult add 3 *.eye8 *.eye9 sub sgn ++ sgn     mult *.eye8 *.eye7 sub sgn 0 floor mult *.eye8 *.eye6 sub sgn 0 floor mult *.eye8 *.eye5 sub sgn 0   floor mult *.eye8 *.eye4 sub sgn 0 floor mult *.eye8 *.eye3 sub sgn 0 floor mult *.eye8 *.eye2 sub   sgn ++ sgn mult *.eye8 *.eye1 sub sgn ++ sgn mult add -2 *.eye3 *.eye9 sub sgn ++ sgn mult *.eye3    *.eye8 sub sgn ++ sgn mult *.eye3 *.eye7 sub sgn 0 floor mult *.eye3 *.eye6 sub sgn 0 floor mult
 *.eye3 *.eye5 sub sgn 0 floor mult *.eye3 *.eye4 sub sgn 0 floor mult *.eye3 *.eye2 sub sgn ++ sgn   mult *.eye3 *.eye1 sub sgn ++ sgn mult add 2 *.eye7 *.eye9 sub sgn ++ sgn mult *.eye7 *.eye8 sub     sgn ++ sgn mult *.eye7 *.eye7 sub sgn 0 floor mult *.eye7 *.eye6 sub sgn 0 floor mult *.eye7 *.eye5  sub sgn 0 floor mult *.eye7 *.eye4 sub sgn ++ sgn mult *.eye7 *.eye2 sub sgn ++ sgn mult *.eye7     *.eye1 sub sgn ++ sgn mult add -1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8 sub sgn ++ sgn mult *.eye4 *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6 sub sgn 0 floor mult *.eye4 *.eye5 sub sgn 0 floor mult *.eye4 *.eye3 sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4 *.eye1 sub     sgn ++ sgn mult add 1 *.eye4 *.eye9 sub sgn ++ sgn mult *.eye4 *.eye8 sub sgn ++ sgn mult *.eye4    *.eye7 sub sgn ++ sgn mult *.eye4 *.eye6 sub sgn ++ sgn mult *.eye4 *.eye5 sub sgn 0 floor mult
 *.eye4 *.eye3 sub sgn ++ sgn mult *.eye4 *.eye2 sub sgn ++ sgn mult *.eye4 *.eye1 sub sgn ++ sgn     mult add 0 *.eye5 *.eye9 sub sgn ++ sgn mult *.eye5 *.eye8 sub sgn ++ sgn mult *.eye5 *.eye7 sub     sgn ++ sgn mult *.eye5 *.eye6 sub sgn ++ sgn mult *.eye5 *.eye4 sub sgn ++ sgn mult *.eye5 *.eye3   sub sgn ++ sgn mult *.eye5 *.eye2 sub sgn ++ sgn mult *.eye5 *.eye1 sub sgn ++ sgn mult add .focuseye store
stop

cond
 *.type .neuron =
start
 *.timer *.numties mod *.neuronid add .readtie store
 *.tin4 .tout4 store
 *.tin6 .tout6 store
 *.tin7 .tout7 store
 *.tin8 .tout8 store

 clearbool
 'Insert data to be transmitted here

stop

cond
 *.type .actuator =
start
 1 .readtie store
 50 .shareshell store
 *.tin4 .venval store
 *.tin6 .vloc store
 *.venval sgn abs 100 *.venom sub mult .strvenom store
 *.tin7 *.shell sub .mkshell store
 *.tin8 .ploc store
 *.ploc sgn abs 100 *.poison sub mult .strpoison store
stop

cond
 *.in1 *.out1 !=
 *.eyef 0 >
start
 *.refxpos *.refypos angle .setaim store
 *.veldx .sx store
stop

cond
 *.in1 *.out1 !=
 *.eye5 40 >
start
 32 .shootval store
 -6 .shoot store
stop

cond
 *.type .spore =
 *.nrg 20000 >
 *.eye5 30 <
start
 .brain .type store
 .neuron .out3 store
 .current inc
 *.current .out4 store
 50 .repro store
stop

cond
 *.type .brain =
 *.nrg 6000 *.numties 1500 mult add >
 *.eye5 30 <
 *.numties 6 <
start
 .current inc
 *.current .out4 store
 .neuron .out3 store
 50 .repro store
stop

cond
 *.type .neuron =
 *.nrg 8000 >
 *.structure .tip =
 *.eye5 30 <
 *.tout9 3 <
start
 .normal .structure store
 *.neuronid .out4 store
 .neuron .out3 store
 50 .repro store
stop

cond
 *.type .neuron =
 *.nrg 8000 >
 *.structure .tip =
 *.eye5 30 <
 *.tout9 2 >
start
 *.neuronid *.numties add .out4 store
 .sensor .out3 store
 50 .repro store
stop

cond
 *.eye5 30 >
 *.nrg 8000 >
 *.numties 1 >
start
 1 .out4 store
 .actuator .out3 store
 50 .repro store
stop


cond
 *.type .brain =
start
 *.timer *.current mod ++ .readtie store
 *.tin4 .tout4 store
 *.tin6 .tout6 store
 *.tin7 .tout7 store
 *.tin8 .tout8 store
stop
"They laughed at Columbus, they laughed at Fulton, they laughed at the Wright brothers. But they also laughed at Bozo the Clown."
- Carl Sagan

Offline Moonfisher

  • Bot Overlord
  • ****
  • Posts: 592
    • View Profile
The amazing Antbot
« Reply #58 on: October 18, 2008, 09:49:58 AM »
Just have each bot broadcast the last place it saw the queen and the time it saw it. So even if a bot is blocking your view you'll know the queen is on the other side. If the queen also uses epigenetics to transfer it's position no newborns any change in position should quickly be updated to all bots.
So basicaly if you see a bot with fresh information about the queen (If you have more than one queen just give it an ID or something, so they know they're from different hives) then update the information and broadcast that instead. And don't forget that the timer will reset at times, messing up your priority, you could either restrict updating of the queens position to information within a certain distance to the timer value you're holding or lots of other stuff like that.
But the point was moslty that it needs to be dynamic and less specific in it's behavior... if you can't find the queen or anyone to tell you where she is, then just roam around the area where you last saw it, if you still can't find it just go rogue and try to form a new hive, or join another hive if you want that to be possible...
But mainly what I ment was that if you know the queen is at X12,y123 and you just go to that spot and don't find it, it doesn't mean it's not around there somewhere and staring at that specific location won't help you find it... so to come up with a simple example, if you don't see the queen just accelerate towards the coordinate and disable turning, this way you'll shoot past the point, then after a short delay, adjust the angle to aim at the coordinates again and then lock rotation again once the distance to the location is below X.... this way you'll overshoot in random directions in the area you last saw the queen... that alone would increase chances of finding it...
Just saying that eratic confucing behavior can often hold a lot of advantages, even when fighting you can gain an advantage from having odd movement patters because the oponent will have a hard time following you in a fight.
But it's especialy usefull in this case where you loose track of something... then often the best way to find it is dumb luck.

Offline jknilinux

  • Bot Destroyer
  • ***
  • Posts: 468
    • View Profile
The amazing Antbot
« Reply #59 on: October 18, 2008, 02:09:32 PM »
Wait, I'm confused. Is it still a learning hydrozoan or is it going to be an antbot?

By the way, I have an idea- We could make an amoeboid that moves without using .up, .down etc... by using pseudopodia and increasing/decreasing tie length. When it finds algae, it surrounds them with its pseudopodia just like a real amoeba.
« Last Edit: October 18, 2008, 02:11:01 PM by jknilinux »