Ros Indigo installera på Ubuntu (9 / 9 steg)

Steg 9: Källkoden för att göra irobot skapa följa en linje på golvet


/*--------------------------------------------------------------------------

Program: irobot_linefollower

Beskrivning: Detta enkla program gör iRobot skapa följa en linje om den är ansluten till datorn här koden körs på hårdvara: iRobot skapa med USB-seriell kabel kan du behöva ändra sensor_turn_value för att passa din iRobot skapa programvara: Linux ubuntu 14.04 med ROS indigo installerat Turtlebot arbetsyta setup (om följande ROS indigo installera guiden nedan Det kommer att vara setup där.) Det finns 2 krävs process som måste köra för detta arbete och det är - $ roscore / /! en roscore/master - $ roslaunch turtlebot_bringup minimal.launch / /! Turtlebots minimal.launch program referenser:-ROS indigo installera guide

: Ändrad 5 december 2014: författare: Anders Vestergaard, Jonas Vestergaard Johansen Benjamin Rudkjær Rønnov Pedersen, Emil Blixt Hansen Christian Præstegaard Madsen, Benjamin Rindom Gøthler AKA grupp: Robotics P1-B304 på AAU universitet---* /

#include / /! implementeringar logiken i funktionerna som cout funktioner #include / /! Inkluderar de vanligaste offentliga bitarna av ROS systemet #include / /! Inkludera noden för att kunna styra Turtlebot (Läs iRobot skapa) #include / /! Inkludera noden för att kunna läsa sensorer på Turtlebot (Läs iRobot skapa)

//! Definiera variabler float hastighet = 0,20; //! Kontroller i Turtlebots fart i meter/sekund flyta tur = 0.00; //! variabel att hålla tur hastigheten när de Turtlebot vänder sig flyta turn_left_value = 1,0; //! Kontroll vända hastighet för vänstersväng float turn_right_value =-1.0; //! Kontroll vända hastighet för högersväng int cliff_left_sensor_value = 0; //! variabel att hålla vänster cliff sensor värdet int cliff_right_sensor_value = 0; //! variabel för att hålla rätt klippa sensor värdet int sensor_turn_value = 750; //! Kontrollera sensorn värdet för Turtlebot att göra en sväng tillbaka till raden

//! Denna funktion kommer få kallas varje gång data publicerade till "/ mobile_base/sensorer/core" ämne void cliffSensorCallback (const create_node::TurtlebotSensorState::ConstPtr & msg) {cliff_left_sensor_value = msg -> cliff_left_signal; / /! Lagra värdet cliff_left_signal från ämne till cliff_left_sensor_value variabel cliff_right_sensor_value = msg -> cliff_right_signal; //! Lagra värdet cliff_right_signal från ämne till cliff_right_sensor_value variabel //std::cout << cliff_left_sensor_value << "" << cliff_right_sensor_value << "\n"; //! Felsökning: Skriva sensor värden till terminal. } //! void cliffSensorCallback slut

//! Den huvudsakliga funktionen för programmet int main (int argc, char ** argv) {/ /! Initiera variabler argc och argv som ros::init() behöver dem att prestera några ROS argument

Ros::init (argc, argv, "robot_driver"); //! Initierar ROS, detta gör ROS att ge namnet remappong från kommandoraden, den sista arugemnt("robot_driver") är namnet på vår nod.

//! Nod handtagen vi kommer att använda för kommunikation med noder ros::NodeHandle nh; //! NodeHandler för publisher ros::NodeHandle n; //! NodeHandler för abonnenten

/**! Berätta master vi kommer att publicera ett meddelande av typ "geometry_msgs::Twist" till ämnet "/ cmd_vel_mux/input/teleop", det andra argumentet "1" är storleken på våra publicerande kö. vilket betyder att vi endast kommer att buffra ett meddelande om den publiceras på snabbt. */ //! Ta bort detta vi kommer att publicera till "/ cmd_vel_mux/input/teleop" ämnet att utfärda kommandon ros::Publisher cmd_vel_pub = nh.advertise ("/ cmd_vel_mux/input/teleop", 1);

