<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>mjbots blog</title>
    <link>https://blog.mjbots.com/</link>
    <description>Recent content on mjbots blog</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 05 Mar 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.mjbots.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Moteus performance analysis tool - CLI mode</title>
      <link>https://blog.mjbots.com/2026/03/05/moteus-performance-analysis-tool-cli-mode/</link>
      <pubDate>Thu, 05 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/03/05/moteus-performance-analysis-tool-cli-mode/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve previously written about the &lt;a href=&#34;https://blog.mjbots.com/2025/07/17/moteus-performance-analysis-tool-v2/&#34;&gt;moteus performance analysis tool&lt;/a&gt; and how it can be used to evaluate different motor control systems for performance purposes.  The tool described there is entirely a web based application that requires clicking around in the HTML interface in order to configure an analysis.&lt;/p&gt;&#xA;&lt;p&gt;Now, there is newly added feature in the main moteus git repository that provides a command line interface (CLI) to the analysis kernel!  This capability lets you run sweeps through various parameters or motor configurations much more easily than before, or even wrap the analysis in an optimization loop without resorting to browser based automation techniques.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Native socketcan support for mjcanfd-usb-1x</title>
      <link>https://blog.mjbots.com/2026/02/26/native-socketcan-support-for-mjcanfd-usb-1x/</link>
      <pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/02/26/native-socketcan-support-for-mjcanfd-usb-1x/</guid>
      <description>&lt;p&gt;Since the fdcanusb, and subsequently the &lt;a href=&#34;https://mjbots.com/products/mjcanfd-usb-1x&#34;&gt;mjcanfd-usb-1x&lt;/a&gt;, have been released, the only interface they presented to a PC host was a USB CDC (communication class device).  That meant they appeared as a modem, on linux as &lt;code&gt;/dev/ttyACMx&lt;/code&gt; and on Windows as &lt;code&gt;COMx&lt;/code&gt;.  Sending and receiving frames was pretty simple using a basic line based protocol.&lt;/p&gt;&#xA;&lt;p&gt;This works fine as long as you are either using the mjbots tools, or designing a complete custom application.  However, if you want to use the adapter with other CAN or CAN-FD based applications on Linux, there wasn&amp;rsquo;t a whole lot you could do.  There was a simple daemon which, with a fair amount of effort, would make the hardware appear as a slcan device, but that was finicky and hard to get working and not terribly reliable.&lt;/p&gt;</description>
    </item>
    <item>
      <title>moteus.move_to and moteus ruckig python example</title>
      <link>https://blog.mjbots.com/2026/02/19/moteus.move_to-and-moteus-ruckig-python-example/</link>
      <pubDate>Thu, 19 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/02/19/moteus.move_to-and-moteus-ruckig-python-example/</guid>
      <description>&lt;p&gt;For some time now the moteus python library has had a convenience function to repeatedly execute a command until moteus determines that the trajectory has completed.  This helps a lot with simple applications with a single device, but as soon as multiple controllers are involved in the same machine numerous problems appear:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Watchdog timeout&lt;/strong&gt;: moteus has a &lt;a href=&#34;https://mjbots.github.io/moteus/troubleshooting/timeout-mode-11/&#34;&gt;watchdog timeout&lt;/a&gt; and unless all devices are sent commands on a regular basis, they will fault.  This is easy to do with &lt;code&gt;set_position_wait_complete&lt;/code&gt;, which by definition only sends commands to a single device.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PWM input support</title>
      <link>https://blog.mjbots.com/2026/02/12/pwm-input-support/</link>
      <pubDate>Thu, 12 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/02/12/pwm-input-support/</guid>
      <description>&lt;p&gt;The new features and capababilities for moteus &lt;a href=&#34;https://blog.mjbots.com/2026/01/22/more-stable-acceleration-limiting/&#34;&gt;just&lt;/a&gt; &lt;a href=&#34;https://blog.mjbots.com/2026/01/29/moteus-hardware-adc-triggering/&#34;&gt;keep&lt;/a&gt; &lt;a href=&#34;https://blog.mjbots.com/2026/02/05/biss-c-encoder-support/&#34;&gt;coming&lt;/a&gt;!  Here is another relatively straightforward one available in &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/0.1-20260121&#34;&gt;firmware release 2026-01-21&lt;/a&gt;, support for PWM (pulse-width-modulated) inputs.  If an appropriate pin is configured, moteus can report the period and duty cycle of a PWM input to applications.  This can be used to monitor the fan RPM for the moteus cooling fans on moteus-c1, moteus-n1, or moteus-x1, or could be used to read the value of a RC receiver output.  Read on to learn how to use it and what the limitations are:&lt;/p&gt;</description>
    </item>
    <item>
      <title>BiSS-C encoder support</title>
      <link>https://blog.mjbots.com/2026/02/05/biss-c-encoder-support/</link>
      <pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/02/05/biss-c-encoder-support/</guid>
      <description>&lt;p&gt;I&amp;rsquo;d like to announce more encoder support in moteus, this time for BiSS-C encoders in unidirectional mode.  &lt;a href=&#34;https://en.wikipedia.org/wiki/BiSS_interface&#34;&gt;BiSS-C&lt;/a&gt; is a protocol often used in higher end industrial encoders that uses a RS-422 wire level signaling scheme.  This support works out of the box for &lt;a href=&#34;https://mjbots.com/products/moteus-n1&#34;&gt;moteus-n1&lt;/a&gt; and &lt;a href=&#34;https://mjbots.com/products/moteus-x1&#34;&gt;moteus-x1&lt;/a&gt; which have a RS-422 connector already included.  All you need is to have firmware &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/0.1-20260121&#34;&gt;2026-01-21&lt;/a&gt; or newer installed and to &lt;a href=&#34;https://mjbots.github.io/moteus/reference/firmware/#flashing-over-can&#34;&gt;follow the documentation for upgrading&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If you want to see a specific configuration example, or read about how the feature was implemented, read on!&lt;/p&gt;</description>
    </item>
    <item>
      <title>moteus hardware ADC triggering</title>
      <link>https://blog.mjbots.com/2026/01/29/moteus-hardware-adc-triggering/</link>
      <pubDate>Thu, 29 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/01/29/moteus-hardware-adc-triggering/</guid>
      <description>&lt;p&gt;TLDR: As of &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/0.1-20260121&#34;&gt;firmware 2026-01-21&lt;/a&gt; moteus now has a maximum modulation depth that is 6% larger than before.  That means the maximum speed for a given voltage is that much higher.  Read on for the effort invested in making that happen.&lt;/p&gt;</description>
    </item>
    <item>
      <title>More stable acceleration limiting</title>
      <link>https://blog.mjbots.com/2026/01/22/more-stable-acceleration-limiting/</link>
      <pubDate>Thu, 22 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/01/22/more-stable-acceleration-limiting/</guid>
      <description>&lt;p&gt;Back in 2022 moteus &lt;a href=&#34;https://blog.mjbots.com/2022/04/08/velocity-and-acceleration-limited-trajectories/&#34;&gt;added support for acceleration limited trajectories&lt;/a&gt;.  This was a highly requested feature and has been used for all sorts of applications since.  However when working on the recent &lt;a href=&#34;https://blog.mjbots.com/2026/01/08/optimizing-fast-movements/&#34;&gt;trajectory optimization effort&lt;/a&gt; it became obvious that there were still some lingering stability issues on two fronts.  First, when decelerating, there would occasionally be single control cycles where an acceleration was instead commanded.  Second, termination at the end of a move would often involve small amounts of overshoot or oscillation.  You can see both in one of the plots from that post here:&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://blog.mjbots.com/2026/01/22/more-stable-acceleration-limiting/images/fully_tuned_a4250_16_5ms.png&#34;&#xA;    alt=&#34;Acceleration instability&#34;&gt;&lt;figcaption&gt;&#xA;      &lt;p&gt;Acceleration instability&lt;/p&gt;&#xA;    &lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;I&amp;rsquo;ve known about this for several years now, and occasionally have spent a few minutes trying to think of alternate formulations that would be more stable.  With my recent attempts to use Claude Code, I thought maybe it could help here too since at least this part of the firmware is entirely tested by host side unit tests?  Well, the answer was I suppose it did help, but not exactly in the way I originally intended.  Read on for more details, or upgrade to moteus firmware &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/0.1-20260121&#34;&gt;2026-01-21&lt;/a&gt; if you just want the fixes.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Optimizing fast movements</title>
      <link>https://blog.mjbots.com/2026/01/08/optimizing-fast-movements/</link>
      <pubDate>Thu, 08 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/01/08/optimizing-fast-movements/</guid>
      <description>&lt;p&gt;In a mini-project inspired by a &lt;a href=&#34;https://discord.gg/W4hUpBb&#34;&gt;Discord&lt;/a&gt;&#xA;chat about a Rubik&amp;rsquo;s cube solver, I decided to undertake a project to&#xA;see how quickly I could get moteus to make a controlled 90 degree&#xA;movement and a controlled 180 degree movement.  The project ended up&#xA;involving a fair amount more work and theory than I had expected, but&#xA;resulted in an overall solution that is relatively close to optimal&#xA;for the specified moteus and motor.  If you find text too hard, you&#xA;can watch the video below, otherwise read on to see the details:&lt;/p&gt;&#xA;&lt;div style=&#34;position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;&#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; referrerpolicy=&#34;strict-origin-when-cross-origin&#34; src=&#34;https://www.youtube.com/embed/3ymqtvvDQ4s?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0&#34; style=&#34;position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;&#34; title=&#34;YouTube video&#34;&gt;&lt;/iframe&gt;&#xA;    &lt;/div&gt;</description>
    </item>
    <item>
      <title>Capturing full rate debug data from moteus</title>
      <link>https://blog.mjbots.com/2026/01/01/capturing-full-rate-debug-data-from-moteus/</link>
      <pubDate>Thu, 01 Jan 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/01/01/capturing-full-rate-debug-data-from-moteus/</guid>
      <description>&lt;p&gt;Most users of the moteus brushless motor controller will perform&#xA;diagnostics and monitoring over CAN-FD, using something &lt;a href=&#34;https://blog.mjbots.com/2025/10/16/device-fault-monitoring-in-tview/&#34;&gt;like&#xA;tview&lt;/a&gt;,&#xA;&lt;a href=&#34;https://blog.mjbots.com/2020/12/09/pip3-install-moteus/&#34;&gt;the moteus python&#xA;library&lt;/a&gt; or&#xA;&lt;a href=&#34;https://blog.mjbots.com/2023/09/19/c-client-bindings-for-moteus/&#34;&gt;the moteus C++&#xA;library&lt;/a&gt;.&#xA;These options are great, since CAN-FD works over long distances,&#xA;allows multiple devices to be multiplexed and is relatively immune to&#xA;EMI or other electrical disturbances.  The biggest downside is that at&#xA;best, you can capture telemetry a few thousand times a second.  For&#xA;instance here, &lt;a href=&#34;https://blog.mjbots.com/2024/05/16/optimizing-moteus-command-rate/&#34;&gt;2.5kHz is the maximum achievable update&#xA;rate&lt;/a&gt;&#xA;with a pi3hat and a single moteus.&lt;/p&gt;&#xA;&lt;p&gt;What should you do when you want to monitor events that happen faster than that?  Well, moteus has a solution for that too, and while it isn&amp;rsquo;t nearly as convenient, it does get the job done for many uses.  It is called &amp;ldquo;high rate debug output&amp;rdquo; and lets moteus emit small amounts of telemetry data at every single control cycle, so up to 30kHz.  In this post I&amp;rsquo;ll show how to configure and use it, how to capture the resulting output, and how to plot it or otherwise make use of it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>tview logging</title>
      <link>https://blog.mjbots.com/2025/12/18/tview-logging/</link>
      <pubDate>Thu, 18 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/12/18/tview-logging/</guid>
      <description>&lt;p&gt;Wow, the updates to the graphical moteus monitoring application tview&#xA;just won&amp;rsquo;t stop!  We&amp;rsquo;ve had a lot of changes recently (&lt;a href=&#34;https://blog.mjbots.com/2025/11/06/tview-python-console/&#34;&gt;python&#xA;console&lt;/a&gt;,&#xA;&lt;a href=&#34;https://blog.mjbots.com/2025/10/23/device-fault-text-decoding/&#34;&gt;fault text&#xA;decoding&lt;/a&gt;,&#xA;&lt;a href=&#34;https://blog.mjbots.com/2025/10/16/device-fault-monitoring-in-tview/&#34;&gt;fault&#xA;monitoring&lt;/a&gt;,&#xA;&lt;a href=&#34;https://blog.mjbots.com/2025/10/09/uuid-based-addressing-and-python-multiple-device-support/&#34;&gt;UUID&#xA;addressing&lt;/a&gt;)&#xA;and now here is yet another long requested big quality of life&#xA;improvement &amp;ndash; recording data to log files!  As of pypi moteus-gui&#xA;version X, tview now can write log files in either the &lt;a href=&#34;https://jsonlines.org/&#34;&gt;.jsonl&#xA;format&lt;/a&gt; as a single file or as a set of CSV&#xA;files.  Continue reading for more details!&lt;/p&gt;</description>
    </item>
    <item>
      <title>More diametric ring magnets at mjbots.com</title>
      <link>https://blog.mjbots.com/2025/12/11/more-diametric-ring-magnets-at-mjbots.com/</link>
      <pubDate>Thu, 11 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/12/11/more-diametric-ring-magnets-at-mjbots.com/</guid>
      <description>&lt;p&gt;Following a brief period with no stock, we&amp;rsquo;ve restocked the &lt;a href=&#34;https://mjbots.com/products/diametric-ring-magnet?variant=44847882371233&#34;&gt;original 32mm x 22mm x 4mm diametric ring magnet&lt;/a&gt; at &lt;a href=&#34;https://mjbots.com&#34;&gt;mjbots.com&lt;/a&gt;.  Additionally, there are now 4 new sizes to choose from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mjbots.com/products/diametric-ring-magnet?variant=45499509407905&#34;&gt;44mm x 30mm x 4mm - N35H&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mjbots.com/products/diametric-ring-magnet?variant=45499509440673&#34;&gt;24mm x 16mm x 3.5mm - N35H&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mjbots.com/products/diametric-ring-magnet?variant=45499509473441&#34;&gt;21mm x 14mm x 2.5mm - N45H&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mjbots.com/products/diametric-ring-magnet?variant=45499509506209&#34;&gt;19.5mm x 12mm x 2.5mm - N35H&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This should hopefully let you use low cost (albeit low accuracy), off axis diametric ring magnets in even more applications.  Good luck!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Fitting moteus motor saturation models</title>
      <link>https://blog.mjbots.com/2025/12/04/fitting-moteus-motor-saturation-models/</link>
      <pubDate>Thu, 04 Dec 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/12/04/fitting-moteus-motor-saturation-models/</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://blog.mjbots.com/2020/07/31/dealing-with-stator-magnetic-saturation/&#34;&gt;Way back in&#xA;2020&lt;/a&gt;,&#xA;I wrote about the motor saturation model that moteus uses to&#xA;accurately calculate torque when a motor is operating in a region&#xA;where the stator becomes saturated.  What I didn&amp;rsquo;t write about was a&#xA;method for actually determining those fit parameters for a given&#xA;motor.  This isn&amp;rsquo;t too critical, as most position mode applications&#xA;don&amp;rsquo;t require the applied torque to be terribly accurate, but in some&#xA;cases it does matter.  When that is the case, there is now a tool that&#xA;can calculate parameters appropriate for entering into moteus.  Read&#xA;on to find out more!&lt;/p&gt;</description>
    </item>
    <item>
      <title>moteus hardware CAN ID filtering</title>
      <link>https://blog.mjbots.com/2025/11/20/moteus-hardware-can-id-filtering/</link>
      <pubDate>Thu, 20 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/11/20/moteus-hardware-can-id-filtering/</guid>
      <description>&lt;p&gt;Recent improvements to &lt;a href=&#34;https://blog.mjbots.com/2025/09/25/improved-performance-for-mjcanfd-usb-1x/&#34;&gt;the&#xA;mjcanfd-usb-1x&lt;/a&gt;&#xA;and &lt;a href=&#34;https://blog.mjbots.com/2025/10/02/pi3hat-firmware-release-2025-09-20/&#34;&gt;the&#xA;pi3hat&lt;/a&gt;&#xA;were stepping stones to improved reliability for long daisy chains of&#xA;moteus controllers.  Another step in that process is the feature I&amp;rsquo;ll&#xA;describe here, hardware CAN ID filtering in the moteus firmware.&#xA;Let&amp;rsquo;s talk about how things used to work, what the problems were and&#xA;how this new feature helps.&lt;/p&gt;</description>
    </item>
    <item>
      <title>moteus_tool --read</title>
      <link>https://blog.mjbots.com/2025/11/13/moteus_tool--read/</link>
      <pubDate>Thu, 13 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/11/13/moteus_tool--read/</guid>
      <description>&lt;p&gt;&lt;code&gt;moteus_tool&lt;/code&gt; has long served as the primary interface to moteus&#xA;controllers from the command line for provisioning and diagnostics,&#xA;especially so when used in headless environments where running a&#xA;graphical tool like tview is not an option.  As anyone who has&#xA;debugged a moteus system from the command line can attest to, finding&#xA;the contents of diagnostic stream channels is annoying at best and&#xA;that is only if you know how to do it.  In short, you have to use&#xA;&lt;code&gt;--console&lt;/code&gt;, and then type some undocumented text incantations .&lt;/p&gt;&#xA;&lt;p&gt;Thus a new feature in &lt;code&gt;moteus_tool&lt;/code&gt;: the &lt;code&gt;--read CHANNEL&lt;/code&gt; command line&#xA;flag, which reads a single instance of an arbitrary diagnostic channel&#xA;from the device, then prints it to the console as JSON formatted&#xA;structured data.  Let&amp;rsquo;s check out what that looks like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>tview python console</title>
      <link>https://blog.mjbots.com/2025/11/06/tview-python-console/</link>
      <pubDate>Thu, 06 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/11/06/tview-python-console/</guid>
      <description>&lt;p&gt;The tview graphical monitoring application has been getting a lot of&#xA;work lately.  First was support for &lt;a href=&#34;https://blog.mjbots.com/2025/10/09/uuid-based-addressing-and-python-multiple-device-support/&#34;&gt;enumerating controllers by&#xA;UUID&lt;/a&gt;,&#xA;then &lt;a href=&#34;https://blog.mjbots.com/2025/10/16/device-fault-monitoring-in-tview/&#34;&gt;monitoring faults and graphically highlighting&#xA;them&lt;/a&gt;&#xA;and then &lt;a href=&#34;https://blog.mjbots.com/2025/10/23/device-fault-text-decoding/&#34;&gt;decoding textual values for fault codes&lt;/a&gt;.  I&amp;rsquo;m&#xA;excited to announce yet another improvement for tview, this one on the&#xA;larger side: an interactive python &lt;a href=&#34;https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop&#34;&gt;REPL&#xA;(read-evaluate-print-loop)&lt;/a&gt;!&#xA;Available now in &lt;a href=&#34;https://pypi.org/project/moteus-gui/&#34;&gt;pypi moteus-gui&#xA;v0.3.93&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The bottom console now has two tabs, the first and default remains the diagnostic console, where you can see what diagnostic messages the devices are emitting and send diagnostic channel commands directly to connected devices.  The new, second tab, is labeled &amp;ldquo;Python&amp;rdquo; and provides access to a fully functional Python evaluation environment with full access to the moteus python library, including asynchronous operations.&lt;/p&gt;&#xA;&lt;figure&gt;&lt;img src=&#34;https://blog.mjbots.com/2025/11/06/tview-python-console/images/tview-python-console-tabs.png&#34;&gt;&#xA;&lt;/figure&gt;&#xA;&#xA;&lt;p&gt;Read on to see how to use it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New moteus documentation page</title>
      <link>https://blog.mjbots.com/2025/10/30/new-moteus-documentation-page/</link>
      <pubDate>Thu, 30 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/10/30/new-moteus-documentation-page/</guid>
      <description>&lt;p&gt;Yesterday I dropped a big update to the official moteus documentation&#xA;that should hopefully improve it across many dimensions.  If you&amp;rsquo;re&#xA;impatient, go to the new URL and check it out:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://mjbots.github.io/moteus/&#34;&gt;https://mjbots.github.io/moteus/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Or read on here to get a feel for the things that have changed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Device fault text decoding</title>
      <link>https://blog.mjbots.com/2025/10/23/device-fault-text-decoding/</link>
      <pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/10/23/device-fault-text-decoding/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a short followup tview feature in the same vein &lt;a href=&#34;https://blog.mjbots.com/2025/10/16/device-fault-monitoring-in-tview/&#34;&gt;as the&#xA;recently announced fault&#xA;monitoring&lt;/a&gt;.&#xA;For various not-too-important technical reasons, the diagnostic method&#xA;moteus uses to report faults in &lt;code&gt;servo_stats.fault&lt;/code&gt; does not include a&#xA;text shorthand like most other enumerations do.  That means that users&#xA;are constantly confronted with things like fault=33, or fault=39.&#xA;Unless they are lucky and know to look in the relevant section of the&#xA;reference, this doesn&amp;rsquo;t do a whole lot of good.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Device fault monitoring in tview</title>
      <link>https://blog.mjbots.com/2025/10/16/device-fault-monitoring-in-tview/</link>
      <pubDate>Thu, 16 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/10/16/device-fault-monitoring-in-tview/</guid>
      <description>&lt;p&gt;When using tview to monitor and control moteus controllers, there have&#xA;been a fair number of limitations and &amp;ldquo;gotchas&amp;rdquo;.  One of the biggest&#xA;for newcomers is the distinction between error checking in the &lt;code&gt;d pos&lt;/code&gt;&#xA;command, and faults that can occur during position mode itself.  When&#xA;using the diagnostic protocol and issuing a command, for those&#xA;commands which direct moteus to perform some control action, the&#xA;controller will respond with an &amp;ldquo;OK&amp;rdquo; as long as the command itself is&#xA;syntactically correct.  Only then is it submitted to the online&#xA;control loop, after which faults resulting from the command will&#xA;manifest as the controller reporting a mode of kFault or 1, with a&#xA;corresponding fault code.  In the diagnostic tree view, those are&#xA;shown as &lt;code&gt;servo_stats.mode&lt;/code&gt; and &lt;code&gt;servo_stats.fault&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;So, what many newcomers do is take a moteus board fresh from the factory, which starts with &lt;code&gt;servopos.position_min=-0.01&lt;/code&gt; and &lt;code&gt;servopos.position_max=0.01&lt;/code&gt;, and do the following in order:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Issue a totally reasonable command like &lt;code&gt;d pos nan 0 nan&lt;/code&gt; to command the motor to hold position&lt;/li&gt;&#xA;&lt;li&gt;Observe an OK come back&lt;/li&gt;&#xA;&lt;li&gt;Don&amp;rsquo;t see the motor do anything&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;What those users don&amp;rsquo;t realize is that in order to see why moteus doesn&amp;rsquo;t move, you need to look at the current reported mode and fault, not at the response over the diagnostic channel.&lt;/p&gt;&#xA;&lt;p&gt;Here I&amp;rsquo;d like to describe a solution to this problem that hopefully makes tview much easier in general with fewer instances of confusion resulting.&lt;/p&gt;</description>
    </item>
    <item>
      <title>UUID based addressing and python multiple device support</title>
      <link>https://blog.mjbots.com/2025/10/09/uuid-based-addressing-and-python-multiple-device-support/</link>
      <pubDate>Thu, 09 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/10/09/uuid-based-addressing-and-python-multiple-device-support/</guid>
      <description>&lt;p&gt;I&amp;rsquo;m excited to announce a significant usability improvement for all&#xA;moteus controllers, command line tools and the python library!  If&#xA;your moteus controllers are on &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/0.1-20250920&#34;&gt;firmware version&#xA;2025-09-20&lt;/a&gt;&#xA;or newer and your moteus client tools are at &lt;a href=&#34;https://pypi.org/project/moteus/&#34;&gt;0.3.91 or&#xA;newer&lt;/a&gt;, (and if you are using a&#xA;pi3hat, it is on &lt;a href=&#34;https://github.com/mjbots/pi3hat/releases/tag/0.1-20250920&#34;&gt;firmware 2025-09-20 or&#xA;newer&lt;/a&gt;)&#xA;there are some big improvements that you transparently get:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;You no longer need to assign unique CAN IDs before daisy chaining controllers&lt;/li&gt;&#xA;&lt;li&gt;The python transport lets client programs transparently operate across multiple CAN-FD interfaces simultaneously&lt;/li&gt;&#xA;&lt;li&gt;tview will automatically open all controllers attached to all CAN-FD interfaces on the computer&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s dig into what this looks like from the command line, tview and&#xA;what the practical constraints are.&lt;/p&gt;</description>
    </item>
    <item>
      <title>pi3hat firmware release 2025-09-20</title>
      <link>https://blog.mjbots.com/2025/10/02/pi3hat-firmware-release-2025-09-20/</link>
      <pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2025/10/02/pi3hat-firmware-release-2025-09-20/</guid>
      <description>&lt;p&gt;It has been a minute since there has been a pi3hat firmware release,&#xA;but we have a new one out now, that fixes a longtime usability issue&#xA;with the pi3hat as well as improves its ability to drive busses with&#xA;many devices.  The release, &lt;a href=&#34;https://github.com/mjbots/pi3hat/releases/tag/0.1-20250920&#34;&gt;2025-09-20 can be found on&#xA;github&lt;/a&gt;&#xA;with the source and firmware elf.  If you&amp;rsquo;re not running into&#xA;problems, there is no real need to upgrade, but read on to see if it&#xA;is something you might be interested in.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
