<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Negative Acknowledge</title>
	<atom:link href="http://negativeacknowledge.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://negativeacknowledge.com</link>
	<description></description>
	<lastBuildDate>Thu, 29 Dec 2011 22:01:22 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
	<item>
		<title>Comment on Nixie Clock by Crafties</title>
		<link>http://negativeacknowledge.com/2009/09/nixie-clock/comment-page-1/#comment-431</link>
		<dc:creator>Crafties</dc:creator>
		<pubDate>Thu, 29 Dec 2011 22:01:22 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=63#comment-431</guid>
		<description>good man..thanks buddy, will definitely have a go at making this, I`ll get back to you if I get swamped.. one question was the manufacture of the boards from Gold Phoenix expensive ?</description>
		<content:encoded><![CDATA[<p>good man..thanks buddy, will definitely have a go at making this, I`ll get back to you if I get swamped.. one question was the manufacture of the boards from Gold Phoenix expensive ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Nixie Clock by Random</title>
		<link>http://negativeacknowledge.com/2009/09/nixie-clock/comment-page-1/#comment-430</link>
		<dc:creator>Random</dc:creator>
		<pubDate>Wed, 28 Dec 2011 22:11:59 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=63#comment-430</guid>
		<description>The code&#039;s all at: https://github.com/adamgreig/nixieclock</description>
		<content:encoded><![CDATA[<p>The code&#8217;s all at: <a href="https://github.com/adamgreig/nixieclock" rel="nofollow">https://github.com/adamgreig/nixieclock</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Nixie Clock by Crafties</title>
		<link>http://negativeacknowledge.com/2009/09/nixie-clock/comment-page-1/#comment-429</link>
		<dc:creator>Crafties</dc:creator>
		<pubDate>Wed, 28 Dec 2011 22:10:20 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=63#comment-429</guid>
		<description>great job...any chance of the hex files for the ATmega ??</description>
		<content:encoded><![CDATA[<p>great job&#8230;any chance of the hex files for the ATmega ??</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Random</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-428</link>
		<dc:creator>Random</dc:creator>
		<pubDate>Wed, 28 Dec 2011 13:18:06 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-428</guid>
		<description>If your CPU approach is working out, and it seems like it is, I&#039;d stick with it.

It sounds like you&#039;ve really got it all under control! Your project sounds really impressive, I can&#039;t wait to hear how it turns out. Doing proper SLAM with a line laser would be incredibly cool (basically LIDAR) and in theory can get you great results for indoor maps. Getting something basic working for stabalisation will probably suffice, especially for indoor flying or such. That&#039;s a really ambitious A2 project you&#039;ve got going! I bet Mr P&#039;s loving it. Good luck again!</description>
		<content:encoded><![CDATA[<p>If your CPU approach is working out, and it seems like it is, I&#8217;d stick with it.</p>
<p>It sounds like you&#8217;ve really got it all under control! Your project sounds really impressive, I can&#8217;t wait to hear how it turns out. Doing proper SLAM with a line laser would be incredibly cool (basically LIDAR) and in theory can get you great results for indoor maps. Getting something basic working for stabalisation will probably suffice, especially for indoor flying or such. That&#8217;s a really ambitious A2 project you&#8217;ve got going! I bet Mr P&#8217;s loving it. Good luck again!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Matt B</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-427</link>
		<dc:creator>Matt B</dc:creator>
		<pubDate>Wed, 28 Dec 2011 02:50:40 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-427</guid>
		<description>I have not tried a &#039;scope because I don&#039;t have one! I&#039;ll try it at school. It may be that there is quite a lot of capacitance because I used a jumper on that line on the PCB, which wasn&#039;t the greatest of ideas... But if the camera works at 6MHz, that doubles the processing time so I&#039;m not complaining, and 15 FPS is good enough.

I&#039;m writing everything in assembler at the moment. I have tried to find actual information about the cortex m3&#039;s caches, but I really don&#039;t know where to look. I find the SYSTICK timer useful for cycle-counting - but a reasonable amount of it is just guessing.

Unfortunately I cannot just poll the pixel clock line because each poll loop takes at minimum 8 or 9 cycles, which is not fast enough. My approach is to synchronise with the pixel clock line, so that my inline assembler will read each pixel at the centre of the PIXCLK waveform. The synchronisation will occur once before each line. I&#039;m pretty sure that the pixel reading code will take consistently the same amount of time, because I tested it billions of times.

I did not know that interrupts were that responsive on the cortex m3, but using them would still reduce the FPS by a lot. Perhaps I will try them if I can&#039;t get this CPU approach to work.

It is not just one point - it is a line laser pulsed at the exposure time of the camera, and I was thinking more for inside the house - navigating and building maps of walls etc, not a height map (ultrasonic sensors will probably be used for landing/ceiling awareness). But that will be next year! 

I have found 3, 3 axis sensors (acc, gyro and magneto), and will probably just try making up some simple stuff to start with (complimentary filters and things) and just improve on that, a PID loop would also be used.

Thanks for your suggestions!</description>
		<content:encoded><![CDATA[<p>I have not tried a &#8216;scope because I don&#8217;t have one! I&#8217;ll try it at school. It may be that there is quite a lot of capacitance because I used a jumper on that line on the PCB, which wasn&#8217;t the greatest of ideas&#8230; But if the camera works at 6MHz, that doubles the processing time so I&#8217;m not complaining, and 15 FPS is good enough.</p>
<p>I&#8217;m writing everything in assembler at the moment. I have tried to find actual information about the cortex m3&#8242;s caches, but I really don&#8217;t know where to look. I find the SYSTICK timer useful for cycle-counting &#8211; but a reasonable amount of it is just guessing.</p>
<p>Unfortunately I cannot just poll the pixel clock line because each poll loop takes at minimum 8 or 9 cycles, which is not fast enough. My approach is to synchronise with the pixel clock line, so that my inline assembler will read each pixel at the centre of the PIXCLK waveform. The synchronisation will occur once before each line. I&#8217;m pretty sure that the pixel reading code will take consistently the same amount of time, because I tested it billions of times.</p>
<p>I did not know that interrupts were that responsive on the cortex m3, but using them would still reduce the FPS by a lot. Perhaps I will try them if I can&#8217;t get this CPU approach to work.</p>
<p>It is not just one point &#8211; it is a line laser pulsed at the exposure time of the camera, and I was thinking more for inside the house &#8211; navigating and building maps of walls etc, not a height map (ultrasonic sensors will probably be used for landing/ceiling awareness). But that will be next year! </p>
<p>I have found 3, 3 axis sensors (acc, gyro and magneto), and will probably just try making up some simple stuff to start with (complimentary filters and things) and just improve on that, a PID loop would also be used.</p>
<p>Thanks for your suggestions!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Random</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-426</link>
		<dc:creator>Random</dc:creator>
		<pubDate>Tue, 27 Dec 2011 19:11:34 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-426</guid>
		<description>That is unusual. Have you tried using an oscilloscope to check the clock output? It&#039;s definitely capable of a 12MHz output, but maybe there&#039;s too much capacitance on the line for it to drive it effectively. Still, 6MHz should suffice if the camera will operate.

Processing each pixel on the fly seems reasonable. Are you writing the code for that in assembler or C? You might want to think about things like the caching system and how likely your code is to cause cache hits...
I was able to read in one line of data by having an interrupt fire on the HSYNC line and then reading bytes into memory by polling the pixel clock line. Once I&#039;d read an entire line, I had time to do quick processing of it (finding the centre of mass of red pixels on that line) before the next line started, an approach that sounds like it could also work for you. If you&#039;ve got per-pixel processing working well there&#039;s no point changing though. If interrupt latency is being an issue check out the various priority configuration options for the STM32&#039;s interrupts -- it&#039;s one of the most configurable and powerful interrupt systems in microchips these days and can probably work with what you need (I think they should be able to work down to just a couple of clock cycles...).

Doing SLAM sounds like fun. Is this laser just facing down, so you build a height map of the terrain you fly over? Trying to do localisation with such a narrow field of view (just one height measurement...) sounds like it might be tricky, though -- have you got a proof of concept or a simulation or anything working?

Some of the hardest bits of quadcopters is stabalisation: ideally you need sensor fusion (a Kalman filter or something) with a degree of freedom for, at least, three axis of gyro, magno and accel, and ideally also further DoFs for bias; plus you need control systems to keep the thing level and flying where you want it to go (a tuned PID or such) that work without a human in the loop to correct errors. That&#039;s not easy to do, though it&#039;s a problem other people have solved -- are you using (or considered using) things like OpenPilot or Paparazzi for your sensor fusion and control loops? Using their code might let you focus on the (already not trivial) problem of making the thing autonomous.


At any rate it sounds like a very exciting project, good luck!</description>
		<content:encoded><![CDATA[<p>That is unusual. Have you tried using an oscilloscope to check the clock output? It&#8217;s definitely capable of a 12MHz output, but maybe there&#8217;s too much capacitance on the line for it to drive it effectively. Still, 6MHz should suffice if the camera will operate.</p>
<p>Processing each pixel on the fly seems reasonable. Are you writing the code for that in assembler or C? You might want to think about things like the caching system and how likely your code is to cause cache hits&#8230;<br />
I was able to read in one line of data by having an interrupt fire on the HSYNC line and then reading bytes into memory by polling the pixel clock line. Once I&#8217;d read an entire line, I had time to do quick processing of it (finding the centre of mass of red pixels on that line) before the next line started, an approach that sounds like it could also work for you. If you&#8217;ve got per-pixel processing working well there&#8217;s no point changing though. If interrupt latency is being an issue check out the various priority configuration options for the STM32&#8242;s interrupts &#8212; it&#8217;s one of the most configurable and powerful interrupt systems in microchips these days and can probably work with what you need (I think they should be able to work down to just a couple of clock cycles&#8230;).</p>
<p>Doing SLAM sounds like fun. Is this laser just facing down, so you build a height map of the terrain you fly over? Trying to do localisation with such a narrow field of view (just one height measurement&#8230;) sounds like it might be tricky, though &#8212; have you got a proof of concept or a simulation or anything working?</p>
<p>Some of the hardest bits of quadcopters is stabalisation: ideally you need sensor fusion (a Kalman filter or something) with a degree of freedom for, at least, three axis of gyro, magno and accel, and ideally also further DoFs for bias; plus you need control systems to keep the thing level and flying where you want it to go (a tuned PID or such) that work without a human in the loop to correct errors. That&#8217;s not easy to do, though it&#8217;s a problem other people have solved &#8212; are you using (or considered using) things like OpenPilot or Paparazzi for your sensor fusion and control loops? Using their code might let you focus on the (already not trivial) problem of making the thing autonomous.</p>
<p>At any rate it sounds like a very exciting project, good luck!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Matt B</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-425</link>
		<dc:creator>Matt B</dc:creator>
		<pubDate>Tue, 27 Dec 2011 17:34:19 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-425</guid>
		<description>Thanks for the links, unfortunately I had the environment up and running quite a while ago (and on windows...), but they may be useful in the future.

After days of trying to get the camera to work, I had almost  given up. But just out of luck, I reduced the clock speed to 6MHz and now it seems to work perfectly! It&#039;s strange how the ARM can&#039;t seem to output 12MHZ (maybe rise/fall times are too high).

I&#039;m not planning to use DMA, nor to store the image data. Each pixel will be processed on-the-fly (I&#039;m making a laser triangulation depth sensor) - each in exactly 14 cycles. It is a bit risky, because I&#039;m not using a pixel clock to know when the data is valid, but I&#039;ve cycle-timed my processing code block and it is consistently 13 cycles (plus one NOP as a buffer). There will be 752 copies of the code inline (!!!) to process one row. Also the interrupt latency time is far too high and unpredictable to use (I think this is what you used for robot2). The brightest pixel&#039;s position in each column will be stored in the SRAM. Then, when the frame is over, will be converted into depth measurements and sent to the sensor&#039;s host (maybe another ARM chip) for SLAM or something. The camera will be running at about 14FPS so I think the sensor will be good enough for some pretty intelligent robots :)

I&#039;ve looked into quad-copters and it doesn&#039;t seem too bad, but something will probably crop up (although will hopefully crop back down again safely).

If you have any advice or think you can see any problems I&#039;d gladly absorb it :)</description>
		<content:encoded><![CDATA[<p>Thanks for the links, unfortunately I had the environment up and running quite a while ago (and on windows&#8230;), but they may be useful in the future.</p>
<p>After days of trying to get the camera to work, I had almost  given up. But just out of luck, I reduced the clock speed to 6MHz and now it seems to work perfectly! It&#8217;s strange how the ARM can&#8217;t seem to output 12MHZ (maybe rise/fall times are too high).</p>
<p>I&#8217;m not planning to use DMA, nor to store the image data. Each pixel will be processed on-the-fly (I&#8217;m making a laser triangulation depth sensor) &#8211; each in exactly 14 cycles. It is a bit risky, because I&#8217;m not using a pixel clock to know when the data is valid, but I&#8217;ve cycle-timed my processing code block and it is consistently 13 cycles (plus one NOP as a buffer). There will be 752 copies of the code inline (!!!) to process one row. Also the interrupt latency time is far too high and unpredictable to use (I think this is what you used for robot2). The brightest pixel&#8217;s position in each column will be stored in the SRAM. Then, when the frame is over, will be converted into depth measurements and sent to the sensor&#8217;s host (maybe another ARM chip) for SLAM or something. The camera will be running at about 14FPS so I think the sensor will be good enough for some pretty intelligent robots <img src='http://negativeacknowledge.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;ve looked into quad-copters and it doesn&#8217;t seem too bad, but something will probably crop up (although will hopefully crop back down again safely).</p>
<p>If you have any advice or think you can see any problems I&#8217;d gladly absorb it <img src='http://negativeacknowledge.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Random</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-423</link>
		<dc:creator>Random</dc:creator>
		<pubDate>Fri, 23 Dec 2011 21:56:40 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-423</guid>
		<description>Hi Matt! Hah, what a coincidence. Probably a bit late now but did you see &lt;a href=&quot;https://github.com/adamgreig/STM32_SkeletonProject&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt;, &lt;a href=&quot;https://github.com/esden/summon-arm-toolchain&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt; and &lt;a href=&quot;https://github.com/adamgreig/followingrobot&quot; rel=&quot;nofollow&quot;&gt;this&lt;/a&gt;? The first two are everything you need to get the dev environment working (on Linux and with command line build tools, at least...) while the third is all the source and build support stuff for my project. Might still be helpful for you.

A 752*480px camera sounds fairly hefty indeed! Are you storing the data coming off it, or trying to process it a line at a time? If you&#039;re storing the data, what on? If you&#039;re clocking it at 12MHz into the STM32 running at 72MHz that really gives you very, very, very few clock cycles to accomplish anything useful, it sounds like you&#039;d really better be using DMA from the GPIO peripheral to stand a chance. Alternatively the new STM32F4 line includes onboard camera peripherals that would interface with many embedded cameras directly, streaming image data into RAM (and have a lot more RAM to boot, too) which might make your life a lot easier!

The Sharp sensors should be fine indoors and are indeed a fairly good way of getting precise small-distance ranges, but an ultrasonic module might be better for distances in the range of a couple of metres -- less affected by interference, too.

It sounds like a really cool and ambitious project, I bet Mr P&#039;s excited for it! I&#039;ve toyed with autonomous quads too, and it&#039;s definitely not an easy undertaking. Best of luck! I&#039;d love to hear how it goes.</description>
		<content:encoded><![CDATA[<p>Hi Matt! Hah, what a coincidence. Probably a bit late now but did you see <a href="https://github.com/adamgreig/STM32_SkeletonProject" rel="nofollow">this</a>, <a href="https://github.com/esden/summon-arm-toolchain" rel="nofollow">this</a> and <a href="https://github.com/adamgreig/followingrobot" rel="nofollow">this</a>? The first two are everything you need to get the dev environment working (on Linux and with command line build tools, at least&#8230;) while the third is all the source and build support stuff for my project. Might still be helpful for you.</p>
<p>A 752*480px camera sounds fairly hefty indeed! Are you storing the data coming off it, or trying to process it a line at a time? If you&#8217;re storing the data, what on? If you&#8217;re clocking it at 12MHz into the STM32 running at 72MHz that really gives you very, very, very few clock cycles to accomplish anything useful, it sounds like you&#8217;d really better be using DMA from the GPIO peripheral to stand a chance. Alternatively the new STM32F4 line includes onboard camera peripherals that would interface with many embedded cameras directly, streaming image data into RAM (and have a lot more RAM to boot, too) which might make your life a lot easier!</p>
<p>The Sharp sensors should be fine indoors and are indeed a fairly good way of getting precise small-distance ranges, but an ultrasonic module might be better for distances in the range of a couple of metres &#8212; less affected by interference, too.</p>
<p>It sounds like a really cool and ambitious project, I bet Mr P&#8217;s excited for it! I&#8217;ve toyed with autonomous quads too, and it&#8217;s definitely not an easy undertaking. Best of luck! I&#8217;d love to hear how it goes.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Matt B</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-422</link>
		<dc:creator>Matt B</dc:creator>
		<pubDate>Thu, 22 Dec 2011 21:53:02 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-422</guid>
		<description>Sorry wrong e-mail.</description>
		<content:encoded><![CDATA[<p>Sorry wrong e-mail.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Robot2 &#8211; an ARM based colour tracking robot by Matt B</title>
		<link>http://negativeacknowledge.com/2009/05/robot2-an-arm-based-colour-tracking-robot/comment-page-1/#comment-421</link>
		<dc:creator>Matt B</dc:creator>
		<pubDate>Thu, 22 Dec 2011 21:29:44 +0000</pubDate>
		<guid isPermaLink="false">http://negativeacknowledge.com/?p=51#comment-421</guid>
		<description>Hi, I came across this page randomly, and I go to the same school that you went to. I would just like to say I&#039;m very impressed. I&#039;m doing a similar project to yours (but not at all copying - don&#039;t worry), with the same ARM processor - it took ages to finally get the dev environment working! I&#039;m trying to use a pretty hefty camera as well - 752*480 pixels. Not a lot of luck at the moment - I think that the minimum 12MHz clock in needs (that the STM32 is generating at 72MHz) doesn&#039;t have rise/fall times low enough. It would be annoying if it didn&#039;t work because Mr. P spent top dollar on it! I am planning to make an autonomous quadcopter for my A2 project, and was wondering how well the Sharp IR sensors behave in indoor lighting (these may be useful) - is there a lot of interference (honestly)? I thought that I had to say something as I came across this website :)</description>
		<content:encoded><![CDATA[<p>Hi, I came across this page randomly, and I go to the same school that you went to. I would just like to say I&#8217;m very impressed. I&#8217;m doing a similar project to yours (but not at all copying &#8211; don&#8217;t worry), with the same ARM processor &#8211; it took ages to finally get the dev environment working! I&#8217;m trying to use a pretty hefty camera as well &#8211; 752*480 pixels. Not a lot of luck at the moment &#8211; I think that the minimum 12MHz clock in needs (that the STM32 is generating at 72MHz) doesn&#8217;t have rise/fall times low enough. It would be annoying if it didn&#8217;t work because Mr. P spent top dollar on it! I am planning to make an autonomous quadcopter for my A2 project, and was wondering how well the Sharp IR sensors behave in indoor lighting (these may be useful) &#8211; is there a lot of interference (honestly)? I thought that I had to say something as I came across this website <img src='http://negativeacknowledge.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
</channel>
</rss>

