]> pere.pagekite.me Git - homepage.git/blob - blog/tags/robot/index.html
740eb0fdd28c2e35d201a8fbb75ea44a8e5a6e1a
[homepage.git] / blog / tags / robot / index.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 xmlns="http://www.w3.org/1999/xhtml" dir="ltr">
4 <head>
5 <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: Entries Tagged robot</title>
7 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/style.css" />
8 <link rel="stylesheet" type="text/css" media="screen" href="https://people.skolelinux.org/pere/blog/vim.css" />
9 <link rel="alternate" title="RSS Feed" href="robot.rss" type="application/rss+xml" />
10 </head>
11 <body>
12 <div class="title">
13 <h1>
14 <a href="https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen</a>
15
16 </h1>
17
18 </div>
19
20
21 <h3>Entries tagged "robot".</h3>
22
23 <div class="entry">
24 <div class="title">
25 <a href="https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html">LinuxCNC MQTT publisher component</a>
26 </div>
27 <div class="date">
28 8th January 2023
29 </div>
30 <div class="body">
31 <p>I watched <a href="https://yewtu.be/watch?v=jmKUV3aNLjk">a 2015
32 video from Andreas Schiffler</a> the other day, where he set up
33 <a href="https://linuxcnc.org/">LinuxCNC</a> to send status
34 information to the MQTT broker IBM Bluemix. As I also use MQTT for
35 graphing, it occured to me that a generic MQTT LinuxCNC component
36 would be useful and I set out to implement it. Today I got the first
37 draft limping along and submitted as
38 <a href="https://github.com/LinuxCNC/linuxcnc/pull/2253">a patch to the
39 LinuxCNC project</a>.</p>
40
41 <p>The simple part was setting up the MQTT publishing code in Python.
42 I already have set up other parts submitting data to my Mosquito MQTT
43 broker, so I could reuse that code. Writing a LinuxCNC component in
44 Python as new to me, but using existing examples in the code
45 repository and the extensive documentation, this was fairly straight
46 forward. The hardest part was creating a automated test for the
47 component to ensure it was working. Testing it in a simulated
48 LinuxCNC machine proved very useful, as I discovered features I needed
49 that I had not thought of yet, and adjusted the code quite a bit to
50 make it easier to test without a operational MQTT broker
51 available.</p>
52
53 <p>The draft is ready and working, but I am unsure which LinuxCNC HAL
54 pins I should collect and publish by default (in other words, the
55 default set of information pieces published), and how to get the
56 machine name from the LinuxCNC INI file. The latter is a minor
57 detail, but I expect it would be useful in a setup with several
58 machines available. I am hoping for feedback from the experienced
59 LinuxCNC developers and users, to make the component even better
60 before it can go into the mainland LinuxCNC code base.</p>
61
62 <p>Since I started on the MQTT component, I came across
63 <a href="https://yewtu.be/watch?v=Bqa2grG0XtA">another video from Kent
64 VanderVelden</a> where he combine LinuxCNC with a set of screen glasses
65 controlled by a Raspberry Pi, and it occured to me that it would
66 be useful for such use cases if LinuxCNC also provided a REST API for
67 querying its status. I hope to start on such component once the MQTT
68 component is working well.</p>
69
70 <p>As usual, if you use Bitcoin and want to show your support of my
71 activities, please send Bitcoin donations to my address
72 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
73
74 </div>
75 <div class="tags">
76
77
78 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
79
80
81 </div>
82 </div>
83 <div class="padding"></div>
84
85 <div class="entry">
86 <div class="title">
87 <a href="https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html">Automatic LinuxCNC servo PID tuning?</a>
88 </div>
89 <div class="date">
90 16th July 2022
91 </div>
92 <div class="body">
93 <p>While working on a CNC with servo motors controlled by the
94 <a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a>
95 <a href="https://en.wikipedia.org/wiki/PID_controller">PID
96 controller</a>, I recently had to learn how to tune the collection of values
97 that control such mathematical machinery that a PID controller is. It
98 proved to be a lot harder than I hoped, and I still have not succeeded
99 in getting the Z PID controller to successfully defy gravity, nor X
100 and Y to move accurately and reliably. But while climbing up this
101 rather steep learning curve, I discovered that some motor control
102 systems are able to tune their PID controllers. I got the impression
103 from the documentation that LinuxCNC were not. This proved to be not
104 true.</p>
105
106 <p>The LinuxCNC
107 <a href="http://linuxcnc.org/docs/html/man/man9/pid.9.html">pid
108 component</a> is the recommended PID controller to use. It uses eight
109 constants <tt>Pgain</tt>, <tt>Igain</tt>, <tt>Dgain</tt>,
110 <tt>bias</tt>, <tt>FF0</tt>, <tt>FF1</tt>, <tt>FF2</tt> and
111 <tt>FF3</tt> to calculate the output value based on current and wanted
112 state, and all of these need to have a sensible value for the
113 controller to behave properly. Note, there are even more values
114 involved, theser are just the most important ones. In my case I need
115 the X, Y and Z axes to follow the requested path with little error.
116 This has proved quite a challenge for someone who have never tuned a
117 PID controller before, but there is at least some help to be found.
118
119 <p>I discovered that included in LinuxCNC was this old PID component
120 at_pid claiming to have auto tuning capabilities. Sadly it had been
121 neglected since 2011, and could not be used as a plug in replacement
122 for the default pid component. One would have to rewriting the
123 LinuxCNC HAL setup to test at_pid. This was rather sad, when I wanted
124 to quickly test auto tuning to see if it did a better job than me at
125 figuring out good P, I and D values to use.</p>
126
127 <p>I decided to have a look if the situation could be improved. This
128 involved trying to understand the code and history of the pid and
129 at_pid components. Apparently they had a common ancestor, as code
130 structure, comments and variable names were quite close to each other.
131 Sadly this was not reflected in the git history, making it hard to
132 figure out what really happened. My guess is that the author of
133 <a href="https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/at_pid.c">at_pid.c</a>
134 took a version of
135 <a href="https://github.com/LinuxCNC/linuxcnc/blob/master/src/hal/components/pid.c">pid.c</a>,
136 rewrote it to follow the structure he wished pid.c to have, then added
137 support for auto tuning and finally got it included into the LinuxCNC
138 repository. The restructuring and lack of early history made it
139 harder to figure out which part of the code were relevant to the auto
140 tuning, and which part of the code needed to be updated to work the
141 same way as the current pid.c implementation. I started by trying to
142 isolate relevant changes in pid.c, and applying them to at_pid.c. My
143 aim was to make sure the at_pid component could replace the pid
144 component with a simple change in the HAL setup loadrt line, without
145 having to "rewire" the rest of the HAL configuration. After a few
146 hours following this approach, I had learned quite a lot about the
147 code structure of both components, while concluding I was heading down
148 the wrong rabbit hole, and should get back to the surface and find a
149 different path.</p>
150
151 <p>For the second attempt, I decided to throw away all the PID control
152 related part of the original at_pid.c, and instead isolate and lift
153 the auto tuning part of the code and inject it into a copy of pid.c.
154 This ensured compatibility with the current pid component, while
155 adding auto tuning as a run time option. To make it easier to identify
156 the relevant parts in the future, I wrapped all the auto tuning code
157 with '#ifdef AUTO_TUNER'. The end result behave just like the current
158 pid component by default, as that part of the code is identical. The
159 <a href="https://github.com/LinuxCNC/linuxcnc/pull/1820">end result
160 entered the LinuxCNC master branch</a> a few days ago.</p>
161
162 <p>To enable auto tuning, one need to set a few HAL pins in the PID
163 component. The most important ones are <tt>tune-effort</tt>,
164 <tt>tune-mode</tt> and <tt>tune-start</tt>. But lets take a step
165 back, and see what the auto tuning code will do. I do not know the
166 mathematical foundation of the at_pid algorithm, but from observation
167 I can tell that the algorithm will, when enabled, produce a square
168 wave pattern centered around the <tt>bias</tt> value on the output pin
169 of the PID controller. This can be seen using the HAL Scope provided
170 by LinuxCNC. In my case, this is translated into voltage (+-10V) sent
171 to the motor controller, which in turn is translated into motor speed.
172 So at_pid will ask the motor to move the axis back and forth. The
173 number of cycles in the pattern is controlled by the
174 <tt>tune-cycles</tt> pin, and the extremes of the wave pattern is
175 controlled by the <tt>tune-effort</tt> pin. Of course, trying to
176 change the direction of a physical object instantly (as in going
177 directly from a positive voltage to the equivalent negative voltage)
178 do not change velocity instantly, and it take some time for the object
179 to slow down and move in the opposite direction. This result in a
180 more smooth movement wave form, as the axis in question were vibrating
181 back and forth. When the axis reached the target speed in the
182 opposing direction, the auto tuner change direction again. After
183 several of these changes, the average time delay between the 'peaks'
184 and 'valleys' of this movement graph is then used to calculate
185 proposed values for Pgain, Igain and Dgain, and insert them into the
186 HAL model to use by the pid controller. The auto tuned settings are
187 not great, but htye work a lot better than the values I had been able
188 to cook up on my own, at least for the horizontal X and Y axis. But I
189 had to use very small <tt>tune-effort<tt> values, as my motor
190 controllers error out if the voltage change too quickly. I've been
191 less lucky with the Z axis, which is moving a heavy object up and
192 down, and seem to confuse the algorithm. The Z axis movement became a
193 lot better when I introduced a <tt>bias</tt> value to counter the
194 gravitational drag, but I will have to work a lot more on the Z axis
195 PID values.</p>
196
197 <p>Armed with this knowledge, it is time to look at how to do the
198 tuning. Lets say the HAL configuration in question load the PID
199 component for X, Y and Z like this:</p>
200
201 <blockquote><pre>
202 loadrt pid names=pid.x,pid.y,pid.z
203 </pre></blockquote>
204
205 <p>Armed with the new and improved at_pid component, the new line will
206 look like this:</p>
207
208 <blockquote><pre>
209 loadrt at_pid names=pid.x,pid.y,pid.z
210 </pre></blockquote>
211
212 <p>The rest of the HAL setup can stay the same. This work because the
213 components are referenced by name. If the component had used count=3
214 instead, all use of pid.# had to be changed to at_pid.#.</p>
215
216 <p>To start tuning the X axis, move the axis to the middle of its
217 range, to make sure it do not hit anything when it start moving back
218 and forth. Next, set the <tt>tune-effort</tt> to a low number in the
219 output range. I used 0.1 as my initial value. Next, assign 1 to the
220 <tt>tune-mode</tt> value. Note, this will disable the pid controlling
221 part and feed 0 to the output pin, which in my case initially caused a
222 lot of drift. In my case it proved to be a good idea with X and Y to
223 tune the motor driver to make sure 0 voltage stopped the motor
224 rotation. On the other hand, for the Z axis this proved to be a bad
225 idea, so it will depend on your setup. It might help to set the
226 <tt>bias</tt> value to a output value that reduce or eliminate the
227 axis drift. Finally, after setting <tt>tune-mode</tt>, set
228 <tt>tune-start</tt> to 1 to activate the auto tuning. If all go well,
229 your axis will vibrate for a few seconds and when it is done, new
230 values for Pgain, Igain and Dgain will be active. To test them,
231 change <tt>tune-mode</tt> back to 0. Note that this might cause the
232 machine to suddenly jerk as it bring the axis back to its commanded
233 position, which it might have drifted away from during tuning. To
234 summarize with some halcmd lines:</p>
235
236 <blockquote><pre>
237 setp pid.x.tune-effort 0.1
238 setp pid.x.tune-mode 1
239 setp pid.x.tune-start 1
240 # wait for the tuning to complete
241 setp pid.x.tune-mode 0
242 </pre></blockquote>
243
244 <p>After doing this task quite a few times while trying to figure out
245 how to properly tune the PID controllers on the machine in, I decided
246 to figure out if this process could be automated, and wrote a script
247 to do the entire tuning process from power on. The end result will
248 ensure the machine is powered on and ready to run, home all axis if it
249 is not already done, check that the extra tuning pins are available,
250 move the axis to its mid point, run the auto tuning and re-enable the
251 pid controller when it is done. It can be run several times. Check
252 out the
253 <a href="https://github.com/SebKuzminsky/MazakVQC1540/blob/bon-dev/scripts/run-auto-pid-tuner">run-auto-pid-tuner</a>
254 script on github if you want to learn how it is done.</p>
255
256 <p>My hope is that this little adventure can inspire someone who know
257 more about motor PID controller tuning can implement even better
258 algorithms for automatic PID tuning in LinuxCNC, making life easier
259 for both me and all the others that want to use LinuxCNC but lack the
260 in depth knowledge needed to tune PID controllers well.</p>
261
262 <p>As usual, if you use Bitcoin and want to show your support of my
263 activities, please send Bitcoin donations to my address
264 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
265
266 </div>
267 <div class="tags">
268
269
270 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
271
272
273 </div>
274 </div>
275 <div class="padding"></div>
276
277 <div class="entry">
278 <div class="title">
279 <a href="https://people.skolelinux.org/pere/blog/LinuxCNC_translators_life_just_got_a_bit_easier.html">LinuxCNC translators life just got a bit easier</a>
280 </div>
281 <div class="date">
282 3rd June 2022
283 </div>
284 <div class="body">
285 <p>Back in oktober last year, when I started looking at the
286 <a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a> system, I
287 proposed to change the documentation build system make life easier for
288 translators. The original system consisted of independently written
289 documentation files for each language, with no automated way to track
290 changes done in other translations and no help for the translators to
291 know how much was left to translated. By using
292 <a href="https://po4a.org/">the po4a system</a> to generate POT and PO
293 files from the English documentation, this can be improved. A small
294 team of LinuxCNC contributors got together and today our labour
295 finally payed off. Since a few hours ago, it is now possible to
296 translate <a href="https://hosted.weblate.org/projects/linuxcnc/">the
297 LinuxCNC documentation on Weblate</a>, alongside the program itself.</p>
298
299 <p>The effort to migrate the documentation to use po4a has been both
300 slow and frustrating. I am very happy we finally made it.</p>
301
302 <p>As usual, if you use Bitcoin and want to show your support of my
303 activities, please send Bitcoin donations to my address
304 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
305
306 </div>
307 <div class="tags">
308
309
310 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
311
312
313 </div>
314 </div>
315 <div class="padding"></div>
316
317 <div class="entry">
318 <div class="title">
319 <a href="https://people.skolelinux.org/pere/blog/Run_your_industrial_metal_working_machine_using_Debian_.html">Run your industrial metal working machine using Debian?</a>
320 </div>
321 <div class="date">
322 2nd March 2022
323 </div>
324 <div class="body">
325 <p>After many months of hard work by the good people involved in
326 <a href="https://en.wikipedia.org/wiki/LinuxCNC">LinuxCNC</a>, the
327 system was accepted Sunday
328 <a href="https://tracker.debian.org/pkg/linuxcnc">into Debian</a>.
329 Once it was available from Debian, I was surprised to discover from
330 <a href="https://qa.debian.org/popcon.php?package=linuxcnc">its
331 popularity-contest numbers</a> that people have been reporting its use
332 since 2012. <a href="http://linuxcnc.org/">Its project site</a> might
333 be a good place to check out, but sadly is not working when visiting
334 via Tor.</p>
335
336 <p>But what is LinuxCNC, you are probably wondering? Perhaps a
337 Wikipedia quote is in place?</p>
338
339 <blockquote>
340 "LinuxCNC is a software system for numerical control of
341 machines such as milling machines, lathes, plasma cutters, routers,
342 cutting machines, robots and hexapods. It can control up to 9 axes or
343 joints of a CNC machine using G-code (RS-274NGC) as input. It has
344 several GUIs suited to specific kinds of usage (touch screen,
345 interactive development)."
346 </blockquote>
347
348 <p>It can even control 3D printers. And even though the Wikipedia
349 page indicate that it can only work with hard real time kernel
350 features, it can also work with the user space soft real time features
351 provided by the Debian kernel.
352 <a href="https://github.com/linuxcnc/linuxcnc">The source code</a> is
353 available from Github. The last few months I've been involved in the
354 translation setup for the program and documentation. Translators are
355 most welcome to
356 <a href="https://hosted.weblate.org/engage/linuxcnc/">join the
357 effort</a> using Weblate.</p>
358
359 <p>As usual, if you use Bitcoin and want to show your support of my
360 activities, please send Bitcoin donations to my address
361 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
362
363 </div>
364 <div class="tags">
365
366
367 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer</a>, <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
368
369
370 </div>
371 </div>
372 <div class="padding"></div>
373
374 <div class="entry">
375 <div class="title">
376 <a href="https://people.skolelinux.org/pere/blog/Debian_still_an_excellent_choice_for_Lego_builders.html">Debian still an excellent choice for Lego builders</a>
377 </div>
378 <div class="date">
379 24th October 2021
380 </div>
381 <div class="body">
382 <p>The Debian Lego team saw a lot of activity the last few weeks. All
383 the packages under the team umbrella has been updated to fix
384 packaging, lintian issues and BTS reports. In addition, a new and
385 inspiring team member appeared on both the
386 <a href="https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/debian-lego-team">debian-lego-team
387 Team mailing list</a> and
388 <a href="irc://irc.debian.org/%23debian-lego">IRC channel
389 #debian-lego</a>. If you are interested in Lego CAD design and LEGO
390 Mindstorms programming, check out the
391 <a href="http://wiki.debian.org/LegoDesigners">team wiki page</a> to
392 see what Debian can offer the Lego enthusiast.</p>
393
394 <p>Patches has been sent upstream, causing new upstream releases, one
395 even the first one in more than ten years, and old upstreams was
396 released with new ones. There are still a lot of work left, and the
397 team welcome more members to help us make sure Debian is the Linux
398 distribution of choice for Lego builders. If you want to contribute,
399 join us in the IRC channel and become part of
400 <a href="https://salsa.debian.org/debian-lego-team/">the team on
401 Salsa</a>.</p>
402
403 <p>As usual, if you use Bitcoin and want to show your support of my
404 activities, please send Bitcoin donations to my address
405 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
406
407 </div>
408 <div class="tags">
409
410
411 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/lego">lego</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
412
413
414 </div>
415 </div>
416 <div class="padding"></div>
417
418 <div class="entry">
419 <div class="title">
420 <a href="https://people.skolelinux.org/pere/blog/The_space_rover_coquine__or_how_I_ended_up_on_the_dark_side_of_the_moon.html">The space rover coquine, or how I ended up on the dark side of the moon</a>
421 </div>
422 <div class="date">
423 2nd June 2019
424 </div>
425 <div class="body">
426 <p>A while back a college and friend from Debian and the Skolelinux /
427 Debian Edu project approached me, asking if I knew someone that might
428 be interested in helping out with a technology project he was running
429 as a teacher at <a href="https://www.ecolefrancodanoise.dk/">L'école
430 franco-danoise</a> - the Danish-French school and kindergarden. The
431 kids were building robots, rovers. The story behind it is to build a
432 rover for use
433 <a href="http://blog.ecolefrancodanoise.dk/first-week-on-the-dark-side">on
434 the dark side of the moon</a>, and remote control it. As travel cost
435 was a bit high for the final destination, and they wanted to test the
436 concept first, he was looking for volunteers to host a rover for the
437 kids to control in a foreign country. I ended up volunteering as a
438 host, and last week the rover arrived. It took a while to arrive
439 after <a href="http://blog.ecolefrancodanoise.dk/model-moms">it was
440 built and shipped</a>, because of customs confusion. Luckily we were
441 able fix it quickly with help from my colleges at work.</p>
442
443 <p>This is what it looked like when the rover arrived. Note the cute
444 eyes looking up on me from the wrapping</p>
445
446 <img src="https://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-esken-med-det-rare-i.jpeg" width="32%" style="clear:left"/>
447 <img src="https://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-den-ser-meg.jpeg" width="32%" style="clear:left"/>
448 <img src="https://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-en-skrue-loes.jpeg" width="32%" style="clear:left"/>
449
450 <p style="text-align:left">Once the robot arrived, we needed to track
451 down batteries and figure out how to build custom firmware for it with
452 the appropriate wifi settings. I asked a friend if I could get two
453 18650 batteries from his pile of Tesla batteries (he had them from the
454 wrack of a crashed Tesla), so now the rover is running on Tesla
455 batteries.</p>
456
457 <p>Building
458 <a href="https://gitlab.com/ecolefrancodanoise/arduino-efd/">the rover
459 firmware</a> proved a bit harder, as the code did not work out of the
460 box with the Arduino IDE package in Debian Buster. I suspect this is
461 due to a unsolved
462 <a href="https://github.com/arduino/Arduino/pull/2703"> license problem
463 with arduino</a> blocking Debian from upgrading to the latest version.
464 In the end we gave up debugging why the IDE failed to find the
465 required libraries, and ended up using the Arduino Makefile from the
466 <a href="https://tracker.debian.org/pkg/arduino-mk">arduino-mk Debian
467 package</a> instead. Unfortunately the camera library is missing from
468 the Arduino environment in Debian, so we disabled the camera support
469 for the first firmware build, to get something up and running. With
470 this reduced firmware, the robot could be controlled via the
471 controller server, driving around and measuring distance using its
472 internal acoustic sensor.</p>
473
474 <p>Next, With some help from my friend in Denmark, which checked in the
475 camera library into the gitlab repository for me to use, we were able
476 to build a new and more complete version of the firmware, and the
477 robot is now up and running. This is what the "commander" web page
478 look like after taking a measurement and a snapshot:</p>
479
480 <img src="https://people.skolelinux.org/pere/blog/images/2019-06-02-robot-dark-side-of-moon-commander.png" width="40%" border="1" align="center"/>
481
482 <p>If you want to learn more about this project, you can check out the
483 <a href="https://hackaday.io/project/164082-the-dark-side-challenge">The
484 Dark Side Challenge</a> Hackaday web pages.</p>
485
486 <p>As usual, if you use Bitcoin and want to show your support of my
487 activities, please send Bitcoin donations to my address
488 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
489
490 </div>
491 <div class="tags">
492
493
494 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
495
496
497 </div>
498 </div>
499 <div class="padding"></div>
500
501 <div class="entry">
502 <div class="title">
503 <a href="https://people.skolelinux.org/pere/blog/Debian_now_got_everything_you_need_to_program_Micro_bit.html">Debian now got everything you need to program Micro:bit</a>
504 </div>
505 <div class="date">
506 22nd January 2019
507 </div>
508 <div class="body">
509 <p>I am amazed and very pleased to discover that since a few days ago,
510 everything you need to program the <a href="https://microbit.org/">BBC
511 micro:bit</a> is available from the Debian archive. All this is
512 thanks to the hard work of Nick Morrott and the Debian python
513 packaging team. The micro:bit project recommend the mu-editor to
514 program the microcomputer, as this editor will take care of all the
515 machinery required to injekt/flash micropython alongside the program
516 into the micro:bit, as long as the pieces are available.</p>
517
518 <p>There are three main pieces involved. The first to enter Debian
519 was
520 <a href="https://tracker.debian.org/pkg/python-uflash">python-uflash</a>,
521 which was accepted into the archive 2019-01-12. The next one was
522 <a href="https://tracker.debian.org/pkg/mu-editor">mu-editor</a>, which
523 showed up 2019-01-13. The final and hardest part to to into the
524 archive was
525 <a href="https://tracker.debian.org/pkg/firmware-microbit-micropython">firmware-microbit-micropython</a>,
526 which needed to get its build system and dependencies into Debian
527 before it was accepted 2019-01-20. The last one is already in Debian
528 Unstable and should enter Debian Testing / Buster in three days. This
529 all allow any user of the micro:bit to get going by simply running
530 'apt install mu-editor' when using Testing or Unstable, and once
531 Buster is released as stable, all the users of Debian stable will be
532 catered for.</p>
533
534 <p>As a minor final touch, I added rules to
535 <a href="https://tracker.debian.org/pkg/isenkram">the isenkram
536 package</a> for recognizing micro:bit and recommend the mu-editor
537 package. This make sure any user of the isenkram desktop daemon will
538 get a popup suggesting to install mu-editor then the USB cable from
539 the micro:bit is inserted for the first time.</p>
540
541 <p>This should make it easier to have fun.</p>
542
543 <p>As usual, if you use Bitcoin and want to show your support of my
544 activities, please send Bitcoin donations to my address
545 <b><a href="bitcoin:15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
546
547 </div>
548 <div class="tags">
549
550
551 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
552
553
554 </div>
555 </div>
556 <div class="padding"></div>
557
558 <div class="entry">
559 <div class="title">
560 <a href="https://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html">My own self balancing Lego Segway</a>
561 </div>
562 <div class="date">
563 4th November 2016
564 </div>
565 <div class="body">
566 <p>A while back I received a Gyro sensor for the NXT
567 <a href="mindstorms.lego.com">Mindstorms</a> controller as a birthday
568 present. It had been on my wishlist for a while, because I wanted to
569 build a Segway like balancing lego robot. I had already built
570 <a href="http://www.nxtprograms.com/NXT2/segway/">a simple balancing
571 robot</a> with the kids, using the light/color sensor included in the
572 NXT kit as the balance sensor, but it was not working very well. It
573 could balance for a while, but was very sensitive to the light
574 condition in the room and the reflective properties of the surface and
575 would fall over after a short while. I wanted something more robust,
576 and had
577 <a href="https://www.hitechnic.com/cgi-bin/commerce.cgi?preadd=action&key=NGY1044">the
578 gyro sensor from HiTechnic</a> I believed would solve it on my
579 wishlist for some years before it suddenly showed up as a gift from my
580 loved ones. :)</p>
581
582 <p>Unfortunately I have not had time to sit down and play with it
583 since then. But that changed some days ago, when I was searching for
584 lego segway information and came across a recipe from HiTechnic for
585 building
586 <a href="http://www.hitechnic.com/blog/gyro-sensor/htway/">the
587 HTWay</a>, a segway like balancing robot. Build instructions and
588 <a href="https://www.hitechnic.com/upload/786-HTWayC.nxc">source
589 code</a> was included, so it was just a question of putting it all
590 together. And thanks to the great work of many Debian developers, the
591 compiler needed to build the source for the NXT is already included in
592 Debian, so I was read to go in less than an hour. The resulting robot
593 do not look very impressive in its simplicity:</p>
594
595 <p align="center"><img width="70%" src="https://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg"></p>
596
597 <p>Because I lack the infrared sensor used to control the robot in the
598 design from HiTechnic, I had to comment out the last task
599 (taskControl). I simply placed /* and */ around it get the program
600 working without that sensor present. Now it balances just fine until
601 the battery status run low:</p>
602
603 <p align="center"><video width="70%" controls="true">
604 <source src="https://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-balancing.ogv" type="video/ogg">
605 </video></p>
606
607 <p>Now we would like to teach it how to follow a line and take remote
608 control instructions using the included Bluetooth receiver in the NXT.</p>
609
610 <p>If you, like me, love LEGO and want to make sure we find the tools
611 they need to work with LEGO in Debian and all our derivative
612 distributions like Ubuntu, check out
613 <a href="http://wiki.debian.org/LegoDesigners">the LEGO designers
614 project page</a> and join the Debian LEGO team. Personally I own a
615 RCX and NXT controller (no EV3), and would like to make sure the
616 Debian tools needed to program the systems I own work as they
617 should.</p>
618
619 </div>
620 <div class="tags">
621
622
623 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/lego">lego</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
624
625
626 </div>
627 </div>
628 <div class="padding"></div>
629
630 <div class="entry">
631 <div class="title">
632 <a href="https://people.skolelinux.org/pere/blog/All_drones_should_be_radio_marked_with_what_they_do_and_who_they_belong_to.html">All drones should be radio marked with what they do and who they belong to</a>
633 </div>
634 <div class="date">
635 21st November 2013
636 </div>
637 <div class="body">
638 <p>Drones, flying robots, are getting more and more popular. The most
639 know ones are the killer drones used by some government to murder
640 people they do not like without giving them the chance of a fair
641 trial, but the technology have many good uses too, from mapping and
642 forest maintenance to photography and search and rescue. I am sure it
643 is just a question of time before "bad drones" are in the hands of
644 private enterprises and not only state criminals but petty criminals
645 too. The drone technology is very useful and very dangerous. To have
646 some control over the use of drones, I agree with Daniel Suarez in his
647 TED talk
648 "<a href="https://archive.org/details/DanielSuarez_2013G">The kill
649 decision shouldn't belong to a robot</a>", where he suggested this
650 little gem to keep the good while limiting the bad use of drones:</p>
651
652 <blockquote>
653
654 <p>Each robot and drone should have a cryptographically signed
655 I.D. burned in at the factory that can be used to track its movement
656 through public spaces. We have license plates on cars, tail numbers on
657 aircraft. This is no different. And every citizen should be able to
658 download an app that shows the population of drones and autonomous
659 vehicles moving through public spaces around them, both right now and
660 historically. And civic leaders should deploy sensors and civic drones
661 to detect rogue drones, and instead of sending killer drones of their
662 own up to shoot them down, they should notify humans to their
663 presence. And in certain very high-security areas, perhaps civic
664 drones would snare them and drag them off to a bomb disposal facility.</p>
665
666 <p>But notice, this is more an immune system than a weapons system. It
667 would allow us to avail ourselves of the use of autonomous vehicles
668 and drones while still preserving our open, civil society.</p>
669
670 </blockquote>
671
672 <p>The key is that <em>every citizen</em> should be able to read the
673 radio beacons sent from the drones in the area, to be able to check
674 both the government and others use of drones. For such control to be
675 effective, everyone must be able to do it. What should such beacon
676 contain? At least formal owner, purpose, contact information and GPS
677 location. Probably also the origin and target position of the current
678 flight. And perhaps some registration number to be able to look up
679 the drone in a central database tracking their movement. Robots
680 should not have privacy. It is people who need privacy.</p>
681
682 </div>
683 <div class="tags">
684
685
686 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>, <a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet</a>, <a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance</a>.
687
688
689 </div>
690 </div>
691 <div class="padding"></div>
692
693 <div class="entry">
694 <div class="title">
695 <a href="https://people.skolelinux.org/pere/blog/Perl_library_to_control_the_Spykee_robot_moved_to_github.html">Perl library to control the Spykee robot moved to github</a>
696 </div>
697 <div class="date">
698 19th October 2013
699 </div>
700 <div class="body">
701 <p>Back in 2010, I created a Perl library to talk to
702 <a href="http://en.wikipedia.org/wiki/Spykee">the Spykee robot</a>
703 (with two belts, wifi, USB and Linux) and made it available from my
704 web page. Today I concluded that it should move to a site that is
705 easier to use to cooperate with others, and moved it to github. If
706 you got a Spykee robot, you might want to check out
707 <a href="https://github.com/petterreinholdtsen/libspykee-perl">the
708 libspykee-perl github repository</a>.</p>
709
710 </div>
711 <div class="tags">
712
713
714 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
715
716
717 </div>
718 </div>
719 <div class="padding"></div>
720
721 <div class="entry">
722 <div class="title">
723 <a href="https://people.skolelinux.org/pere/blog/Debian__the_Linux_distribution_of_choice_for_LEGO_designers_.html">Debian, the Linux distribution of choice for LEGO designers?</a>
724 </div>
725 <div class="date">
726 11th May 2013
727 </div>
728 <div class="body">
729 <P>In January,
730 <a href="https://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html">I
731 announced a</a> new <a href="irc://irc.debian.org/%23debian-lego">IRC
732 channel #debian-lego</a>, for those of us in the Debian and Linux
733 community interested in <a href="http://www.lego.com/">LEGO</a>, the
734 marvellous construction system from Denmark. We also created
735 <a href="http://wiki.debian.org/LegoDesigners">a wiki page</a> to have
736 a place to take notes and write down our plans and hopes. And several
737 people showed up to help. I was very happy to see the effect of my
738 call. Since the small start, we have a debtags tag
739 <a href="http://debtags.debian.net/search/bytag?wl=hardware::hobby:lego">hardware::hobby:lego</a>
740 tag for LEGO related packages, and now count 10 packages related to
741 LEGO and <a href="http://mindstorms.lego.com/">Mindstorms</a>:</p>
742
743 <p><table>
744 <tr><td><a href="http://packages.qa.debian.org/brickos">brickos</a></td><td>alternative OS for LEGO Mindstorms RCX. Supports development in C/C++</td></tr>
745 <tr><td><a href="http://packages.qa.debian.org/leocad">leocad</a></td><td>virtual brick CAD software</td></tr>
746 <tr><td><a href="http://packages.qa.debian.org/libnxt">libnxt</a></td><td>utility library for talking to the LEGO Mindstorms NX</td></tr>
747 <tr><td><a href="http://packages.qa.debian.org/lnpd">lnpd</a></td><td>daemon for LNP communication with BrickOS</td></tr>
748 <tr><td><a href="http://packages.qa.debian.org/nbc">nbc</a></td><td>compiler for LEGO Mindstorms NXT bricks</td></tr>
749 <tr><td><a href="http://packages.qa.debian.org/nqc">nqc</a></td><td>Not Quite C compiler for LEGO Mindstorms RCX</td></tr>
750 <tr><td><a href="http://packages.qa.debian.org/python-nxt">python-nxt</a></td><td>python driver/interface/wrapper for the Lego Mindstorms NXT robot</td></tr>
751 <tr><td><a href="http://packages.qa.debian.org/python-nxt-filer">python-nxt-filer</a></td><td>simple GUI to manage files on a LEGO Mindstorms NXT</td></tr>
752 <tr><td><a href="http://packages.qa.debian.org/scratch">scratch</a></td><td>easy to use programming environment for ages 8 and up</td></tr>
753 <tr><td><a href="http://packages.qa.debian.org/t2n">t2n</a></td><td>simple command-line tool for Lego NXT</td></tr>
754 </table></p>
755
756 <p>Some of these are available in Wheezy, and all but one are
757 currently available in Jessie/testing. leocad is so far only
758 available in experimental.</p>
759
760 <p>If you care about LEGO in Debian, please join us on IRC and help
761 adding the rest of the great free software tools available on Linux
762 for LEGO designers.</p>
763
764 </div>
765 <div class="tags">
766
767
768 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/lego">lego</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
769
770
771 </div>
772 </div>
773 <div class="padding"></div>
774
775 <div class="entry">
776 <div class="title">
777 <a href="https://people.skolelinux.org/pere/blog/Moved_the_pymissile_Debian_packaging_to_collab_maint.html">Moved the pymissile Debian packaging to collab-maint</a>
778 </div>
779 <div class="date">
780 10th January 2013
781 </div>
782 <div class="body">
783 <p>As part of my investigation on how to improve the support in Debian
784 for hardware dongles, I dug up my old Mark and Spencer USB Rocket
785 Launcher and updated the Debian package
786 <a href="http://packages.qa.debian.org/pymissile">pymissile</a> to make
787 sure udev will fix the device permissions when it is plugged in. I
788 also added a "Modaliases" header to test it in the Debian archive and
789 hopefully make the package be proposed by jockey in Ubuntu when a user
790 plug in his rocket launcher. In the process I moved the source to a
791 git repository under collab-maint, to make it easier for any DD to
792 contribute. <a href="http://code.google.com/p/pymissile/">Upstream</a>
793 is not very active, but the software still work for me even after five
794 years of relative silence. The new git repository is not listed in
795 the uploaded package yet, because I want to test the other changes a
796 bit more before I upload the new version. If you want to check out
797 the new version with a .desktop file included, visit the
798 <a href="http://anonscm.debian.org/gitweb/?p=collab-maint/pymissile.git">gitweb
799 view</a> or use "<tt>git clone
800 git://anonscm.debian.org/collab-maint/pymissile.git</tt>".</p>
801
802 </div>
803 <div class="tags">
804
805
806 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
807
808
809 </div>
810 </div>
811 <div class="padding"></div>
812
813 <div class="entry">
814 <div class="title">
815 <a href="https://people.skolelinux.org/pere/blog/New_IRC_channel_for_LEGO_designers_using_Debian.html">New IRC channel for LEGO designers using Debian</a>
816 </div>
817 <div class="date">
818 2nd January 2013
819 </div>
820 <div class="body">
821 <p>During Christmas, I have worked a bit on the Debian support for
822 <a href="http://mindstorms.lego.com/en-us/Default.aspx">LEGO Mindstorm
823 NXT</a>. My son and I have played a bit with my NXT set, and I
824 discovered I had to build all the tools myself because none were
825 already in Debian Squeeze. If Debian support for LEGO is something
826 you care about, please join me on the IRC channel
827 <a href="irc://irc.debian.org/%23debian-lego">#debian-lego</a> (server
828 irc.debian.org). There is a lot that could be done to improve the
829 Debian support for LEGO designers. For example both CAD software
830 and Mindstorm compilers are missing. :)</p>
831
832 <p>Update 2012-01-03: A
833 <a href="http://wiki.debian.org/LegoDesigners">project page</a>
834 including links to Lego related packages is now available.</p>
835
836 </div>
837 <div class="tags">
838
839
840 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/debian">debian</a>, <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/lego">lego</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
841
842
843 </div>
844 </div>
845 <div class="padding"></div>
846
847 <div class="entry">
848 <div class="title">
849 <a href="https://people.skolelinux.org/pere/blog/First_version_of_a_Perl_library_to_control_the_Spykee_robot.html">First version of a Perl library to control the Spykee robot</a>
850 </div>
851 <div class="date">
852 9th October 2010
853 </div>
854 <div class="body">
855 <p>This summer I got the chance to buy cheap Spykee robots, and since
856 then I have worked on getting Linux software in place to control them.
857 The firmware for the robot is available from the producer, and using
858 that source it was trivial to figure out the protocol specification.
859 I've started on a perl library to control it, and made some demo
860 programs using this perl library to allow one to control the
861 robots.</p>
862
863 <p>The library is quite functional already, and capable of controlling
864 the driving, fetching video, uploading MP3s and play them. There are
865 a few less important features too.</p>
866
867 <p>Since a few weeks ago, I ran out of time to spend on this project,
868 but I never got around to releasing the current source. I decided
869 today that it was time to do something about it, and uploaded the
870 source to my Debian package store at people.skolelinux.org.</p>
871
872 <p>Because it was simpler for me, I made a Debian package and
873 published the source and deb. If you got a spykee robot, grab the
874 source or binary package:</p>
875
876 <p><ul>
877 <li><a href="https://people.skolelinux.org/~pere/debian/packages/lenny/libspykee-perl_0.0.20101009-1.tar.gz">libspykee-perl_0.0.20101009-1.tar.gz</a></li>
878 <li><a href="https://people.skolelinux.org/~pere/debian/packages/lenny/libspykee-perl_0.0.20101009-1.dsc">libspykee-perl_0.0.20101009-1.dsc</a></li>
879 <li><a href="https://people.skolelinux.org/~pere/debian/packages/lenny/libspykee-perl_0.0.20101009-1_all.deb">libspykee-perl_0.0.20101009-1_all.deb</a></li>
880 </ul></p>
881
882 <p>If you are interested in helping out with developing this library,
883 please let me know.</p>
884
885 </div>
886 <div class="tags">
887
888
889 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
890
891
892 </div>
893 </div>
894 <div class="padding"></div>
895
896 <div class="entry">
897 <div class="title">
898 <a href="https://people.skolelinux.org/pere/blog/My_first_perl_GUI_application___controlling_a_Spykee_robot.html">My first perl GUI application - controlling a Spykee robot</a>
899 </div>
900 <div class="date">
901 1st September 2010
902 </div>
903 <div class="body">
904 <p>This evening I made my first Perl GUI application. The last few
905 days I have worked on a Perl module for controlling my recently
906 aquired Spykee robots, and the module is now getting complete enought
907 that it is possible to use it to control the robot driving at least.
908 It was now time to figure out how to use it to create some GUI to
909 allow me to drive the robot around. I picked PerlQt as I have had
910 positive experiences with the Qt API before, and spent a few minutes
911 browsing the web for examples. Using Qt Designer seemed like a short
912 cut, so I ended up writing the perl GUI using Qt Designer and
913 compiling it into a perl program using the puic program from
914 libqt-perl. Nothing fancy yet, but it got buttons to connect and
915 drive around.</p>
916
917 <p>The perl module I have written provide a object oriented API for
918 controlling the robot. Here is an small example on how to use it:</p>
919
920 <p><pre>
921 use Spykee;
922 Spykee::discover(sub {$robot{$_[0]} = $_[1]});
923 my $host = (keys %robot)[0];
924 my $spykee = Spykee->new();
925 $spykee->contact($host, "admin", "admin");
926 $spykee->left();
927 sleep 2;
928 $spykee->right();
929 sleep 2;
930 $spykee->forward();
931 sleep 2;
932 $spykee->back();
933 sleep 2;
934 $spykee->stop();
935 </pre></p>
936
937 <p>Thanks to the release of the source of the robot firmware, I could
938 peek into the implementation at the other end to figure out how to
939 implement the protocol used by the robot. I've implemented several of
940 the commands the robot understand, but is still missing the camera
941 support to make it possible to control the robot from remote. First I
942 want to implement support for uploading new firmware and configuring
943 the wireless network, to make it possible to bootstrap a Spykee robot
944 without the producers Windows and MacOSX software (I only have Linux,
945 so I had to ask a friend to come over to get the robot testing
946 going. :).</p>
947
948 <p>Will release the source to the public soon, but need to figure out
949 where to make it available first. I will add a link to
950 <a href="http://wiki.nuug.no/grupper/robot/">the NUUG wiki</a> for
951 those that want to check back later to find it.</p>
952
953 </div>
954 <div class="tags">
955
956
957 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/english">english</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
958
959
960 </div>
961 </div>
962 <div class="padding"></div>
963
964 <div class="entry">
965 <div class="title">
966 <a href="https://people.skolelinux.org/pere/blog/Robot__reis_deg___.html">Robot, reis deg...</a>
967 </div>
968 <div class="date">
969 21st August 2010
970 </div>
971 <div class="body">
972 <p>I dag fikk jeg endelig tittet litt på mine nyinnkjøpte roboter, og
973 har brukt noen timer til å google etter interessante referanser og
974 aktuell kildekode for bruk på Linux. Det mest lovende så langt er
975 <a href="http://ispykee.toyz.org/">ispykee</a>, som har en
976 BSD-lisensiert linux-daemon som står som mellomledd mellom roboter på
977 lokalnettet og en sentral tjeneste der en iPhone kan koble seg opp for
978 å fjernstyre roboten. Linux-daemonen implementerer deler av
979 protokollen som roboten forstår. Etter å ha knotet litt med å oppnå
980 kontakt med roboten (den oppretter et eget ad-hoc wifi-nett, så jeg
981 måtte gå av mitt vanlige nett for å få kontakt), og kommet frem til at
982 den lytter på IP-port 9000 og 9001, gikk jeg i gang med å finne ut
983 hvordan jeg kunne snakke med roboten vha. disse portene. Robotbiten
984 av protokollen er publisert av produsenten med GPL-lisens, slik at det
985 er mulig å se hvordan protokollen fungerer. Det finnes en java-klient
986 for Android som så ganske snasen ut, men fant ingen kildekode for
987 denne. Derimot hadde iphone-løsningen kildekode, så jeg tok
988 utgangspunkt i den.</p>
989
990 <p>Daemonen ville i utgangspunktet forsøke å kontakte den sentrale
991 tjenesten som iphone-programmet kobler seg til. Jeg skrev dette om
992 til i stedet å sette opp en nettverkstjeneste på min lokale maskin,
993 som jeg kan koble meg opp til med telnet og gi kommandoer til roboten
994 (act, forward, right, left, etc). Det involverte i praksis å bytte ut
995 socket()/connect() med socket()/bind()/listen()/accept() for å gjøre
996 klienten om til en tjener.</p>
997
998 <p>Mens jeg har forsøkt å få roboten til å bevege seg har min samboer
999 skrudd sammen resten av roboten for å få montert kamera og plastpynten
1000 (armer, plastfiber for lys). NÃ¥ er det hele montert, og roboten er
1001 klar til bruk. Må få flyttet den over til mitt vanlige trådløsnett
1002 før det blir praktisk, men de bitene av protokollen er ikke
1003 implementert i ispykee-daemonen, så der må jeg enten få tak i en mac
1004 eller en windows-maskin, eller implementere det selv.</p>
1005
1006 <p>Vi var tre som kjøpte slike roboter, og vi har blitt enige om å
1007 samle notater og referanser på <a
1008 href="http://wiki.nuug.no/grupper/robot/">NUUGs wiki</a>. Ta en titt
1009 der hvis du er nysgjerrig.</p>
1010
1011 </div>
1012 <div class="tags">
1013
1014
1015 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
1016
1017
1018 </div>
1019 </div>
1020 <div class="padding"></div>
1021
1022 <div class="entry">
1023 <div class="title">
1024 <a href="https://people.skolelinux.org/pere/blog/2_Spykee_roboter_i_hus__n__skal_det_lekes.html">2 Spykee-roboter i hus, nå skal det lekes</a>
1025 </div>
1026 <div class="date">
1027 18th August 2010
1028 </div>
1029 <div class="body">
1030 <p>Jeg kjøpte nettopp to
1031 <a href="http://www.spykee-robot.com/">Spykee</a>-roboter, for test og
1032 leking. Kjøpte to da det var så billige, og gir meg mulighet til å
1033 eksperimentere uten å være veldig redd for å ødelegge alt ved å bytte
1034 ut firmware og slikt. Oppdaget at lekebutikken på Bryn senter hadde
1035 en liten stabel på lager som de ikke hadde klart å selge ut etter
1036 fjorårets juleinnkjøp, og var villig til å selge for en femtedel av
1037 vanlig pris. Jeg, Ronny og Jarle har skaffet oss restbeholdningen, og
1038 det blir morsomt å se hva vi får ut av dette.</p>
1039
1040 <p>Roboten har belter styrt av to motorer, kamera, høytaler, mikrofon
1041 og wifi-tilkobling. Det hele styrt av en GPL-lisensiert databoks som
1042 jeg mistenker kjører linux. Firmware-kildekoden ble visst publisert i
1043 mai. Eneste utfordringen er at kontroller-programvaren kun finnes til
1044 Windows, men det må en kunne jobbe seg rundt når vi har kildekoden til
1045 firmwaren. :)</p>
1046
1047 <ul>
1048 <li><a href="http://en.wikipedia.org/wiki/Spykee">Wikipedia-oppføring</a></li>
1049 <li><a href="http://www.spykeeworld.com/spykee/US/freeSoftware.html">Nedlasting av firmware-kilden</a></li>
1050 <li><a href="http://wiki.nuug.no/grupper/robot">prosjektwiki hos NUUG</a></li>
1051 </ul>
1052
1053 </div>
1054 <div class="tags">
1055
1056
1057 Tags: <a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk</a>, <a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug</a>, <a href="https://people.skolelinux.org/pere/blog/tags/robot">robot</a>.
1058
1059
1060 </div>
1061 </div>
1062 <div class="padding"></div>
1063
1064 <p style="text-align: right;"><a href="robot.rss"><img src="https://people.skolelinux.org/pere/blog/xml.gif" alt="RSS Feed" width="36" height="14" /></a></p>
1065 <div id="sidebar">
1066
1067
1068
1069 <h2>Archive</h2>
1070 <ul>
1071
1072 <li>2025
1073 <ul>
1074
1075 <li><a href="https://people.skolelinux.org/pere/blog/archive/2025/01/">January (1)</a></li>
1076
1077 </ul></li>
1078
1079 <li>2023
1080 <ul>
1081
1082 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/01/">January (3)</a></li>
1083
1084 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/02/">February (1)</a></li>
1085
1086 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/04/">April (2)</a></li>
1087
1088 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/05/">May (3)</a></li>
1089
1090 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/06/">June (1)</a></li>
1091
1092 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/08/">August (1)</a></li>
1093
1094 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/09/">September (1)</a></li>
1095
1096 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/10/">October (1)</a></li>
1097
1098 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/11/">November (4)</a></li>
1099
1100 <li><a href="https://people.skolelinux.org/pere/blog/archive/2023/12/">December (1)</a></li>
1101
1102 </ul></li>
1103
1104 <li>2022
1105 <ul>
1106
1107 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/02/">February (1)</a></li>
1108
1109 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/03/">March (3)</a></li>
1110
1111 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/04/">April (2)</a></li>
1112
1113 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/06/">June (2)</a></li>
1114
1115 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/07/">July (1)</a></li>
1116
1117 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/09/">September (1)</a></li>
1118
1119 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/10/">October (1)</a></li>
1120
1121 <li><a href="https://people.skolelinux.org/pere/blog/archive/2022/12/">December (1)</a></li>
1122
1123 </ul></li>
1124
1125 <li>2021
1126 <ul>
1127
1128 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/01/">January (2)</a></li>
1129
1130 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/02/">February (1)</a></li>
1131
1132 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/05/">May (1)</a></li>
1133
1134 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/06/">June (1)</a></li>
1135
1136 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/07/">July (3)</a></li>
1137
1138 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/08/">August (1)</a></li>
1139
1140 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/09/">September (1)</a></li>
1141
1142 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/10/">October (1)</a></li>
1143
1144 <li><a href="https://people.skolelinux.org/pere/blog/archive/2021/12/">December (1)</a></li>
1145
1146 </ul></li>
1147
1148 <li>2020
1149 <ul>
1150
1151 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/02/">February (2)</a></li>
1152
1153 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/03/">March (2)</a></li>
1154
1155 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/04/">April (2)</a></li>
1156
1157 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/05/">May (3)</a></li>
1158
1159 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/06/">June (2)</a></li>
1160
1161 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/07/">July (1)</a></li>
1162
1163 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/09/">September (1)</a></li>
1164
1165 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/10/">October (1)</a></li>
1166
1167 <li><a href="https://people.skolelinux.org/pere/blog/archive/2020/11/">November (1)</a></li>
1168
1169 </ul></li>
1170
1171 <li>2019
1172 <ul>
1173
1174 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/01/">January (4)</a></li>
1175
1176 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/02/">February (3)</a></li>
1177
1178 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/03/">March (3)</a></li>
1179
1180 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/05/">May (2)</a></li>
1181
1182 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/06/">June (5)</a></li>
1183
1184 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/07/">July (2)</a></li>
1185
1186 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/08/">August (1)</a></li>
1187
1188 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/09/">September (1)</a></li>
1189
1190 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/11/">November (1)</a></li>
1191
1192 <li><a href="https://people.skolelinux.org/pere/blog/archive/2019/12/">December (4)</a></li>
1193
1194 </ul></li>
1195
1196 <li>2018
1197 <ul>
1198
1199 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/01/">January (1)</a></li>
1200
1201 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/02/">February (5)</a></li>
1202
1203 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/03/">March (5)</a></li>
1204
1205 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/04/">April (3)</a></li>
1206
1207 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/06/">June (2)</a></li>
1208
1209 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/07/">July (5)</a></li>
1210
1211 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/08/">August (3)</a></li>
1212
1213 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/09/">September (3)</a></li>
1214
1215 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/10/">October (5)</a></li>
1216
1217 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/11/">November (2)</a></li>
1218
1219 <li><a href="https://people.skolelinux.org/pere/blog/archive/2018/12/">December (4)</a></li>
1220
1221 </ul></li>
1222
1223 <li>2017
1224 <ul>
1225
1226 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/01/">January (4)</a></li>
1227
1228 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/02/">February (3)</a></li>
1229
1230 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/03/">March (5)</a></li>
1231
1232 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/04/">April (2)</a></li>
1233
1234 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/06/">June (5)</a></li>
1235
1236 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/07/">July (1)</a></li>
1237
1238 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/08/">August (1)</a></li>
1239
1240 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/09/">September (3)</a></li>
1241
1242 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/10/">October (5)</a></li>
1243
1244 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/11/">November (3)</a></li>
1245
1246 <li><a href="https://people.skolelinux.org/pere/blog/archive/2017/12/">December (4)</a></li>
1247
1248 </ul></li>
1249
1250 <li>2016
1251 <ul>
1252
1253 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/01/">January (3)</a></li>
1254
1255 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/02/">February (2)</a></li>
1256
1257 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/03/">March (3)</a></li>
1258
1259 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/04/">April (8)</a></li>
1260
1261 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/05/">May (8)</a></li>
1262
1263 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/06/">June (2)</a></li>
1264
1265 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/07/">July (2)</a></li>
1266
1267 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/08/">August (5)</a></li>
1268
1269 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/09/">September (2)</a></li>
1270
1271 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/10/">October (3)</a></li>
1272
1273 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/11/">November (8)</a></li>
1274
1275 <li><a href="https://people.skolelinux.org/pere/blog/archive/2016/12/">December (5)</a></li>
1276
1277 </ul></li>
1278
1279 <li>2015
1280 <ul>
1281
1282 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/01/">January (7)</a></li>
1283
1284 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/02/">February (6)</a></li>
1285
1286 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/03/">March (1)</a></li>
1287
1288 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/04/">April (4)</a></li>
1289
1290 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/05/">May (3)</a></li>
1291
1292 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/06/">June (4)</a></li>
1293
1294 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/07/">July (6)</a></li>
1295
1296 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/08/">August (2)</a></li>
1297
1298 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/09/">September (2)</a></li>
1299
1300 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/10/">October (9)</a></li>
1301
1302 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/11/">November (6)</a></li>
1303
1304 <li><a href="https://people.skolelinux.org/pere/blog/archive/2015/12/">December (3)</a></li>
1305
1306 </ul></li>
1307
1308 <li>2014
1309 <ul>
1310
1311 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/01/">January (2)</a></li>
1312
1313 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/02/">February (3)</a></li>
1314
1315 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/03/">March (8)</a></li>
1316
1317 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/04/">April (7)</a></li>
1318
1319 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/05/">May (1)</a></li>
1320
1321 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/06/">June (2)</a></li>
1322
1323 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/07/">July (2)</a></li>
1324
1325 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/08/">August (2)</a></li>
1326
1327 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/09/">September (5)</a></li>
1328
1329 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/10/">October (6)</a></li>
1330
1331 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/11/">November (3)</a></li>
1332
1333 <li><a href="https://people.skolelinux.org/pere/blog/archive/2014/12/">December (5)</a></li>
1334
1335 </ul></li>
1336
1337 <li>2013
1338 <ul>
1339
1340 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/01/">January (11)</a></li>
1341
1342 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/02/">February (9)</a></li>
1343
1344 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/03/">March (9)</a></li>
1345
1346 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/04/">April (6)</a></li>
1347
1348 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/05/">May (9)</a></li>
1349
1350 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/06/">June (10)</a></li>
1351
1352 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/07/">July (7)</a></li>
1353
1354 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/08/">August (3)</a></li>
1355
1356 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/09/">September (5)</a></li>
1357
1358 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/10/">October (7)</a></li>
1359
1360 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/11/">November (9)</a></li>
1361
1362 <li><a href="https://people.skolelinux.org/pere/blog/archive/2013/12/">December (3)</a></li>
1363
1364 </ul></li>
1365
1366 <li>2012
1367 <ul>
1368
1369 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/01/">January (7)</a></li>
1370
1371 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/02/">February (10)</a></li>
1372
1373 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/03/">March (17)</a></li>
1374
1375 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/04/">April (12)</a></li>
1376
1377 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/05/">May (12)</a></li>
1378
1379 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/06/">June (20)</a></li>
1380
1381 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/07/">July (17)</a></li>
1382
1383 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/08/">August (6)</a></li>
1384
1385 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/09/">September (9)</a></li>
1386
1387 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/10/">October (17)</a></li>
1388
1389 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/11/">November (10)</a></li>
1390
1391 <li><a href="https://people.skolelinux.org/pere/blog/archive/2012/12/">December (7)</a></li>
1392
1393 </ul></li>
1394
1395 <li>2011
1396 <ul>
1397
1398 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/01/">January (16)</a></li>
1399
1400 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/02/">February (6)</a></li>
1401
1402 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/03/">March (6)</a></li>
1403
1404 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/04/">April (7)</a></li>
1405
1406 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/05/">May (3)</a></li>
1407
1408 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/06/">June (2)</a></li>
1409
1410 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/07/">July (7)</a></li>
1411
1412 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/08/">August (6)</a></li>
1413
1414 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/09/">September (4)</a></li>
1415
1416 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/10/">October (2)</a></li>
1417
1418 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/11/">November (3)</a></li>
1419
1420 <li><a href="https://people.skolelinux.org/pere/blog/archive/2011/12/">December (1)</a></li>
1421
1422 </ul></li>
1423
1424 <li>2010
1425 <ul>
1426
1427 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/01/">January (2)</a></li>
1428
1429 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/02/">February (1)</a></li>
1430
1431 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/03/">March (3)</a></li>
1432
1433 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/04/">April (3)</a></li>
1434
1435 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/05/">May (9)</a></li>
1436
1437 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/06/">June (14)</a></li>
1438
1439 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/07/">July (12)</a></li>
1440
1441 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/08/">August (13)</a></li>
1442
1443 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/09/">September (7)</a></li>
1444
1445 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/10/">October (9)</a></li>
1446
1447 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/11/">November (13)</a></li>
1448
1449 <li><a href="https://people.skolelinux.org/pere/blog/archive/2010/12/">December (12)</a></li>
1450
1451 </ul></li>
1452
1453 <li>2009
1454 <ul>
1455
1456 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/01/">January (8)</a></li>
1457
1458 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/02/">February (8)</a></li>
1459
1460 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/03/">March (12)</a></li>
1461
1462 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/04/">April (10)</a></li>
1463
1464 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/05/">May (9)</a></li>
1465
1466 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/06/">June (3)</a></li>
1467
1468 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/07/">July (4)</a></li>
1469
1470 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/08/">August (3)</a></li>
1471
1472 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/09/">September (1)</a></li>
1473
1474 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/10/">October (2)</a></li>
1475
1476 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/11/">November (3)</a></li>
1477
1478 <li><a href="https://people.skolelinux.org/pere/blog/archive/2009/12/">December (3)</a></li>
1479
1480 </ul></li>
1481
1482 <li>2008
1483 <ul>
1484
1485 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/11/">November (5)</a></li>
1486
1487 <li><a href="https://people.skolelinux.org/pere/blog/archive/2008/12/">December (7)</a></li>
1488
1489 </ul></li>
1490
1491 </ul>
1492
1493
1494
1495 <h2>Tags</h2>
1496 <ul>
1497
1498 <li><a href="https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (19)</a></li>
1499
1500 <li><a href="https://people.skolelinux.org/pere/blog/tags/amiga">amiga (1)</a></li>
1501
1502 <li><a href="https://people.skolelinux.org/pere/blog/tags/aros">aros (1)</a></li>
1503
1504 <li><a href="https://people.skolelinux.org/pere/blog/tags/bankid">bankid (4)</a></li>
1505
1506 <li><a href="https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (9)</a></li>
1507
1508 <li><a href="https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (12)</a></li>
1509
1510 <li><a href="https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (17)</a></li>
1511
1512 <li><a href="https://people.skolelinux.org/pere/blog/tags/bsa">bsa (2)</a></li>
1513
1514 <li><a href="https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (3)</a></li>
1515
1516 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian">debian (197)</a></li>
1517
1518 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (159)</a></li>
1519
1520 <li><a href="https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (9)</a></li>
1521
1522 <li><a href="https://people.skolelinux.org/pere/blog/tags/digistan">digistan (11)</a></li>
1523
1524 <li><a href="https://people.skolelinux.org/pere/blog/tags/dld">dld (18)</a></li>
1525
1526 <li><a href="https://people.skolelinux.org/pere/blog/tags/docbook">docbook (32)</a></li>
1527
1528 <li><a href="https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (4)</a></li>
1529
1530 <li><a href="https://people.skolelinux.org/pere/blog/tags/english">english (456)</a></li>
1531
1532 <li><a href="https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (23)</a></li>
1533
1534 <li><a href="https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (14)</a></li>
1535
1536 <li><a href="https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (34)</a></li>
1537
1538 <li><a href="https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (9)</a></li>
1539
1540 <li><a href="https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (20)</a></li>
1541
1542 <li><a href="https://people.skolelinux.org/pere/blog/tags/h264">h264 (20)</a></li>
1543
1544 <li><a href="https://people.skolelinux.org/pere/blog/tags/intervju">intervju (43)</a></li>
1545
1546 <li><a href="https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (16)</a></li>
1547
1548 <li><a href="https://people.skolelinux.org/pere/blog/tags/kart">kart (23)</a></li>
1549
1550 <li><a href="https://people.skolelinux.org/pere/blog/tags/kodi">kodi (6)</a></li>
1551
1552 <li><a href="https://people.skolelinux.org/pere/blog/tags/ldap">ldap (9)</a></li>
1553
1554 <li><a href="https://people.skolelinux.org/pere/blog/tags/lego">lego (5)</a></li>
1555
1556 <li><a href="https://people.skolelinux.org/pere/blog/tags/lenker">lenker (8)</a></li>
1557
1558 <li><a href="https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (5)</a></li>
1559
1560 <li><a href="https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (2)</a></li>
1561
1562 <li><a href="https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (1)</a></li>
1563
1564 <li><a href="https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (3)</a></li>
1565
1566 <li><a href="https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (8)</a></li>
1567
1568 <li><a href="https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (46)</a></li>
1569
1570 <li><a href="https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (15)</a></li>
1571
1572 <li><a href="https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (24)</a></li>
1573
1574 <li><a href="https://people.skolelinux.org/pere/blog/tags/norsk">norsk (323)</a></li>
1575
1576 <li><a href="https://people.skolelinux.org/pere/blog/tags/nuug">nuug (198)</a></li>
1577
1578 <li><a href="https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (40)</a></li>
1579
1580 <li><a href="https://people.skolelinux.org/pere/blog/tags/open311">open311 (2)</a></li>
1581
1582 <li><a href="https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (4)</a></li>
1583
1584 <li><a href="https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (76)</a></li>
1585
1586 <li><a href="https://people.skolelinux.org/pere/blog/tags/personvern">personvern (114)</a></li>
1587
1588 <li><a href="https://people.skolelinux.org/pere/blog/tags/raid">raid (2)</a></li>
1589
1590 <li><a href="https://people.skolelinux.org/pere/blog/tags/reactos">reactos (1)</a></li>
1591
1592 <li><a href="https://people.skolelinux.org/pere/blog/tags/reprap">reprap (11)</a></li>
1593
1594 <li><a href="https://people.skolelinux.org/pere/blog/tags/rfid">rfid (3)</a></li>
1595
1596 <li><a href="https://people.skolelinux.org/pere/blog/tags/robot">robot (17)</a></li>
1597
1598 <li><a href="https://people.skolelinux.org/pere/blog/tags/rss">rss (1)</a></li>
1599
1600 <li><a href="https://people.skolelinux.org/pere/blog/tags/ruter">ruter (7)</a></li>
1601
1602 <li><a href="https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (2)</a></li>
1603
1604 <li><a href="https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (60)</a></li>
1605
1606 <li><a href="https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (4)</a></li>
1607
1608 <li><a href="https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (5)</a></li>
1609
1610 <li><a href="https://people.skolelinux.org/pere/blog/tags/standard">standard (75)</a></li>
1611
1612 <li><a href="https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (7)</a></li>
1613
1614 <li><a href="https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (14)</a></li>
1615
1616 <li><a href="https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (65)</a></li>
1617
1618 <li><a href="https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (5)</a></li>
1619
1620 <li><a href="https://people.skolelinux.org/pere/blog/tags/usenix">usenix (2)</a></li>
1621
1622 <li><a href="https://people.skolelinux.org/pere/blog/tags/valg">valg (9)</a></li>
1623
1624 <li><a href="https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (22)</a></li>
1625
1626 <li><a href="https://people.skolelinux.org/pere/blog/tags/video">video (80)</a></li>
1627
1628 <li><a href="https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (4)</a></li>
1629
1630 <li><a href="https://people.skolelinux.org/pere/blog/tags/web">web (42)</a></li>
1631
1632 </ul>
1633
1634
1635 </div>
1636 <p style="text-align: right">
1637 Created by <a href="http://steve.org.uk/Software/chronicle">Chronicle v4.6</a>
1638 </p>
1639
1640 </body>
1641 </html>