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">
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" />
14 <a href=
"https://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
21 <h3>Entries tagged "robot".
</h3>
25 <a href=
"https://people.skolelinux.org/pere/blog/LinuxCNC_MQTT_publisher_component.html">LinuxCNC MQTT publisher component
</a>
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>
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
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>
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>
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>
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>.
83 <div class=
"padding"></div>
87 <a href=
"https://people.skolelinux.org/pere/blog/Automatic_LinuxCNC_servo_PID_tuning_.html">Automatic LinuxCNC servo PID tuning?
</a>
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
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.
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>
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>
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
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>
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
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>
202 loadrt pid names=pid.x,pid.y,pid.z
205 <p>Armed with the new and improved at_pid component, the new line will
209 loadrt at_pid names=pid.x,pid.y,pid.z
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>
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>
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
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
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>
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>
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>
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>.
275 <div class=
"padding"></div>
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>
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>
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>
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>
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>.
315 <div class=
"padding"></div>
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>
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
336 <p>But what is LinuxCNC, you are probably wondering? Perhaps a
337 Wikipedia quote is in place?
</p>
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)."
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
356 <a href=
"https://hosted.weblate.org/engage/linuxcnc/">join the
357 effort
</a> using Weblate.
</p>
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>
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>.
372 <div class=
"padding"></div>
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>
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>
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
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>
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>.
416 <div class=
"padding"></div>
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>
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
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>
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>
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"/>
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
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
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>
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>
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"/>
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>
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>
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>.
499 <div class=
"padding"></div>
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>
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>
518 <p>There are three main pieces involved. The first to enter Debian
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
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
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>
541 <p>This should make it easier to have fun.
</p>
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>
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>.
556 <div class=
"padding"></div>
560 <a href=
"https://people.skolelinux.org/pere/blog/My_own_self_balancing_Lego_Segway.html">My own self balancing Lego Segway
</a>
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,
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
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
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>
595 <p align=
"center"><img width=
"70%" src=
"https://people.skolelinux.org/pere/blog/images/2016-11-04-lego-htway-robot.jpeg"></p>
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>
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">
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>
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
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>.
628 <div class=
"padding"></div>
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>
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
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>
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>
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>
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>
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>.
691 <div class="padding
"></div>
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>
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>
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>.
719 <div class="padding
"></div>
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>
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>
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>
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>
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>
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>.
773 <div class="padding
"></div>
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>
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>
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>.
811 <div class="padding
"></div>
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>
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>
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>
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>.
845 <div class="padding
"></div>
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>
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
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>
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>
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>
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>
882 <p>If you are interested in helping out with developing this library,
883 please let me know.</p>
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>.
894 <div class="padding
"></div>
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>
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
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>
922 Spykee::discover(sub {$robot{$_[0]} = $_[1]});
923 my $host = (keys %robot)[0];
924 my $spykee = Spykee->new();
925 $spykee->contact($host, "admin", "admin");
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
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>
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>.
962 <div class=
"padding"></div>
966 <a href=
"https://people.skolelinux.org/pere/blog/Robot__reis_deg___.html">Robot, reis deg...
</a>
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>
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>
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>
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>
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>.
1020 <div class=
"padding"></div>
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>
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>
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
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>
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>.
1062 <div class=
"padding"></div>
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>
1075 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2025/01/">January (
1)
</a></li>
1082 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/01/">January (
3)
</a></li>
1084 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/02/">February (
1)
</a></li>
1086 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/04/">April (
2)
</a></li>
1088 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/05/">May (
3)
</a></li>
1090 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/06/">June (
1)
</a></li>
1092 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/08/">August (
1)
</a></li>
1094 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/09/">September (
1)
</a></li>
1096 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/10/">October (
1)
</a></li>
1098 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/11/">November (
4)
</a></li>
1100 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2023/12/">December (
1)
</a></li>
1107 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/02/">February (
1)
</a></li>
1109 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/03/">March (
3)
</a></li>
1111 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/04/">April (
2)
</a></li>
1113 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/06/">June (
2)
</a></li>
1115 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/07/">July (
1)
</a></li>
1117 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/09/">September (
1)
</a></li>
1119 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/10/">October (
1)
</a></li>
1121 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2022/12/">December (
1)
</a></li>
1128 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/01/">January (
2)
</a></li>
1130 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/02/">February (
1)
</a></li>
1132 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/05/">May (
1)
</a></li>
1134 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/06/">June (
1)
</a></li>
1136 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/07/">July (
3)
</a></li>
1138 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/08/">August (
1)
</a></li>
1140 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/09/">September (
1)
</a></li>
1142 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/10/">October (
1)
</a></li>
1144 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2021/12/">December (
1)
</a></li>
1151 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/02/">February (
2)
</a></li>
1153 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/03/">March (
2)
</a></li>
1155 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/04/">April (
2)
</a></li>
1157 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/05/">May (
3)
</a></li>
1159 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/06/">June (
2)
</a></li>
1161 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/07/">July (
1)
</a></li>
1163 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/09/">September (
1)
</a></li>
1165 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/10/">October (
1)
</a></li>
1167 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2020/11/">November (
1)
</a></li>
1174 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/01/">January (
4)
</a></li>
1176 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/02/">February (
3)
</a></li>
1178 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/03/">March (
3)
</a></li>
1180 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/05/">May (
2)
</a></li>
1182 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/06/">June (
5)
</a></li>
1184 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/07/">July (
2)
</a></li>
1186 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/08/">August (
1)
</a></li>
1188 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/09/">September (
1)
</a></li>
1190 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/11/">November (
1)
</a></li>
1192 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2019/12/">December (
4)
</a></li>
1199 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/01/">January (
1)
</a></li>
1201 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/02/">February (
5)
</a></li>
1203 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/03/">March (
5)
</a></li>
1205 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/04/">April (
3)
</a></li>
1207 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/06/">June (
2)
</a></li>
1209 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/07/">July (
5)
</a></li>
1211 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/08/">August (
3)
</a></li>
1213 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/09/">September (
3)
</a></li>
1215 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/10/">October (
5)
</a></li>
1217 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/11/">November (
2)
</a></li>
1219 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2018/12/">December (
4)
</a></li>
1226 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/01/">January (
4)
</a></li>
1228 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/02/">February (
3)
</a></li>
1230 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/03/">March (
5)
</a></li>
1232 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/04/">April (
2)
</a></li>
1234 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/06/">June (
5)
</a></li>
1236 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/07/">July (
1)
</a></li>
1238 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/08/">August (
1)
</a></li>
1240 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/09/">September (
3)
</a></li>
1242 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/10/">October (
5)
</a></li>
1244 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/11/">November (
3)
</a></li>
1246 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2017/12/">December (
4)
</a></li>
1253 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/01/">January (
3)
</a></li>
1255 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/02/">February (
2)
</a></li>
1257 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/03/">March (
3)
</a></li>
1259 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/04/">April (
8)
</a></li>
1261 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/05/">May (
8)
</a></li>
1263 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/06/">June (
2)
</a></li>
1265 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/07/">July (
2)
</a></li>
1267 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/08/">August (
5)
</a></li>
1269 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/09/">September (
2)
</a></li>
1271 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/10/">October (
3)
</a></li>
1273 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/11/">November (
8)
</a></li>
1275 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2016/12/">December (
5)
</a></li>
1282 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/01/">January (
7)
</a></li>
1284 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/02/">February (
6)
</a></li>
1286 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/03/">March (
1)
</a></li>
1288 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/04/">April (
4)
</a></li>
1290 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/05/">May (
3)
</a></li>
1292 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/06/">June (
4)
</a></li>
1294 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/07/">July (
6)
</a></li>
1296 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/08/">August (
2)
</a></li>
1298 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/09/">September (
2)
</a></li>
1300 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/10/">October (
9)
</a></li>
1302 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/11/">November (
6)
</a></li>
1304 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2015/12/">December (
3)
</a></li>
1311 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/01/">January (
2)
</a></li>
1313 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/02/">February (
3)
</a></li>
1315 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/03/">March (
8)
</a></li>
1317 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/04/">April (
7)
</a></li>
1319 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/05/">May (
1)
</a></li>
1321 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/06/">June (
2)
</a></li>
1323 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/07/">July (
2)
</a></li>
1325 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/08/">August (
2)
</a></li>
1327 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/09/">September (
5)
</a></li>
1329 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/10/">October (
6)
</a></li>
1331 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/11/">November (
3)
</a></li>
1333 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2014/12/">December (
5)
</a></li>
1340 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/01/">January (
11)
</a></li>
1342 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/02/">February (
9)
</a></li>
1344 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/03/">March (
9)
</a></li>
1346 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/04/">April (
6)
</a></li>
1348 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/05/">May (
9)
</a></li>
1350 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/06/">June (
10)
</a></li>
1352 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/07/">July (
7)
</a></li>
1354 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/08/">August (
3)
</a></li>
1356 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/09/">September (
5)
</a></li>
1358 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/10/">October (
7)
</a></li>
1360 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/11/">November (
9)
</a></li>
1362 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2013/12/">December (
3)
</a></li>
1369 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/01/">January (
7)
</a></li>
1371 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/02/">February (
10)
</a></li>
1373 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/03/">March (
17)
</a></li>
1375 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/04/">April (
12)
</a></li>
1377 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/05/">May (
12)
</a></li>
1379 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/06/">June (
20)
</a></li>
1381 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/07/">July (
17)
</a></li>
1383 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/08/">August (
6)
</a></li>
1385 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/09/">September (
9)
</a></li>
1387 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/10/">October (
17)
</a></li>
1389 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/11/">November (
10)
</a></li>
1391 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2012/12/">December (
7)
</a></li>
1398 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/01/">January (
16)
</a></li>
1400 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/02/">February (
6)
</a></li>
1402 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/03/">March (
6)
</a></li>
1404 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/04/">April (
7)
</a></li>
1406 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/05/">May (
3)
</a></li>
1408 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/06/">June (
2)
</a></li>
1410 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/07/">July (
7)
</a></li>
1412 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/08/">August (
6)
</a></li>
1414 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/09/">September (
4)
</a></li>
1416 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/10/">October (
2)
</a></li>
1418 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/11/">November (
3)
</a></li>
1420 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2011/12/">December (
1)
</a></li>
1427 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/01/">January (
2)
</a></li>
1429 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/02/">February (
1)
</a></li>
1431 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/03/">March (
3)
</a></li>
1433 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/04/">April (
3)
</a></li>
1435 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/05/">May (
9)
</a></li>
1437 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/06/">June (
14)
</a></li>
1439 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/07/">July (
12)
</a></li>
1441 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/08/">August (
13)
</a></li>
1443 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/09/">September (
7)
</a></li>
1445 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/10/">October (
9)
</a></li>
1447 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/11/">November (
13)
</a></li>
1449 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2010/12/">December (
12)
</a></li>
1456 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/01/">January (
8)
</a></li>
1458 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/02/">February (
8)
</a></li>
1460 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/03/">March (
12)
</a></li>
1462 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/04/">April (
10)
</a></li>
1464 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/05/">May (
9)
</a></li>
1466 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/06/">June (
3)
</a></li>
1468 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/07/">July (
4)
</a></li>
1470 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/08/">August (
3)
</a></li>
1472 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/09/">September (
1)
</a></li>
1474 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/10/">October (
2)
</a></li>
1476 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/11/">November (
3)
</a></li>
1478 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2009/12/">December (
3)
</a></li>
1485 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/11/">November (
5)
</a></li>
1487 <li><a href=
"https://people.skolelinux.org/pere/blog/archive/2008/12/">December (
7)
</a></li>
1498 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/3d-printer">3d-printer (
19)
</a></li>
1500 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/amiga">amiga (
1)
</a></li>
1502 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/aros">aros (
1)
</a></li>
1504 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bankid">bankid (
4)
</a></li>
1506 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/betalkontant">betalkontant (
9)
</a></li>
1508 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bitcoin">bitcoin (
12)
</a></li>
1510 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bootsystem">bootsystem (
17)
</a></li>
1512 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/bsa">bsa (
2)
</a></li>
1514 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/chrpath">chrpath (
3)
</a></li>
1516 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian">debian (
197)
</a></li>
1518 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian edu">debian edu (
159)
</a></li>
1520 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/debian-handbook">debian-handbook (
9)
</a></li>
1522 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/digistan">digistan (
11)
</a></li>
1524 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/dld">dld (
18)
</a></li>
1526 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/docbook">docbook (
32)
</a></li>
1528 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/drivstoffpriser">drivstoffpriser (
4)
</a></li>
1530 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/english">english (
456)
</a></li>
1532 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fiksgatami">fiksgatami (
23)
</a></li>
1534 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/fildeling">fildeling (
14)
</a></li>
1536 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freeculture">freeculture (
34)
</a></li>
1538 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/freedombox">freedombox (
9)
</a></li>
1540 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/frikanalen">frikanalen (
20)
</a></li>
1542 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/h264">h264 (
20)
</a></li>
1544 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/intervju">intervju (
43)
</a></li>
1546 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/isenkram">isenkram (
16)
</a></li>
1548 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kart">kart (
23)
</a></li>
1550 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/kodi">kodi (
6)
</a></li>
1552 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ldap">ldap (
9)
</a></li>
1554 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lego">lego (
5)
</a></li>
1556 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lenker">lenker (
8)
</a></li>
1558 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/linuxcnc">linuxcnc (
5)
</a></li>
1560 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/lsdvd">lsdvd (
2)
</a></li>
1562 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ltsp">ltsp (
1)
</a></li>
1564 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/madewithcc">madewithcc (
3)
</a></li>
1566 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/mesh network">mesh network (
8)
</a></li>
1568 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/multimedia">multimedia (
46)
</a></li>
1570 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nice free software">nice free software (
15)
</a></li>
1572 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/noark5">noark5 (
24)
</a></li>
1574 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/norsk">norsk (
323)
</a></li>
1576 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/nuug">nuug (
198)
</a></li>
1578 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/offentlig innsyn">offentlig innsyn (
40)
</a></li>
1580 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/open311">open311 (
2)
</a></li>
1582 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opensnitch">opensnitch (
4)
</a></li>
1584 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/opphavsrett">opphavsrett (
76)
</a></li>
1586 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/personvern">personvern (
114)
</a></li>
1588 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/raid">raid (
2)
</a></li>
1590 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reactos">reactos (
1)
</a></li>
1592 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/reprap">reprap (
11)
</a></li>
1594 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rfid">rfid (
3)
</a></li>
1596 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/robot">robot (
17)
</a></li>
1598 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/rss">rss (
1)
</a></li>
1600 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/ruter">ruter (
7)
</a></li>
1602 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/scraperwiki">scraperwiki (
2)
</a></li>
1604 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sikkerhet">sikkerhet (
60)
</a></li>
1606 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sitesummary">sitesummary (
4)
</a></li>
1608 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/skepsis">skepsis (
5)
</a></li>
1610 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/standard">standard (
75)
</a></li>
1612 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stavekontroll">stavekontroll (
7)
</a></li>
1614 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/stortinget">stortinget (
14)
</a></li>
1616 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/surveillance">surveillance (
65)
</a></li>
1618 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/sysadmin">sysadmin (
5)
</a></li>
1620 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/usenix">usenix (
2)
</a></li>
1622 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/valg">valg (
9)
</a></li>
1624 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/verkidetfri">verkidetfri (
22)
</a></li>
1626 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/video">video (
80)
</a></li>
1628 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/vitenskap">vitenskap (
4)
</a></li>
1630 <li><a href=
"https://people.skolelinux.org/pere/blog/tags/web">web (
42)
</a></li>
1636 <p style=
"text-align: right">
1637 Created by
<a href=
"http://steve.org.uk/Software/chronicle">Chronicle v4.6
</a>