]> pere.pagekite.me Git - homepage.git/blob - blog/My_first_perl_GUI_application___controlling_a_Spykee_robot.html
Generated.
[homepage.git] / blog / My_first_perl_GUI_application___controlling_a_Spykee_robot.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html>
4 <head>
5 <title>Petter Reinholdtsen: My first perl GUI application - controlling a Spykee robot</title>
6 <link rel="stylesheet" type="text/css" media="screen" href="http://people.skolelinux.org/pere/blog/style.css">
7 </head>
8 <body>
9
10 <div class="title">
11 <h1>
12 <a href="http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
13
14 </h1>
15
16 </div>
17
18
19 <div class="entry">
20 <div class="title">My first perl GUI application - controlling a Spykee robot</div>
21 <div class="date">2010-09-01 21:00</div>
22 <div class="body">
23 <p>This evening I made my first Perl GUI application. The last few
24 days I have worked on a Perl module for controlling my recently
25 aquired Spykee robots, and the module is now getting complete enought
26 that it is possible to use it to control the robot driving at least.
27 It was now time to figure out how to use it to create some GUI to
28 allow me to drive the robot around. I picked PerlQt as I have had
29 positive experiences with the Qt API before, and spent a few minutes
30 browsing the web for examples. Using Qt Designer seemed like a short
31 cut, so I ended up writing the perl GUI using Qt Designer and
32 compiling it into a perl program using the puic program from
33 libqt-perl. Nothing fancy yet, but it got buttons to connect and
34 drive around.</p>
35
36 <p>The perl module I have written provide a object oriented API for
37 controlling the robot. Here is an small example on how to use it:</p>
38
39 <p><pre>
40 use Spykee;
41 Spykee::discover(sub {$robot{$_[0]} = $_[1]});
42 my $host = (keys %robot)[0];
43 my $spykee = Spykee->new();
44 $spykee->contact($host, "admin", "admin");
45 $spykee->left();
46 sleep 2;
47 $spykee->right();
48 sleep 2;
49 $spykee->forward();
50 sleep 2;
51 $spykee->back();
52 sleep 2;
53 $spykee->stop();
54 </pre></p>
55
56 <p>Thanks to the release of the source of the robot firmware, I could
57 peek into the implementation at the other end to figure out how to
58 implement the protocol used by the robot. I've implemented several of
59 the commands the robot understand, but is still missing the camera
60 support to make it possible to control the robot from remote. First I
61 want to implement support for uploading new firmware and configuring
62 the wireless network, to make it possible to bootstrap a Spykee robot
63 without the producers Windows and MacOSX software (I only have Linux,
64 so I had to ask a friend to come over to get the robot testing
65 going. :).</p>
66
67 <p>Will release the source to the public soon, but need to figure out
68 where to make it available first. I will add a link to
69 <a href="http://wiki.nuug.no/grupper/robot/">the NUUG wiki</a> for
70 those that want to check back later to find it.</p>
71 </div>
72
73 <div class="tags">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="http://people.skolelinux.org/pere/blog/tags/robot">robot</a>.</div>
74
75 </div>
76
77
78
79
80
81
82 <div id="sidebar">
83
84 <h2>Archive</h2>
85 <ul>
86
87 <li>2010
88 <ul>
89
90 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
91
92 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
93
94 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
95
96 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
97
98 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
99
100 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
101
102 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
103
104 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
105
106 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
107
108 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
109
110 <li><a href="http://people.skolelinux.org/pere/blog/archive/2010/11/">November (2)</a></li>
111
112 </ul></li>
113
114 <li>2009
115 <ul>
116
117 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
118
119 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
120
121 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
122
123 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
124
125 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
126
127 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
128
129 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
130
131 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
132
133 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
134
135 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
136
137 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
138
139 <li><a href="http://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
140
141 </ul></li>
142
143 <li>2008
144 <ul>
145
146 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
147
148 <li><a href="http://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
149
150 </ul></li>
151
152 </ul>
153
154
155
156 <h2>Tags</h2>
157 <ul>
158
159 <li><a href="http://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (11)</a></li>
160
161 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
162
163 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
164
165 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (10)</a></li>
166
167 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian">debian (37)</a></li>
168
169 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (46)</a></li>
170
171 <li><a href="http://people.skolelinux.org/pere/blog/tags/english">english (66)</a></li>
172
173 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (1)</a></li>
174
175 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (10)</a></li>
176
177 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart">kart (5)</a></li>
178
179 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap">ldap (8)</a></li>
180
181 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker">lenker (4)</a></li>
182
183 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
184
185 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (10)</a></li>
186
187 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk">norsk (87)</a></li>
188
189 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug">nuug (111)</a></li>
190
191 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (17)</a></li>
192
193 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern">personvern (22)</a></li>
194
195 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap">reprap (10)</a></li>
196
197 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot">robot (4)</a></li>
198
199 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
200
201 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (17)</a></li>
202
203 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (3)</a></li>
204
205 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard">standard (16)</a></li>
206
207 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (1)</a></li>
208
209 <li><a href="http://people.skolelinux.org/pere/blog/tags/video">video (15)</a></li>
210
211 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (1)</a></li>
212
213 <li><a href="http://people.skolelinux.org/pere/blog/tags/web">web (13)</a></li>
214
215 </ul>
216
217 </div>
218 </body>
219 </html>