Innehållsförteckning:
- Steg 1: Materiallista
- Steg 2: Ändra den för att applicera färg
- Steg 3: Första målningen: Använda demos
- Steg 4: Använd Active TCL och LOGO för att måla
- Steg 5: Använda sensorer för att måla
- Steg 6: Slutsats
Video: Ändra en IRobot Skapa för att måla: 6 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:47
Detta är ett robotprojekt som förmodligen kan slutföras av någon som inte har någon erfarenhet av robotar alls. Jag säger detta för att innan jag började hade jag ingen erfarenhet av robotar. Eller skriva program. Faktum är att jag visste hur jag skulle måla och det var i stort sett det. Jag hade ursprungligen tänkt skriva program så att roboten kunde göra specifika målningar. Jag insåg snabbt att det är tråkigt, tråkigt och verkligen inte utnyttjar många av robotens fantastiska funktioner. Så istället för det kommer den här instruerbara att lära dig hur:- modifiera roboten så att den kan måla med penslar, rullar och en mängd andra apparater- dra nytta av de grundläggande förinställda programmen för att måla lite- använd Active TCL för att designa en tavla med LOGO- modifiera provprogrammen som följde med modulen för att göra några målningar med hjälp av sensorerna på roboten. Detta projekt förutsätter att du kan följa anvisningarna som följde med din Create för att konfigurera modulen, anslut den till en dator, etc. Jag är ganska säker på att de flesta kommer att klara det utan (mycket) svårigheter, så jag har inte duplicerat dessa riktningar här. Konceptuell grund (eller varför jag gjorde vad jag gjorde ur perspektivet på efter att ha lekt med roboten lite insåg jag att jag måste bestämma om roboten var en konstnär eller en förhärligad pensel. Logoprogrammeringen behandlar den mer som en pensel, medan den sensorbaserade programmeringen behandlar den mer som sin egen artist. Jag gillar det som artist bäst. I verkligheten blev vi snabbt konstlagskamrater. Den målade snabbare och mer beslutsamt än jag skulle, men utan att jag hade valt färgfärger, fyllt den och tryckt igång var det en i princip riktigt tung frisbee. Ingen konstnär kan möjligen arbeta utan en medvetenhet om världen omkring sig (att ha sinnen påverkar din konst alls) så att använda roboten utan att använda sensorerna verkade löjligt. Jag försåg det med det hon behövde vara medveten om, och svaret på dessa saker skapade målningarna. Jag insåg också snabbt att det är viktigt att glömma hur en människa fullföljer en uppgift och överväga hur en robot enklast skulle klara den. Med undantag för spraymålning utförs majoriteten av målningen mest effektivt på en horisontell yta, trots konstnärens klyscha på deras staffli. Staffliet finns där för att underlätta syn för konstnären - horisontell konst har en förkortad effekt. Det är därför din skrivare skriver ut horisontellt - det är det bästa sättet att applicera bläck utan risk för löpning eller blödning. Det är därför jag bestämde mig för att arbeta med robotens naturligt horisontella karaktär, istället för att försöka bygga på något som kan måla på väggar som är så vanligt bland "målarobotar." Jag tänkte mycket på skillnaden mellan att måla ett tryck. När jag målar oroar jag mig inte för att arbeta från vänster till höger, eller uppifrån och ner. Jag lägger färg där den ska vara, arbetar i kurvor, raka linjer eller vad som helst som är lämpligt. Eftersom jag inte bara försöker bygga en skrivare tänkte jag att roboten skulle måla i linjer som jag skulle, snarare än att arbeta tvärs över målningen som en svängande skrivare. Detta gav vissa utmaningar, särskilt med den uppenbara risken att roboten skulle rulla över våt färg. Som det visade sig verkar det inte riktigt att färg ackumuleras på hjulen mycket, men de ger ett fint märke till målningen. Det byggs upp lite mellan däcken, men det går lätt att dra av när det är torrt. På sätt och vis är det inte annorlunda än att en konstnär använder sina fingrar för att fläcka pasteller - roboten använder sina "bilagor" för att påverka hur färg appliceras på ytan.
Steg 1: Materiallista
Det här är vad du behöver för att slutföra alla steg i det här projektet, men om du väljer och väljer kanske du inte behöver allt.
- iRobot Create (uppenbarligen) - Kommando- och kontrollmodul (bifoga den nu och ställ in den. Dubbelkolla att den är PÅ när du konfigurerar USB -anslutningen, som höll mig uppe i några minuter eftersom jag inte insåg att roboten och kommandot var och en har en på/av -omkopplare.) - Batteriladdare - Seriekabel (ingår) Skapet levereras med hål överallt för att acceptera 6-32 skruvar. Köp inte något som inte är trådat 6-32, för det är obekvämt att ha koll på mer än en sak. Också, om du kan, antingen få alla platta (som mina) eller Phillips skruvar. En skruvmejsel reglerar eftersom du vill stanna kvar för att dra åt och justera saker efter behov. - 4 - 12 tum bitar av gängad stång - 2 - 2 tum skruvar - 10 (eller fler) muttrar - 2 - 1/2 tum skruvar - 9/64 borr (detta verkar vara en bra storlek eftersom det bara är en liten bit Robust vibration och rörelse tenderar att lossa anslutningarna, så det är bra att vara lite tät.) - 2 - 1 till 1 1/2 tum gångjärn (dessa används vanligtvis för trälådor och applikationer av dockhus) - 2 eller fler - 2 tums klipp (grönt är trevligt om du kan få det - det koordinerar med modulen, och de är praktiska för att säkra saker) - 1 ark vit plast minst 9x9 tum (min är en bräda som är säljs med kakdekorationsartiklar - det används för att stödja en tårta efter att den har dekorerats. Den är korrugerad och ungefär 1/8 tum tjock, och jag kunde klippa den med en kraftig sax.) - 2 fot 1x2 timmer - trattar (till håll färgen) - 3/8 tum yttre diameter genomskinliga plaströr - 1/2 tum elektriska krymprör - små penslar, rullar, målarunderlägg, tillverkare, pennor eller något annat ng annat som du kan tänka dig som kommer att göra ett märke - maskeringstejp (för att hålla ner papper och hålla saker tillfälligt) - plastfolie (eftersom robotar är oförutsägbara och snabba, och du förmodligen inte vill att allt är målat) - en diner ketchup stilflaska med lock för alltid färg du planerar att använda - vit färg (för stil) - något att skära trä och något att borra hål - en skruvmejsel - andra grundläggande hushållsverktyg - massor av färg som rengörs med vatten (jag använder fel- nyanser från färg- och hemförädlingsbutiker. Du kan få mycket av det för $ 1 till $ 5, eller, om du är super trevlig/tur kommer de att ge det gratis, som de super trevliga människorna på Pittsburg Paint, som levererade nästan alla mina.) - något att måla på (papper och tyg fungerar bra. Slaktpapper kommer på rullar och är ett billigt val, speciellt för att börja.)
Steg 2: Ändra den för att applicera färg
Roboten måste kunna hålla en mängd olika färgapparater, liksom pennor, markörer eller vad du än vill göra konst med. Detta innebar en mängd utmaningar, men jag tror att mitt system löser de flesta av dem ganska bra. Två träarmar är fästa på toppen av roboten, och gångjärn håller ett klämma i slutet av varje. På så sätt kan armarna vara så långt ifrån varandra eller nära varandra som de behöver vara (de svängs vid fästpunkten till roboten, och när de väl är inställda kan den skruven dras åt för att hålla dem mer fasta eller lämnas lite lösare så att borsten kan svänga lite när roboten vänder.) Gångjärnen låter klämmorna alltid peka rätt mot varandra eller i någon annan vinkel som är nödvändig för att hålla borsten, vilket inte skulle vara möjligt om klämmorna skruvades direkt på vapen. Färgen måste levereras stadigt till penseln, så jag lade till ett övre däck för att hålla en tratt och färgen rinner nerför ett rör för att droppa ut precis framför borsten. Borsten sprider den när roboten rör sig. Du kan välja en annan storlek på slangen för att leverera en annan mängd färg eller justera hastigheten som roboten rör på om du inte gillar linan du får. Krympslangen håller ihop vinylröret och tratten, gör det enkelt att rengöra och låter det bara falla ner i den övre plattformen. Det är en ganska enkel montering och har hållit ut bra genom många målningar.
Skär timret i 2 7 långa bitar. Borra ett hål (den långa vägen) en tum från slutet av varje bit. I andra änden borra pilothål för att fästa gångjärnen. Måla dessa bitar vita (om det är vad du ') När de har torkat, skruva fast gångjärnen på ändarna. Fäst sedan en klämma på andra sidan gångjärnet med en skruv och mutter. De flesta klämmor som de som visas kommer med ett hål (även om det är täckt med plast) men du kanske måste förstora det lite. Detta kommer att fungera, jag lovar. Använd en 2 tums skruv genom hålet i andra änden in i det längsta bakre paret av hål på robotens ovansida. Skär plastarket baserat på mönstret i bilderna. Jag använde en sax med kraftig (dessa kommer att klippa en slant!), men jag är säker på att de flesta plaster kan klippas med en verktygskniv eller, om du känner för att spruta, låta den klippas av akryl. Skruva fast en mutter 3/4 tum från ena änden av varje gängad stång. Skruva fast en mutter på den andra änden cirka tre tum från änden. Skruva den korta änden av den gängade stavar i hålen i lastrummet, upp till muttern. Skjut plastarket ner 3 tum till toppen av de andra muttrarna. Du kan behöva lägga till en andra mutter ovanpå plasten om den inte håller ordentligt. Sätt in din tratt i öppningen på plattformen. Mät hur mycket vinylrör det tar att nå från botten av tratten för att bara röra ytan nedanför. Använd ungefär en tum av krympslangen för att fästa detta rör på tratten. En värmepistol klarar det här bra, men min systers hårtork var praktisk och fick jobbet gjort. Du kan använda maskeringstejp för att göra detta istället om du hellre vill, om du vill testa det innan du begår. Vad du än använder för att måla med (penseln/rullen/etc.) kommer att hållas på plats med de två klämmorna. Röret ska sitta mellan färgapplikatorn och roboten. Du kanske vill tejpa röret till borsten om det inte stannar på egen hand. Fyll ketchupflaskorna med den färg du planerar att använda. En tratt och slev (som inte kommer att användas till mat) kommer till nytta för detta. Du kommer att bli glad över att ha så snabba färger att fylla på senare, och ketchup -åtgärden hjälper till att fylla röret snabbt istället för att vänta på att färgen ska rinna av sig själv.
Steg 3: Första målningen: Använda demos
Lägg ut din plastfolie. Tejpa ditt papper/tyg med maskeringstejp på alla sidor. Ett område på cirka 3 x 4 fot verkar vara en bra yta för att måla på. Större fungerar också, men mycket mindre än 2 x 3 och du kommer att måla mer på din plast än ditt papper. Om den kan komma upp runt kanterna kommer roboten att fånga den, dra den runt, skrynkla ihop den och göra vad andra busiga robot saker som den kan tänka sig, så tejpa ner den bra.
Slå på din robot. Välj ett program som låter tilltalande - 5 är min favorit, men alla som du har utrustningen för är bra. Om du väljer ett omslagstypsprogram, var noga med att placera något runt områdets omkrets (som 2x4 timmer eller något) eftersom det annars täcker och målar ditt rum. Du kan också ha mycket roligt med en pong/4 -fyrkantig affär om du har 3 vänner runt - ha en person på varje sida och gör dem ansvariga för att studsa roboten på deras sida. Du kan göra detta på en bordsskiva och räkna med klippsensorerna också. Fyll lite färg i tratten. Börja smått första gången, men du kan lägga in ganska mycket när du är säker. Så snart du målar ner den till botten av röret trycker du på "startknappen" och ser hur den går. Var redo att vara snabb om det går ur kurs. Var också noga med att se hur borsten/rullen/etc gör, eftersom du kan behöva göra lite justeringar där. Du kommer nog att ta tag i det ganska snabbt. Om du vill ta en paus eller vill ha lite extra tid stoppar färgen en liten c-klämma som skruvas fast på slangen. Klämmorna som används på armarna är dock inte tillräckligt starka för att stoppa färgen i röret. Du kan dra i tratten och rengöra den mellan färgerna, men jag brukar bara lägga till en färg ovanpå en annan i tratten. Det är smart att känna till ditt färghjul och välja en annan färg att lägga till som inte kombinerar rött, blått och gult (eftersom detta kommer att göra en brun/grå besvärlig färg) men du kan få bra resultat med olika nyanser av blues och sedan lägga till några lila eller rött osv.
Steg 4: Använd Active TCL och LOGO för att måla
Det finns en supertrevlig kille som publicerade några fantastiska saker på skapa forum. Forumet är en bra resurs, särskilt om du inte riktigt vet vad du gör. Hans dokumentation finns här: https://createforums.irobot.com/irobotcreate/board/message? Board.id = Create_projects & thread.id = 13Han använde TCL för att ställa in roboten för att köra med LOGO -kommandon. Du måste gå till inlägget och följa hans anvisningar för att ladda ner och installera Active TCL och sedan ladda ner hans program. Jag tyckte inte det var rätt att lägga upp hans kod här (av uppenbara skäl), men den är tillgänglig på foruminlägget som ingår ovan. När du har installerat allt och laddat ner är du redo att börja använda din nya iTurtle Create (vilket är en dålig LOGO -ordlek). Det är ett extremt enkelt gränssnitt där du bokstavligen berättar för det (i millimeter och vinkelgrader) vad du ska göra, ansluta seriekabeln och göra det. Detta kommer att fungera mycket bättre om du har en bärbar dator, eftersom seriekabeln inte är så lång och den måste anslutas medan den fungerar. Roboten kan (tydligen) bära cirka 30 pund, så om du gjorde något för att passa den kunde jag tänka mig att du kunde sätta din bärbara dator på den och låta den gå. Du kan spendera timmar och timmar på att rita ut målningar, något etsa-en-skiss-stil med detta system, och förutom att installera program behöver du inte mycket datorkunskap alls. Special Obs: Dra av kommandomodulen från din robot om du försöker detta. Det verkar störa på något sätt, och det här kommer förmodligen inte att fungera om du har den bifogad (även om den är avstängd.) Det är en bra idé att konfigurera din tavla och antingen köra den utan färg eller med en markör innan du förbinder dig till den med färg (åtminstone först). Detta är särskilt användbart för att välja din utgångspunkt eftersom det kommer att avgöra var bilderna visas på papperet. Det är viktigt att notera att den här metoden verkar inaktivera alla säkerhetssensorer på roboten, så om du ställer in den för att gå framåt 50 000 istället för 500 kommer den verkligen att göra det, och du kommer att jaga ner den för att stanna den. Om den använder riktig färg kommer du att behöva göra en hel del rengöring när du har tagit den. Denna metod är verkligen effektiv för att skapa och snabbt ändra det du vill måla, och är mycket mer effektivt än att skriva program och installera dem på kommandomodulen. Den största nackdelen är seriekabeln.
Steg 5: Använda sensorer för att måla
Som jag sa i min inledning, efter att ha arbetat med det här ett tag insåg jag att behandlingen som en skrivare verkligen förbises många funktioner som roboten har att erbjuda. Så här är några saker du kan göra med Skapa, Kommandomodulen och provprogram för att göra målningar. När du får en känsla för hur koden fungerar och vad du kan ändra kommer alternativen att vara oändliga. Det allra enklaste sättet att måla med sensorer är att köra provet "lock" -program med föremål runt målningsområdets omkrets, och även några tunga föremål (som antingen är färgbeständiga eller inslagna i vaxpapper) inom målningsområdet. Men du vill förmodligen ha lite mer kontroll än så, och jag lade till en kommandomodul i materiallistan av en anledning. set, här är några sätt att göra det: Öppna exempelprogrammet som kallas 'drive' i programmerarens anteckningsbok (en förklaring till detta finns i manualen som du kan ladda ner från iRobot -webbplatsen.) På rad 156 hittar du: // Set svängparametrarna och återställ vinkeln Detta är vad roboten gör när en sensor utlöses. Detta inkluderar att stöta på saker eller nästan falla av saker. Det här avsnittet har några roliga saker att spela med. Distans = 0; Du kan ändra detta till valfritt antal. Antalet du väljer är hur många millimeter roboten kommer att säkerhetskopiera när den träffar eller hittar kanten på något. Så, till exempel, om du ändrar "0" till "200", kommer det att säkerhetskopiera 200 millimeter. Detta kommer att ge dig 200 millimeter långa linjer i olika vinklar som kommer från kanterna och vad andra föremål finns på och runt målningsytan. Hörn = 0; Det betyder att den backar direkt efter att den träffat något. Du vill inte det här. Om du vill att den ska säkerhetskopieras i olika vinklar anger du ett nummer här. Om du ändrar "0" till "45" kommer den att backa i en båge på 45 grader. Den här tar lite justeringar för att få precis hur du vill ha det, men det kan orsaka några coola effekter. Turn_angle = randomAngle (); Det betyder att mängden roboten vänder efter att ha träffat något kommer att ligga någonstans mellan 53 och 180 grader. Om du vill ändra intervallet "slumpmässigt" går du ner till rad 460 och ändrar den koden. Om du vill ställa in den på en specifik vinkel, ändra "randomAngle ()" till "15" eller vilken annan vinkel du vill. Siffrorna "1" och "-1" är reserverade för rät vinkel, men det verkar som om alla andra tal, positiva eller negativa är rättvist spel. Jag insåg precis att jag inte har provat något över 360, men nu kan jag inte vänta med att prova. På rad 143 och 149 hittar du "svängning" följt av en 0. Om du ändrar dem till något annat får roboten att snurra för alltid. Detta är inte en mycket effektiv eller rolig förändring att göra, så jag skulle inte bry mig. Drive (300, RadStraight); Detta innebär att gå framåt med en hastighet av 300 på väg rakt. Du kan ändra robotens hastighet genom att ändra "300" till ett annat nummer. Lägre är långsammare, högre är snabbare (inga trick här). Om du ändrar "RadStraight" till ett nummer kommer roboten att köra i en båge. Detta kommer definitivt att öka den”måleriska” karaktären av vad roboten gör. Jag gillar verkligen att ändra den här inställningen. Att ändra hastigheten som roboten rör sig kan ändra linjerna som den målar. Lågare hastigheter leder vanligtvis till en mjukare, tyngre applicering av färg. Snabbare hastigheter ger dig en borstigare effekt, eller så kommer det ibland till och med att din pensel hoppar över. När du engagerar dig i koden kommer du att kunna justera alla möjliga saker. Om du har svårt att förstå något, kolla oi -filen, ibland finns det ledtrådar där inne. Ofta har jag haft bättre tur med att använda ett vinkelnummer istället för "RadCW" eller liknande kommandon. Jag antar att det här är en lyx, men det är något att kontrollera om du har problem. Jag är ingen erfaren programmerare alls. Detta är faktiskt det första jag någonsin gjort någonting med kod, med undantag för att skapa webbplatser. Jag tror att det är ganska svårt att skada roboten, och det finns alltid en ren kopia av exempelprogrammen på CD: n om du irreparabelt skadar den du modifierar. Koden är väl noterad, och du kan ganska mycket ta reda på vad allt gör om du tar dig lite tid med det. Det är värt att dyka in och ändra saker för att se vad du får. Jag har skrivit en hel del nya saker att lägga till i "drive" -programmet, men de är inte redo att visa världen ännu.
Steg 6: Slutsats
Det var viktigt för mig att jag skulle göra Skapa till något som jag verkligen, ärligt skulle använda regelbundet. En robot som kan få en burk läsk från kylskåpet är fantastisk, men jag dricker högst en burk om dagen, och jag brukar ta tag i den när jag ska göra något annat. Även om jag hade gjort en robot som skulle göra det skulle jag verkligen inte använda den.
Jag har varit konstnär/designer på heltid i flera år, och alla som har gjort det vet hur svårt och ensamt det kan vara. Det är därför konstnärer umgås på gallerier, biografer och barer. Du måste komma ur ditt eget huvud och tänka på olika saker. Det är en del av det som har varit så roligt med att arbeta med roboten - det är ganska oförutsägbart (och mängden oförutsägbarhet kan ändras i dess kod) och det genererar bilder som jag aldrig skulle ha. Det gör en del av det tunga för mig, men jag får fortfarande fatta beslut. Jag har fått för vana att arbeta med det, och jag använder det verkligen mycket. Här är mina planer för framtida experiment med roboten och några idéer som jag gärna skulle se andra människor arbeta med: - LOGO och fraktaler är praktiskt taget bästa vänner. Det finns mycket potential i fraktalmålningar om du blir mer engagerad i LOGO. Fraktaler kan likna strukturen som träd, koraller och andra organiska former och lämna dörren öppen för att göra ett fält med unika men besläktade träd, och möjligen till och med lägga till målningen själv för att skapa ett landskap. - Att samarbeta om målningar med roboten i allmänhet kan vara väldigt roligt. Låt roboten måla, måla sedan själv, låt sedan roboten måla igen. Jag gjorde mycket av det här med riktiga människor på konstskolan, men det skulle nog vara roligare med en robot. De bryr sig inte om att bevara ditt arbete och kommer att måla med hänsynslös övergivenhet. - Att skriva ett program som körs på kommandomodulen som får roboten att köra på en viss väg skulle ha vissa fördelar. Den kan användas för att prova samma idé i olika färger och medier. Det kan användas som grund för en hel serie målningar som var och en skulle hanteras annorlunda efter det. Det kan till och med användas för graffiti. - Graffiti i allmänhet skulle vara ett alternativ med roboten. Det kan måla på gator eller trottoarer. Använd detta efter eget gottfinnande och ansvara. Eller bara låta den hålla krita istället för måla och gå till stan med den. Det kan dra pilar som leder människor till något. Det kan skriva meddelanden. I teorin kan den till och med användas för att måla kanterna på parkeringsplatser. Det skulle vara särskilt användbart för tillfälliga markeringar. - Att fästa en servomotor på borsthållaren skulle ge dig möjlighet att stanna och börja måla var du än väljer. Detta var utanför min erfarenhetsnivå att ta reda på under tiden jag hade, men jag skulle verkligen vilja prova det i framtiden. - Plattformen byggdes med möjlighet att lägga till fler färger av färg/penslar samtidigt i åtanke. Det skulle vara möjligt att lägga till ett andra däck till det, vilket skulle stödja fler trattar. I grund och botten, efter två månader eller så med att arbeta med det här känner jag att jag fortfarande bara börjar, och jag spenderar så mycket tid med det som möjligt. Den här roboten och jag kommer att vara på Maker Faire i Austin om du vill komma på nära håll med den! Förhoppningsvis då har jag gjort ännu fler framsteg med det!
Rekommenderad:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
MagicCube - Tryck för att ändra färg: 6 steg (med bilder)
MagicCube - Tryck för att ändra färg: Välkommen till min första instruerbara. Jag hoppas att du kan följa alla steg. Om det finns några frågor, fråga så lägger jag till innehållet i det instruerbara. Tanken med detta projekt var att bygga och utveckla en liten kub med en speciell effekt som en present till C
En palett för att måla musik: 7 steg (med bilder)
En palett för att måla musik: Inspirationskällan för min enhet är "Chromola", ett instrument som Preston S. Millar skapade för att ge färglätt ackompanjemang till Alexander Scriabins "Prometeus: Poem of Fire", en symfoni som hade premiär i Carnegie Hall den 21 mars 1915.
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
Hur man hackar Eco-knappen för att göra andra saker : 6 steg (med bilder)
Hur man hackar Eco-knappen för att göra andra saker …: Den här lilla guiden visar dig snabbt hur du gör Eco-knappen för att göra dina egna bud! Jag fick min med en ny AMD-processor (den här guiden är endast för Windows XP! )