/**! Berätta den master att vi vill prenumerera på ämnet "/ mobile_base/sensorer/core". När allt det publiceras ett meddelande till ämnet ROS kommer att anropa funktionen cliffSensorCallback() det andra argumentet är storleken på bufferten, som lagrar meddelanden i fall vi inte kan bearbeta information tillräckligt snabbt. om vi träffar 1000 butiker meddelanden börjar det ta bort meddelanden. */ //! Ta bort detta kommer vi att prenumerera "/ mobile_base/sensorer/core" ämnet att få sensor valueues. Ros::Subscriber sub = n.subscribe ("/ mobile_base/sensorer/core", 1, cliffSensorCallback);

geometry_msgs::twist base_cmd; //! Initilizing geometry_msgs::Twist som base_cmd funktion

base_cmd.Linear.x = base_cmd.linear.y = base_cmd.angular.z = 0; //! KANSKE FLYTTA DETTA! Se till att alla vektorer är satt till 0

While(true) {/ /! En loop som allways kör. Ros::spinOnce(); //! När ros::spinOnce() kallas det får några nya meddelanden i funktionen cliffSensorCallback

std::Cout << "vänster cliff:" << cliff_left_sensor_value << "rätt klippa:" << cliff_right_sensor_value << "sväng vänster värde:" << turn_left_value << "sväng höger värde:" << turn_right_value << "vända:" << vända << "\n"; //! Felsökning: Skriva sensor värden och vända värden till terminal usleep(10000); //! Avbryta exercutions för 10000 mikrosekunder

//! enheten kommandon base_cmd.linear.x = hastighet; //! Anger hastigheten för Turtlebot till variabel hastighet base_cmd.angular.z = slå; //! Anger Turtlebot tur hastighet till variabel turn

IF(cliff_left_sensor_value > sensor_turn_value) {/ /! Kontrollera om lämnade cliff sensor värde är större än den sensor_turn_value som ovan, om sant sedan stänger = turn_left_value; //! Ange variabeln tur till turn_left_value att göra en vänstersväng, tills vi är på linjen igen. }

annat if(cliff_right_sensor_value > sensor_turn_value) {/ /! Om ovanstående är false, kontrollera om rätt klippa sensor värde är större än sensor_turn_value som ovan, om den stämmer sedan stänger = turn_right_value; //! Ange variabeln tur till turn_right_value att göra en högersväng, tills vi är på linjen igen. } annat {/ /! om båda de ovanstående om är false sedan stänger = 0; / /! Ange variabeln tur 0 eftersom vi är på linjen igen. }

cmd_vel_pub.publish(base_cmd); //! Skicka kommandot bilresa till det ämne som definieras ovan "/ cmd_vel_mux/input/teleop"} / /! medan loop slutet

Return 0; //! Avsluta programmet} / /! int main slut

Se Steg
Relaterade Ämnen

VSFTPD & inställningar för Installation på Ubuntu

detta instructable dokumenterar de steg jag tog för att installera och konfigurera korrekt VSFTPD (en FTP-Server) på en Ubuntu Linux-distribution, med hjälp av kommandoraden bara. Just det, ingen GUI! Innan jag börjar, skulle jag vilja säga att det ä...

Styra Nao Robot med hjälp av en Xbox-handkontroll

I detta instructable kommer jag visa hur man simulera NAO robot i lusthuset simulator och Robot operativsystem (ROS). ROS är ett open source ramverk för utveckling och forskning inom robotteknik. Det ger rika uppsättning verktyg och bibliotek för att...

Autonoma mobil Robot med ROS clumsybot

vår inomhus autonoma mobil robot med ROS, Rtabmap, raspberry pi 2, kinect, ubuntu14.04 ltsVårt Examensarbetevår inomhus autonoma mobil robot med ROS, Rtabmap, raspberry pi 2, kinect, ubuntu14.04 lts vi installerar ubuntu 14.04 LTS och ROS indigo på l...

Komma igång med Ubuntu Linux

Linux har operativsystemet (OS) för datorn kunniga sedan starten, men under de senaste åren med lanseringen av små linux baserade fysiska datorplattformar som Raspberry Pi, BeagleBone och Arduino Yun (bland många andra) har det varit en explosion av...

Installera Liquorix i Debian-baserade Linux

detta är den bästa kärnan i den "vers för spel!Det kan lätt installeras i Ubuntu, Linux Mint och Debian.Obs: Liquorix innehåller icke-fria drivrutiner, så om du är medlem heligare än du av Free Software Foundation eller hatar begreppet proprietär pro...

Alltid aktuell Guide till Ubuntu

Hej killar! Detta är det alltid uppdaterat Guide till Ubuntu. Det kommer att uppdateras med varje ny version av Ubuntu. Den nuvarande utgåvan är Ubuntu 13.04 Raring Ringtail. Nästa utgåva, 13.10 uppkäftig Salamander, beror den 17 oktober eller så. Om...

Ubuntu: Att få igång (11.04)

Ubuntu är en linux-operativsystem baserade på Debian. Det är min personliga favorit distribution av linux. Ubuntu är ett bra operativsystem, kan det skapa vissa problem för både nya och avancerade Linuxanvändare. Detta instructable är att avmystifier...

Webbserver på Ubuntu 14.04 gjorde esasy

Du kan installera Ubuntu server utan svårt, gå till http://www.ubuntu.com/download/ och måste lokalisera för senaste LTS (lång tid stöd) ISO-filen.ISO-filen kan du göra en bootable DVD eller USB-nyckel.För denna tutorial kommer jag för att använda Vi...

Flervalsstart Windows och Ubuntu

Om du har en dator, har du förmodligen hört talas om Linux. Linux är ett operativsystem som har öppen källkod utveckling. Om du är nyfiken på att prova Linux och inte vill ta helt bort Windows eller vill ha både Windows och ett Linux-System på datorn...

Hur du skapar ett Ubuntu virtuella maskinen med VirtualBox (Mac)

Följande instruktioner kan du skapa en Ubuntu virtuella maskinen. De har skapats speciellt för en Mac-dator, men är i huvudsak desamma för Windows. Som du följer instruktionerna, vill du se de har anpassats så att även en nybörjare kan slutföra denna...

Chefbot: En DIY autonoma mobil robot för att servera mat på Hotell

Som titeln säger, ska vi se hur man bygger en autonom mobil robot kallas Chefbot som är för servering av mat och dryck i hotell och restauranger.Detta var ett hobbyprojekt och jag byggde denna robot efter att ha sett en robot som kallas Turtlebot2. H...

POLYRO (öppen källa vänlig RObot)

This is an instructable on building a relatively low-cost wheeled robot platform for developing ROS applications. Tänk på ROS som ett operativsystem för din robot (förutsatt att maskinvaruabstraktion, drivrutiner, bibliotek, visualiseringar, meddelan...

Ett Experiment? En pengar sparare? eller bara en databas?

Purpose:Svaret på din fråga är ja, ja och nej. I denna tutorial lär jag dig hur du enkelt ställa in din egen server med en databas på den. När du har installerat din server och databas, kan du använda den för alla möjliga saker. Du kan experimentera...

Quicky webbserver för linux.

Här finns flera exempel på snabba sätt att ställa in en webbserver. Jag gillar att använda den i python webbserver för snabbt ladda ner filer mellan datorsystem vara det de är arbetsstationer, bärbara datorer, pekplattor/tabletter. eller etc. De inbl...

Server installationssteg att köra PHP mediedelning skript 2015

Önskar du att du hade en Youtube som media webbplats? Det finns en handfull PHP skript som gör just detta. Några eller kommersiell några eller gratis. Men dessa skript alla beroende äldre version programvara och Linux att fungera korrekt. Jag kunde i...

Personliga intranätet (del 2).

i del två kommer vi att få in i virtuella privata nätverk, dnsmasq och andra media-servrar.VPN.Mediatomb.IRC.Se också:Du kanske också gillar:Uppdatering: lagt till trådlösa alternativ.Steg 1: Byta ut router 1 för en dator och installera dnsmasq. Efte...

Zybo - AXI DMA inuti inbäddad Linux

Som titeln säger, förklarar denna handbok hur jag gjorde för att kunna använda AXI DMA inuti en inbäddad Linux på en Zybo ombord. Flera andra tutorials finns för att installera Linux på den Zybo plattformen (se referenser i slutet av handledning), så...

Göra en Live USB att starta från en USB-enhet

En Live USB-låter dig köra ett operativsystem från en USB-enhet, så du kan prova ett operativsystem utan en partition, eller bära en favorit med dig eller har en nödsituation backup ifall datorn kraschar.I detta Instructable, kommer jag att visa dig...

Öppen källkod-TV-Box - GeekBox

"... du är en slav, Neo. Som alla andra föddes du i träldom. Ett fängelse som du inte kan smaka eller se eller röra. Ett fängelse för din sinne." Morpheus - matrisen (1999)Okej. Jag måste erkänna att det är en teatral introduktion (kanske för te...