<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>PiWars on usedbytes:Blog</title>
		<link>https://blog.usedbytes.com/tags/piwars/</link>
		<description>Recent content in PiWars on usedbytes:Blog</description>
		<generator>Hugo</generator>
		<language>en</language>
		
		
		
		
			<lastBuildDate>Mon, 13 Jun 2022 00:00:00 +0000</lastBuildDate>
		
			<atom:link href="https://blog.usedbytes.com/tags/piwars/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>M0o&#43; Shepherd&#39;s Pi</title>
				<link>https://blog.usedbytes.com/2022/06/m0o-shepherds-pi/</link>
				<pubDate>Mon, 13 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/06/m0o-shepherds-pi/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;The last of the three &amp;ldquo;prescribed&amp;rdquo; challenges is&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/challenges/shepherds-pi/&#34; target=&#34;_blank&#34;&gt;Shepherd&amp;rsquo;s Pi&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;In this challenge there are 6 sheep which need herding into a pen, and 3 wolves&#xA;which must not be &amp;ldquo;killed&amp;rdquo; (knocked over).&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Nature&#39;s Bounty</title>
				<link>https://blog.usedbytes.com/2022/06/m0o-natures-bounty/</link>
				<pubDate>Sun, 12 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/06/m0o-natures-bounty/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;After tackling&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/challenges/hungry-cattle/&#34; target=&#34;_blank&#34;&gt;Hungry Cattle&lt;/a&gt;,&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/challenges/natures-bounty/&#34; target=&#34;_blank&#34;&gt;Nature&amp;rsquo;s Bounty&lt;/a&gt;&#xA;is next on the hit-list.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Lots of videos/pictures in this post, because I think it helps a lot with&#xA;explaining how it all works.&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Hungry Cattle</title>
				<link>https://blog.usedbytes.com/2022/06/m0o-hungry-cattle/</link>
				<pubDate>Sat, 11 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/06/m0o-hungry-cattle/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://piwars.org/2022-competition/challenges/hungry-cattle/&#34; target=&#34;_blank&#34;&gt;Hungry Cattle&lt;/a&gt;&#xA;is probably the easiest of the three main&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/challenges&#34; target=&#34;_blank&#34;&gt;Pi Wars challenges&lt;/a&gt;&#xA;to do autonomously and so is the one I chose to tackle first.&lt;/p&gt;&#xA;&lt;p&gt;The basic premise is delivering &amp;ldquo;cattle feed&amp;rdquo; (rice) to three troughs, placed&#xA;at known positions within the arena.&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Computer Vision</title>
				<link>https://blog.usedbytes.com/2022/05/m0o-computer-vision/</link>
				<pubDate>Sun, 29 May 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/05/m0o-computer-vision/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;To be able to locate the different game pieces in the&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/challenges&#34; target=&#34;_blank&#34;&gt;Pi Wars challenges&lt;/a&gt;&#xA;M0o+ has a very basic&#xA;&lt;a href=&#34;https://blog.usedbytes.com/2022/02/pico-pio-camera/&#34;&gt;camera&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;M0o+ is using a Pico for all the processing, so there&amp;rsquo;s really no chance&#xA;of porting OpenCV to it. There are other frameworks - even some machine-learning&#xA;ones like &lt;a href=&#34;https://www.tensorflow.org/lite&#34; target=&#34;_blank&#34;&gt;TFLite&lt;/a&gt; - which could work on the&#xA;Pico, however having had success with&#xA;&lt;a href=&#34;https://piwarsmc.org/2019/Computer_Vision_from_scratch.pdf&#34; target=&#34;_blank&#34;&gt;hand-coding my own routines for Mini Mouse&lt;/a&gt;,&#xA;I decided to do the same this year.&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Software Overview</title>
				<link>https://blog.usedbytes.com/2022/05/m0o-software-overview/</link>
				<pubDate>Sun, 15 May 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/05/m0o-software-overview/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;I&amp;rsquo;ve written a number of posts now about different &amp;ldquo;building blocks&amp;rdquo; which make&#xA;up M0o+:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.usedbytes.com/2021/12/pico-serial-bootloader/&#34;&gt;The bootloader&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.usedbytes.com/2021/12/esp32-wifi/bluetooth-bridge/&#34;&gt;The network/bluetooth interface&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.usedbytes.com/2022/01/m0o-s-chassis/&#34;&gt;The chassis&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://blog.usedbytes.com/2022/02/pico-pio-camera/&#34;&gt;The camera&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;The boom, parts &lt;a href=&#34;https://blog.usedbytes.com/2022/03/m0o-boom-part-1/&#34;&gt;1&lt;/a&gt;,&#xA;&lt;a href=&#34;https://blog.usedbytes.com/2022/04/m0o-boom-part-2/&#34;&gt;2&lt;/a&gt;, and&#xA;&lt;a href=&#34;https://blog.usedbytes.com/2022/05/m0o-boom-part-3/&#34;&gt;3&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There&amp;rsquo;s one crucial element missing from that list, which is needed to turn a&#xA;collection of parts into an actual functioning robot than can compete in Pi Wars:&#xA;The Software.&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Boom - Part 3</title>
				<link>https://blog.usedbytes.com/2022/05/m0o-boom-part-3/</link>
				<pubDate>Sun, 08 May 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/05/m0o-boom-part-3/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.usedbytes.com/2022/04/m0o-boom-part-2/&#34;&gt;Last time&lt;/a&gt;,&#xA;I derived the Forward Kinematics for the boom on M0o+. If you haven&amp;rsquo;t read the&#xA;first two posts, then this one won&amp;rsquo;t make much sense (and I don&amp;rsquo;t want to repeat&#xA;myself 😀):&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Boom - Part 2</title>
				<link>https://blog.usedbytes.com/2022/04/m0o-boom-part-2/</link>
				<pubDate>Sat, 02 Apr 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/04/m0o-boom-part-2/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;This post is the second in a trilogy detailing the boom on my&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/&#34; target=&#34;_blank&#34;&gt;Pi Wars 2022&lt;/a&gt; robot&#xA;&lt;a href=&#34;https://blog.usedbytes.com/tags/m0o&amp;#43;/&#34;&gt;M0o+&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://blog.usedbytes.com/2022/03/m0o-boom-part-1/&#34;&gt;In the last post&lt;/a&gt;,&#xA;I wrote about the mechanical and electronic design. In this middle post, I&amp;rsquo;ll&#xA;be describing the equations which let me &lt;em&gt;find out&lt;/em&gt; where the end of the boom is,&#xA;and next time will go into the equations which let me &lt;em&gt;control&lt;/em&gt; where the end&#xA;of the boom is.&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; Boom - Part 1</title>
				<link>https://blog.usedbytes.com/2022/03/m0o-boom-part-1/</link>
				<pubDate>Mon, 28 Mar 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/03/m0o-boom-part-1/</guid>
				<description>&lt;!--&#xA;&lt;blockquote class=&#34;twitter-tweet&#34;&gt;&lt;p lang=&#34;en&#34; dir=&#34;ltr&#34;&gt;So clearly there are some issues to work out, but this was bit-banged from an OV7670 on a Pico. PIO next. &lt;a href=&#34;https://x.com/hashtag/raspberrypi?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#raspberrypi&lt;/a&gt; &lt;a href=&#34;https://x.com/hashtag/PiWars?src=hash&amp;amp;ref_src=twsrc%5Etfw&#34;&gt;#PiWars&lt;/a&gt; &lt;a href=&#34;https://t.co/yJFQFhU9Xk&#34;&gt;pic.twitter.com/yJFQFhU9Xk&lt;/a&gt;&lt;/p&gt;&amp;mdash; Brian Starkey (@usedbytes) &lt;a href=&#34;https://x.com/usedbytes/status/1437689439283712000?ref_src=twsrc%5Etfw&#34;&gt;September 14, 2021&lt;/a&gt;&lt;/blockquote&gt;&#xA;&lt;script async src=&#34;https://platform.x.com/widgets.js&#34; charset=&#34;utf-8&#34;&gt;&lt;/script&gt;&#xA;&#xA;&#xA;[M0o+](https://blog.usedbytes.com/tags/m0o&amp;#43;/)&#xA;&#xA;&#xA;    &lt;div class=&#34;window video-player&#34;&gt;&#xA;      &lt;div class=&#34;window__titlebar&#34;&gt;&#xA;  &lt;img&#xA;    class=&#34;window__icon&#34;&#xA;    src=&#34;https://blog.usedbytes.com/images/window-icon.png&#34;&#xA;    alt=&#34;&#34;&#xA;    width=&#34;16&#34;&#xA;    height=&#34;14&#34;&#xA;    aria-hidden=&#34;true&#34;&gt;&#xA;  &lt;span class=&#34;window__title&#34;&gt;Video Player&lt;/span&gt;&#xA;  &#xA;    &lt;img&#xA;      class=&#34;window__controls&#34;&#xA;      src=&#34;https://blog.usedbytes.com/images/window-controls.png&#34;&#xA;      alt=&#34;&#34;&#xA;      width=&#34;50&#34;&#xA;      height=&#34;14&#34;&#xA;      aria-hidden=&#34;true&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;      &lt;div class=&#34;video-player__frame&#34;&gt;&#xA;        &lt;iframe allow=&#34;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen&#34; loading=&#34;eager&#34;&#xA;          referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/1pcGYALi6pc?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;      &lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;--&gt;&#xA;&lt;p&gt;My &lt;a href=&#34;https://piwars.org/2022-competition/&#34; target=&#34;_blank&#34;&gt;Pi Wars at Home 2022&lt;/a&gt;&#xA;robot &lt;a href=&#34;https://blog.usedbytes.com/tags/m0o&amp;#43;/&#34;&gt;M0o+&lt;/a&gt; is intended to resemble a&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/Telescopic_handler&#34; target=&#34;_blank&#34;&gt;telehandler&lt;/a&gt;&#xA;(long-reach forklift).&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2022/03/m0o-boom-part-1/images/telehandler.jpeg&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2022/03/m0o-boom-part-1/images/telehandler_hu_4bb12de308615da7.jpeg&#34; alt=&#34;Telehandler&#34; width=&#34;900&#34; height=&#34;600&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Image credit: Jacquesbotha, &lt;a href=&#34;https://creativecommons.org/licenses/by-sa/4.0&#34; target=&#34;_blank&#34;&gt;CC BY-SA 4.0&lt;/a&gt;, &lt;a href=&#34;https://commons.wikimedia.org/wiki/File:Dieci_Agri_Farmer_Telehandler.jpg&#34; target=&#34;_blank&#34;&gt;via Wikimedia Commons&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;A fairly crucial part of a telehandler -&#xA;the thing that makes it a telehandler, really -&#xA;is it&amp;rsquo;s &lt;em&gt;boom&lt;/em&gt;, which the forks (or other tools) are attached to and can lift&#xA;and extend.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pico PIO Camera</title>
				<link>https://blog.usedbytes.com/2022/02/pico-pio-camera/</link>
				<pubDate>Sat, 19 Feb 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/02/pico-pio-camera/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;This is a lengthy post which goes into lots of detail. The tl;dr is&#xA;that the code is here: &lt;a href=&#34;https://github.com/usedbytes/camera-pico-ov7670&#34; target=&#34;_blank&#34;&gt;https://github.com/usedbytes/camera-pico-ov7670&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;In this post I&amp;rsquo;ll describe how I went about connecting an OV7670 camera module&#xA;to the Raspberry Pi Pico that drive&amp;rsquo;s my&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/&#34; target=&#34;_blank&#34;&gt;Pi Wars at Home 2022&lt;/a&gt;&#xA;&amp;lsquo;bot&#xA;&lt;a href=&#34;https://blog.usedbytes.com/tags/m0o&amp;#43;/&#34;&gt;M0o+&lt;/a&gt;.&#xA;It&amp;rsquo;s all wrapped up in a separate library which should be easy-ish to&#xA;incorporate in other projects.&lt;/p&gt;&#xA;&lt;p&gt;Trying to get this camera working was the very first thing I did, as a sort of&#xA;Pico &amp;ldquo;feasibility study&amp;rdquo; to decide if entering a Pico-based robot was practical.&#xA;Initially I just bit-banged the interface and did get &lt;em&gt;some&lt;/em&gt; results without&#xA;too much effort, but things have escalated a fair amount since then:&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43;&#39;s Chassis</title>
				<link>https://blog.usedbytes.com/2022/01/m0o-s-chassis/</link>
				<pubDate>Sun, 23 Jan 2022 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2022/01/m0o-s-chassis/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://blog.usedbytes.com/tags/m0o&amp;#43;/&#34;&gt;M0o+&lt;/a&gt; is my Raspberry Pi Pico-based robot entry for&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/&#34; target=&#34;_blank&#34;&gt;Pi Wars at Home 2022&lt;/a&gt;.&#xA;This post details what I&amp;rsquo;ve settled on for the basic chassis of the robot.&lt;/p&gt;&#xA;&lt;h1 id=&#34;rebound&#34;&gt;Rebound &lt;a class=&#34;document__back-to-top&#34; href=&#34;#main-content&#34; aria-label=&#34;Back to top&#34;&gt;(top)&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;As I wrote in my &lt;a href=&#34;https://blog.usedbytes.com/2021/11/m0o-pi-wars-at-home-2022/&#34;&gt;initial post&lt;/a&gt;&#xA;for the project, I had originally hoped to re-purpose an ancient RC car chassis to be the basis of my robot.&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2022/01/m0o-s-chassis/images/rebound.jpg&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2022/01/m0o-s-chassis/images/rebound.jpg&#34; alt=&#34;Rebound RC car&#34; width=&#34;900&#34; height=&#34;675&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Sadly, it became apparent that all of the things which made it&#xA;so much fun as an RC car when I was a child, made it almost entirely unsuitable&#xA;for Pi Wars.&lt;/p&gt;</description>
			</item>
			<item>
				<title>ESP32 WiFi/Bluetooth Bridge</title>
				<link>https://blog.usedbytes.com/2021/12/esp32-wifi/bluetooth-bridge/</link>
				<pubDate>Sun, 26 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2021/12/esp32-wifi/bluetooth-bridge/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://blog.usedbytes.com/tags/m0o&amp;#43;/&#34;&gt;M0o+&lt;/a&gt; is my Raspberry Pi Pico-based robot entry for&#xA;&lt;a href=&#34;https://piwars.org/2022-competition/&#34; target=&#34;_blank&#34;&gt;Pi Wars at Home 2022&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;A Pi Wars robot needs to be remote-controllable, and network connectivity is&#xA;extremely useful for telemetry, debugging etc.&#xA;As the Pico doesn&amp;rsquo;t natively have any kind of wireless connectivity, I&amp;rsquo;m using&#xA;an &lt;a href=&#34;https://www.espressif.com/en/products/socs/esp32&#34; target=&#34;_blank&#34;&gt;ESP32&lt;/a&gt; to provide that functionality.&#xA;It connects to a bluetooth gamepad, relaying controller input to the Pico, and&#xA;acts as a WiFi access point to provide network connectivity.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pico serial bootloader</title>
				<link>https://blog.usedbytes.com/2021/12/pico-serial-bootloader/</link>
				<pubDate>Wed, 01 Dec 2021 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2021/12/pico-serial-bootloader/</guid>
				<description>&lt;p&gt;My Pi Wars 2022 entry, &lt;a href=&#34;https://blog.usedbytes.com/2021/11/m0o-pi-wars-at-home-2022/&#34;&gt;M0o+&lt;/a&gt;,&#xA;is powered by a&#xA;&lt;a href=&#34;https://www.raspberrypi.com/products/raspberry-pi-pico/&#34; target=&#34;_blank&#34;&gt;Raspberry Pi Pico&lt;/a&gt;,&#xA;which itself is powered by the &lt;a href=&#34;https://www.raspberrypi.com/products/rp2040/&#34; target=&#34;_blank&#34;&gt;RP2040&lt;/a&gt; chip.&lt;/p&gt;&#xA;&lt;p&gt;The RP2040 has a built-in boot ROM with a USB bootloader, which allows the chip&#xA;to show up as a USB flash drive for uploading code.&#xA;This is usually a very&#xA;convenient interface, making it extremely quick and simple to upload code to&#xA;the device.&lt;/p&gt;&#xA;&lt;p&gt;However, in a Pi Wars robot, I don&amp;rsquo;t want to have to bring the Pico back to my&#xA;computer and plug it in to iterate on the code -&#xA;I see it as essential to be able to download new code to the robot wirelessly&#xA;without needing to touch it.&lt;/p&gt;</description>
			</item>
			<item>
				<title>M0o&#43; - Pi Wars at Home 2022</title>
				<link>https://blog.usedbytes.com/2021/11/m0o-pi-wars-at-home-2022/</link>
				<pubDate>Sun, 14 Nov 2021 00:00:00 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2021/11/m0o-pi-wars-at-home-2022/</guid>
				<description>&lt;p&gt;Pi Wars (at home) 2022 is upon us, and after taking 2020 &amp;ldquo;off&amp;rdquo;, I&amp;rsquo;ve had an&#xA;application accepted for the competition.&#xA;I&amp;rsquo;ll be blogging about my progress here the same way I did for 2019 and&#xA;&lt;a href=&#34;https://blog.usedbytes.com/tags/mini-mouse/&#34;&gt;Mini Mouse&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &amp;ldquo;in person&amp;rdquo; 2020 competition was postponed on account of the&#xA;Covid-19 pandemic, and hasn&amp;rsquo;t yet taken place. In 2020, an &amp;ldquo;at home&amp;rdquo; competition&#xA;took place, with competitors submitting videos for each challenge.&#xA;The 2022 &amp;ldquo;at home&amp;rdquo; competition will follow the same model, with competitors&#xA;constructing the courses at home and submitting videos of challenge attempts.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Run at Startup (without rc.local)</title>
				<link>https://blog.usedbytes.com/2019/11/run-at-startup-without-rc.local/</link>
				<pubDate>Sun, 24 Nov 2019 16:13:28 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/11/run-at-startup-without-rc.local/</guid>
				<description>&lt;p&gt;A question that comes up quite frequently in Pi Wars circles is &amp;ldquo;how do I make&#xA;my robot program run at start-up?&amp;rdquo; Someone asked me that directly at the Pi Wars&#xA;Miniconference - and I gave the same answer I always do: &amp;ldquo;Use &lt;code&gt;systemd&lt;/code&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;In itself, that not a very useful answer, because &lt;code&gt;systemd&lt;/code&gt; is a large and&#xA;varied project with lots of tools and functionality. It&amp;rsquo;s &lt;em&gt;just a bit&lt;/em&gt; too&#xA;complex to describe over voice without context. However, with the help of&#xA;examples, it really is quite straightforward to make a simple &lt;code&gt;systemd&lt;/code&gt; service.&#xA;There&amp;rsquo;s also all kinds of bells and whistles you can try out too if you&amp;rsquo;re&#xA;feeling adventurous!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pi Wars: Post Mortem</title>
				<link>https://blog.usedbytes.com/2019/03/pi-wars-post-mortem/</link>
				<pubDate>Sun, 31 Mar 2019 20:20:41 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2019/03/pi-wars-post-mortem/</guid>
				<description>&lt;p&gt;Pi Wars happened! It&amp;rsquo;s over! I can start doing something else with my life!&lt;/p&gt;&#xA;&lt;p&gt;I had an awesome time at Pi Wars today and yesterday, with Mini Mouse&#xA;performing pretty solid attempts at all of the challenges. I ran into a few&#xA;hiccups on some challenges, but far outperformed my expectations on others.&lt;/p&gt;&#xA;&lt;p&gt;Overall, I placed 3rd in my category, and am really happy to have been awarded&#xA;first place for this blog, and Artistic Merit (for being &amp;ldquo;beautiful on both the&#xA;inside and the outside&amp;rdquo; - thanks Rachel :-)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Pre-Competition Status Report</title>
				<link>https://blog.usedbytes.com/2019/03/pre-competition-status-report/</link>
				<pubDate>Thu, 28 Mar 2019 20:58:21 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/03/pre-competition-status-report/</guid>
				<description>&lt;p&gt;With two days to go until competition day (only one day for schools and&#xA;clubs!), I thought I&amp;rsquo;d capture the status of Mini Mouse, for posterity and for&#xA;something to compare against in a Post-Competition Post-Mortem.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m quite happy with where I&amp;rsquo;ve got to. The autonomous challenges are all&#xA;working &lt;em&gt;mostly&lt;/em&gt; reliably in practice runs, and the performance seems to be&#xA;competitive. Of course there&amp;rsquo;s no guarantee that it&amp;rsquo;ll perform &amp;ldquo;on the day&amp;rdquo;,&#xA;but I&amp;rsquo;ve done all I can at this point!&lt;/p&gt;</description>
			</item>
			<item>
				<title>Battery Discharge Profile</title>
				<link>https://blog.usedbytes.com/2019/03/battery-discharge-profile/</link>
				<pubDate>Sat, 16 Mar 2019 22:16:03 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/03/battery-discharge-profile/</guid>
				<description>&lt;p&gt;Earlier, on the &lt;a href=&#34;https://discord.gg/sjABKje&#34; target=&#34;_blank&#34;&gt;PiWars Discord&lt;/a&gt;, we were having a&#xA;&lt;em&gt;spirited&lt;/em&gt; discussion about the discharge profile of lithium batteries,&#xA;disagreeing about the relationship between cell voltage and remaining charge&#xA;level. I&amp;rsquo;ve never actually checked this for myself before, so I thought I&amp;rsquo;d run&#xA;a little experiment to see.&lt;/p&gt;&#xA;&lt;p&gt;When fully charged, a lithium polymer (LiPo) cell should be at 4.2 Volts. The&#xA;&amp;ldquo;nominal&amp;rdquo; voltage for a LiPo cell is 3.7 V, and figures for the &amp;ldquo;minimum&amp;rdquo;&#xA;recommended discharge level vary - but quoted figures range from &lt;a href=&#34;https://cdn-shop.adafruit.com/datasheets/503562&amp;#43;1200mah.pdf&#34; target=&#34;_blank&#34;&gt;2.75&#xA;V&lt;/a&gt; to &lt;a href=&#34;http://learningrc.com/lipo-battery/&#34; target=&#34;_blank&#34;&gt;3.0 - 3.3&#xA;V&lt;/a&gt;. As we&amp;rsquo;ll see later on, towards the&#xA;tail end of the discharge curve the voltage of the cell drops very steeply,&#xA;meaning that the precise &amp;ldquo;cut off&amp;rdquo; voltage doesn&amp;rsquo;t matter so much from the&#xA;point of view of using the maximum amount of energy out of your battery.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Autonomous Challenge: Hubble</title>
				<link>https://blog.usedbytes.com/2019/03/autonomous-challenge-hubble/</link>
				<pubDate>Wed, 13 Mar 2019 16:15:56 -0700</pubDate>
				<guid>https://blog.usedbytes.com/2019/03/autonomous-challenge-hubble/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://piwars.org/2019-competition/challenges/nebula/&#34; target=&#34;_blank&#34;&gt;The Hubble Telescope Nebula&#xA;Challenge&lt;/a&gt; (previously&#xA;Somewhere Over the Rainbow) is one of the autonomous challenges, requiring the&#xA;robot to visit the four corners of a square arena, starting from the centre. In&#xA;each corner, there&amp;rsquo;s a coloured board - and for maximum points the robot must&#xA;visit the corners in an order specified by their colours (Red, then Blue,&#xA;Yellow and finally Green), as quickly as possible.&lt;/p&gt;&#xA;&lt;p&gt;My overall strategy for this challenge is to spin on the spot at the starting&#xA;position, to identify where each colour is. Once all four corners have been&#xA;identified, they can be visited in the appropriate order. Originally, I was&#xA;also intending to use the camera to make sure the &amp;lsquo;bot stays on-course whilst&#xA;en-route to the corners, and to detect when a corner has been &amp;ldquo;visited&amp;rdquo;.&#xA;Ultimately, I&amp;rsquo;ve found dead-reckoning using the IMU and counting wheel&#xA;rotations is reliable enough, and so I&amp;rsquo;ve skipped the added complexity of using&#xA;camera feedback for the actual &amp;ldquo;visiting&amp;rdquo; phase.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Setbacks</title>
				<link>https://blog.usedbytes.com/2019/03/setbacks/</link>
				<pubDate>Fri, 08 Mar 2019 18:20:44 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/03/setbacks/</guid>
				<description>&lt;p&gt;Three weeks ago, I got a basic implementation of &lt;a href=&#34;https://piwars.org/2019-competition/challenges/nebula/&#34; target=&#34;_blank&#34;&gt;The Hubble Telescope Nebula&#xA;Challenge&lt;/a&gt; working,&#xA;which made Mini Mouse&amp;rsquo;s code &amp;ldquo;feature complete&amp;rdquo; from the point of view of&#xA;entering all of the autonomous challenges.&lt;/p&gt;&#xA;&lt;p&gt;Honestly, I was pretty darn happy. All three challenges were working well enough&#xA;to be &amp;ldquo;competitive&amp;rdquo;, and with more than a month to go until the competition, all&#xA;that was left was optimisation. So, I spent a week doing &lt;a href=&#34;https://blog.usedbytes.com/2019/02/final-hardware/&#34;&gt;rapid&lt;/a&gt;-&lt;a href=&#34;https://blog.usedbytes.com/2019/02/mini-mouses-software/&#34;&gt;fire&lt;/a&gt; &lt;a href=&#34;https://blog.usedbytes.com/2019/02/autonomous-challenge-blast-off/&#34;&gt;blog&lt;/a&gt; &lt;a href=&#34;https://blog.usedbytes.com/2019/02/edge-detection/&#34;&gt;posts&lt;/a&gt; &lt;a href=&#34;https://blog.usedbytes.com/2019/02/mini-mouses-armament/&#34;&gt;.&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Mini Mouse&#39;s Armament</title>
				<link>https://blog.usedbytes.com/2019/02/mini-mouses-armament/</link>
				<pubDate>Wed, 20 Feb 2019 20:37:14 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/02/mini-mouses-armament/</guid>
				<description>&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2019/02/mini-mouses-armament/images/mini-mouse-glam.jpg&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2019/02/mini-mouses-armament/images/mini-mouse-glam_hu_e78b692bc867e47a.jpg&#34; alt=&#34;Glam Shot&#34; width=&#34;900&#34; height=&#34;707&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Now, irrespective of personal views on arming robots, &lt;em&gt;unfortunately&lt;/em&gt; one of&#xA;the Pi Wars challenges &lt;em&gt;requires&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/em&gt;  that we weaponise them. For &lt;a href=&#34;https://piwars.org/2019-competition/challenges/space-invaders/&#34; target=&#34;_blank&#34;&gt;Space&#xA;Invaders&lt;/a&gt; we&#xA;have to be able to knock down as many targets as we can (up to 5) from 1-1.5&#xA;metres away.&lt;/p&gt;&#xA;&lt;h1 id=&#34;plan-a&#34;&gt;Plan A &lt;a class=&#34;document__back-to-top&#34; href=&#34;#main-content&#34; aria-label=&#34;Back to top&#34;&gt;(top)&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;This challenge has caused me a great deal of head scratching as I sought out&#xA;the right option for projectile launchers for Mini Mouse. For Bot Matrix the&#xA;plan was dual-wield repeating rubber band guns - so that was my starting point&#xA;for Mini Mouse too.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Edge Detection</title>
				<link>https://blog.usedbytes.com/2019/02/edge-detection/</link>
				<pubDate>Tue, 19 Feb 2019 20:23:05 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/02/edge-detection/</guid>
				<description>&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2019/02/edge-detection/images/banner.png&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2019/02/edge-detection/images/banner_hu_440eb3c228c3607e.png&#34; alt=&#34;Raw Edges&#34; width=&#34;900&#34; height=&#34;499&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Identifying edges is one of the key &amp;ldquo;features&amp;rdquo; of the human vision system. Our&#xA;brains have evolved to identify edges and it&amp;rsquo;s one of the things which lets us&#xA;pick out different objects in the world. If we want to teach our computers to&#xA;see, Edge Detection is one of the key tools needed to reach that goal (at&#xA;least, according to &amp;ldquo;classical&amp;rdquo; methods. Things change with Deep Learning).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Autonomous Challenge: Blast Off</title>
				<link>https://blog.usedbytes.com/2019/02/autonomous-challenge-blast-off/</link>
				<pubDate>Sun, 17 Feb 2019 19:52:08 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/02/autonomous-challenge-blast-off/</guid>
				<description>&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2019/02/autonomous-challenge-blast-off/images/course.png&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2019/02/autonomous-challenge-blast-off/images/course.png&#34; alt=&#34;Course&#34; width=&#34;768&#34; height=&#34;130&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://piwars.org/2019-competition/challenges/blast-off/&#34; target=&#34;_blank&#34;&gt;Blast Off: the Straight-ish Line Speed&#xA;Test&lt;/a&gt; is, to my&#xA;mind, the easiest of the three autonomous challenges in this year&amp;rsquo;s&#xA;competition. As such, it&amp;rsquo;s the one which I started working on first.&lt;/p&gt;&#xA;&lt;p&gt;The task is to get from one end of the course to the other as quickly&#xA;as possible. There&amp;rsquo;s effectively two feasible options:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Follow the walls&lt;/li&gt;&#xA;&lt;li&gt;Follow the white line&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Given that I don&amp;rsquo;t have any side-facing sensors to follow the walls, to me the&#xA;easiest option looked like following the white line.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Mini Mouse&#39;s Software</title>
				<link>https://blog.usedbytes.com/2019/02/mini-mouses-software/</link>
				<pubDate>Sun, 17 Feb 2019 11:43:26 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/02/mini-mouses-software/</guid>
				<description>&lt;p&gt;Before I dive in to details on individual challenge implementations, I thought&#xA;it would be sensible to describe how the software on Mini Mouse sits together.&#xA;Some of this information is duplicated in &lt;a href=&#34;https://blog.usedbytes.com/posts/we-are-in/&#34;&gt;We&amp;rsquo;re in&lt;/a&gt;, but&#xA;there&amp;rsquo;s more detail here, and things have evolved since then.&lt;/p&gt;&#xA;&lt;p&gt;The diagrams on this page are created with &lt;a href=&#34;http://www.graphviz.org/&#34; target=&#34;_blank&#34;&gt;graphviz&lt;/a&gt;&#xA;(or more correctly, &lt;code&gt;dot&lt;/code&gt;), which doesn&amp;rsquo;t give the prettiest of drawings, but&#xA;does stop me wasting time obsessing over layout.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Final Hardware</title>
				<link>https://blog.usedbytes.com/2019/02/final-hardware/</link>
				<pubDate>Sat, 16 Feb 2019 22:03:44 +0000</pubDate>
				<guid>https://blog.usedbytes.com/2019/02/final-hardware/</guid>
				<description>&lt;p&gt;It&amp;rsquo;s been a few frantic months of robot building between my last post and now,&#xA;a decent portion of it being focussed on finalising the chassis. Since around&#xA;September I&amp;rsquo;ve had my prototype chassis working, which has given me a great&#xA;test-bed for software implementation testing and debugging the hardware design.&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2019/02/final-hardware/images/prototype.jpg&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2019/02/final-hardware/images/prototype_hu_6de71cdb088e778.jpg&#34; alt=&#34;Prototype&#34; width=&#34;900&#34; height=&#34;675&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;There were three main (known/intentional) limitations with the prototype&#xA;chassis, borne out of a need to get it built and tested before I could finalize&#xA;some of the details. Specifically:&lt;/p&gt;</description>
			</item>
			<item>
				<title>(Quite) Robust Thresholding</title>
				<link>https://blog.usedbytes.com/2018/10/quite-robust-thresholding/</link>
				<pubDate>Sat, 27 Oct 2018 16:55:59 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2018/10/quite-robust-thresholding/</guid>
				<description>&lt;p&gt;Today, I&amp;rsquo;m detailing the method I&amp;rsquo;m using to threshold images for line&#xA;detection. Also included are some hard-learned lessons about premature&#xA;optimisation and the importance of re-evaluating your decisions frequently!&lt;/p&gt;&#xA;&lt;p&gt;Image thresholding is the process of taking an image, and converting it into a&#xA;two-color (just black and white, no grey) image. This is useful for lots of&#xA;image processing algorithms - like edge or blob detection.&lt;/p&gt;&#xA;&lt;p&gt;My initial focus here has been on implementing a white line detector for the&#xA;&amp;ldquo;Blast Off&amp;rdquo; challenge.&lt;/p&gt;</description>
			</item>
			<item>
				<title>We&#39;re in!</title>
				<link>https://blog.usedbytes.com/2018/10/were-in/</link>
				<pubDate>Sat, 06 Oct 2018 11:09:04 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2018/10/were-in/</guid>
				<description>&lt;p&gt;So last weekend Mike and Tim sent out the confirmations for Pi Wars entries, and&#xA;Mini Mouse made the cut! &lt;strong&gt;We&amp;rsquo;re going to Pi Wars!&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2018/10/were-in/images/confirmed.png&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2018/10/were-in/images/confirmed.png&#34; alt=&#34;Entry confirmation&#34; width=&#34;784&#34; height=&#34;302&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;Doug on the Discord suggested the idea of sharing successful applications for&#xA;people to look at to see if they can improve their chances next time - so&#xA;&lt;a href=&#34;https://docs.google.com/document/d/1ZQbXNrs-5Y38DUoahu7boNVj50ahQWTaGxuPtmQ7vZ4/edit?usp=sharing&#34; target=&#34;_blank&#34;&gt;here&amp;rsquo;s mine&lt;/a&gt;&#xA;in case it&amp;rsquo;s useful.&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s been a little over a month since my last post, but I have moved things&#xA;forward a bit in that time.&lt;/p&gt;</description>
			</item>
			<item>
				<title>PCBs</title>
				<link>https://blog.usedbytes.com/2018/08/pcbs/</link>
				<pubDate>Sun, 26 Aug 2018 10:11:04 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2018/08/pcbs/</guid>
				<description>&lt;p&gt;For Mini Mouse, I&amp;rsquo;ve designed two PCBs - one for motor drivers, and one for the&#xA;power supply/control circuitry. These were my first boards using the open-source&#xA;KiCad suite of EDA tools, having previously been an EAGLE user.&lt;/p&gt;&#xA;&lt;p&gt;I got the boards made at &lt;a href=&#34;http://dirtypcbs.com&#34; target=&#34;_blank&#34;&gt;dirtypcbs.com&lt;/a&gt;, panelising the two boards into a&#xA;single 5x5 square. This is the third set of boards I&amp;rsquo;ve made with dirtypcbs, and&#xA;I&amp;rsquo;ve always been very pleased with them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Power</title>
				<link>https://blog.usedbytes.com/2018/08/power/</link>
				<pubDate>Sun, 26 Aug 2018 09:50:46 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2018/08/power/</guid>
				<description>&lt;p&gt;Every robot needs power, generally at two or more voltages - one &amp;ldquo;high&amp;rdquo; voltage&#xA;directly from the battery to feed the power hungry motors, and one &amp;ldquo;logic&amp;rdquo;&#xA;voltage to drive the electronics. The motor voltage needs to be able to provide&#xA;high current, and the logic voltage needs to be relatively &amp;ldquo;clean&amp;rdquo; to avoid&#xA;messing up the electronics with excessive noise or voltage drops.&lt;/p&gt;&#xA;&lt;p&gt;Mini Mouse uses a 3S LiPo battery, which means it&amp;rsquo;s quite important not to&#xA;over-discharge the battery, as that might damage the cells (and could even&#xA;result in fire). On Bot Matrix I had a mechanical power switch to disconnect the&#xA;battery, but I don&amp;rsquo;t really have space in Mini Mouse, and I also wanted to try&#xA;designing an electronic switch as a useful building block for future projects.&#xA;So, I need an electronic switch design which has no current draw when &amp;ldquo;off&amp;rdquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Motors</title>
				<link>https://blog.usedbytes.com/2018/06/motors/</link>
				<pubDate>Sun, 03 Jun 2018 14:55:44 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2018/06/motors/</guid>
				<description>&lt;p&gt;Motors were the first thing I worked on selecting at the start of the&#xA;development process. Given the space constraints I&amp;rsquo;m working with, motors would&#xA;be a critical component which would inform the design of the rest of the robot.&lt;/p&gt;&#xA;&lt;h1 id=&#34;stepper-vs-brushed-dc&#34;&gt;Stepper vs Brushed DC &lt;a class=&#34;document__back-to-top&#34; href=&#34;#main-content&#34; aria-label=&#34;Back to top&#34;&gt;(top)&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;In Bot Matrix I had DC motors with hall-effect encoders on the back. I used the&#xA;encoders to implement closed-loop control for motor speed, and for odometry for&#xA;dead reckoning. In my opinion, accurate speed control and odometry are must-have&#xA;features for a robot - and so this weighs heavily in to the motor selection&#xA;process.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Mini Mouse</title>
				<link>https://blog.usedbytes.com/2018/04/mini-mouse/</link>
				<pubDate>Mon, 30 Apr 2018 19:47:31 +0100</pubDate>
				<guid>https://blog.usedbytes.com/2018/04/mini-mouse/</guid>
				<description>&lt;p&gt;In the past 12 months, I built Bot Matrix, aiming for PiWars 2018 (though&#xA;unfortunately I wasn&amp;rsquo;t selected as a competitor). It was the first chassis I&#xA;built from scratch, and I learnt a lot in the process! Bot Matrix was large (on&#xA;the limits of the PiWars size allowance), and used pretty large motors and&#xA;drivers.&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;document-image&#34;&gt;&#xA;    &lt;a href=&#34;https://blog.usedbytes.com/2018/04/mini-mouse/images/bot-matrix.jpg&#34;&gt;&#xA;      &lt;img src=&#34;https://blog.usedbytes.com/2018/04/mini-mouse/images/bot-matrix_hu_bac93d225240a2fd.jpg&#34; alt=&#34;Bot Matrix&#34; width=&#34;900&#34; height=&#34;675&#34;&gt;&#xA;    &lt;/a&gt;&#xA;  &lt;/span&gt;&lt;/p&gt;&#xA;&lt;p&gt;This year&amp;rsquo;s project is a little bit different - I always fancied building a&#xA;robot in a computer mouse and so that&amp;rsquo;s what I&amp;rsquo;m going for. Min(n)i(e) Mouse is&#xA;different from Bot Matrix in nearly every way. Bot Matrix used a Pi 3, two&#xA;dedicated microcontrollers for off-board processing, tracks, 5 ampere motors, tracks,&#xA;and 3072 LEDs. By comparison, Mini Mouse will have a Pi Zero, only. All&#xA;processing and control will be handled on-board by the Pi.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
