<?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, 10 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://blog.mjbots.com/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>cargo add moteus</title>
      <link>https://blog.mjbots.com/2026/09/10/cargo-add-moteus/</link>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/09/10/cargo-add-moteus/</guid>
      <description>&lt;p&gt;moteus has long &lt;a href=&#34;https://blog.mjbots.com/2020/12/09/pip3-install-moteus/&#34;&gt;supported python&lt;/a&gt; and &lt;a href=&#34;https://blog.mjbots.com/2023/09/19/c-client-bindings-for-moteus/&#34;&gt;C++&lt;/a&gt; client side libraries for commanding and monitoring controllers over a variety of CAN-FD transports.  Given that I&amp;rsquo;m not &lt;em&gt;completely&lt;/em&gt; behind the times, it is about time to add &lt;a href=&#34;https://rust-lang.org/&#34;&gt;rust&lt;/a&gt; support to that list.&lt;/p&gt;&#xA;&lt;p&gt;If you&amp;rsquo;re reading this, you probably don&amp;rsquo;t need to hear an elevator pitch for rust.  If you have been under a rock for the last 5 years, it is a systems level language with a strong type system and focus on safety, i.e. many classes of memory errors or threading race conditions are hard if not impossible to make.&lt;/p&gt;</description>
    </item>
    <item>
      <title>UART command and control for moteus</title>
      <link>https://blog.mjbots.com/2026/08/27/uart-command-and-control-for-moteus/</link>
      <pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/08/27/uart-command-and-control-for-moteus/</guid>
      <description>&lt;p&gt;It has been quite some time since moteus gained the ability to be controlled or monitored over a different communication channel.  In fact, the last time was with the permanent switch from RS-485 to CAN-FD way back in &lt;a href=&#34;https://blog.mjbots.com/2019/12/02/moteus-controller-r4-1/&#34;&gt;2019 with the first moteus-r4&lt;/a&gt;.  So, I&amp;rsquo;m happy to share that as of &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/firmware%2Fv1.1.2&#34;&gt;firmware 1.1.2&lt;/a&gt; moteus now has a second supported communication transport out of the box, logic level UART!&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-uart&#34;&gt;Why UART?&lt;/h2&gt;&#xA;&lt;p&gt;Often it is useful to deploy moteus in a system where it is controlled and monitored by a microcontroller, there is only a single moteus controller, and the total distance between the microcontroller and the moteus is short and without significant electromagnetic interference (EMI).  In those cases, using a logic level UART on the microcontroller can save the additional complexity and cost of integrating a CAN-FD controller and transceiver into the host system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>moteus-n1 gate drive strength fix</title>
      <link>https://blog.mjbots.com/2026/08/20/moteus-n1-gate-drive-strength-fix/</link>
      <pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/08/20/moteus-n1-gate-drive-strength-fix/</guid>
      <description>&lt;p&gt;Sometimes a bug report comes in that is simple.  Sometimes a bug report comes in that is complex.  This is the story of a bug report that looked very simple, but in the end was actually much more complex than I had initially expected.  Further, it likely contributed to electrical damage on many deployed moteus boards, which is definitely not something I aim to do!  Read on to learn more.&lt;/p&gt;</description>
    </item>
    <item>
      <title>XT90H-M now at mjbots.com</title>
      <link>https://blog.mjbots.com/2026/07/16/xt90h-m/</link>
      <pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/07/16/xt90h-m/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve got another very short post today, a new product announcement, the XT90H-M from AMass:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://mjbots.com/products/xt90h-m&#34;&gt;&lt;img src=&#34;https://blog.mjbots.com/2026/07/16/xt90h-m/images/xt90h-m.jpg&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This is an XT90H-M, which mates to the&#xA;&lt;a href=&#34;https://mjbots.com/products/xt90s-f&#34;&gt;XT90F-S&lt;/a&gt; that was already&#xA;carried.  It does not mate to any mjbots products directly, but can be handy if you are building harnessing in a system.&lt;/p&gt;</description>
    </item>
    <item>
      <title>mjuart</title>
      <link>https://blog.mjbots.com/2026/06/25/mjuart/</link>
      <pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/06/25/mjuart/</guid>
      <description>&lt;p&gt;Here&amp;rsquo;s a small new addition to the mjbots product portfolio, the &lt;a href=&#34;https://mjbots.com/products/mjuart&#34;&gt;mjuart - a FT231X breakout board&lt;/a&gt;, now available at mjbots.com.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://mjbots.com/products/mjuart&#34;&gt;&lt;img src=&#34;https://blog.mjbots.com/2026/06/25/mjuart/images/mjuart-r2-corner.jpg&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This USB to 3.3V level UART adapter includes appropriate cables to connect to all of the possible auxiliary ports on each moteus controller:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;moteus-r4 ABS&lt;/strong&gt;: A ZH4 to ZH4 cable with RX/TX swapped&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;aux1&lt;/strong&gt;: A ZH4 to GH8 cable&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;aux2&lt;/strong&gt;: A ZH4 to GH7 cable&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The FT231X can communicate without problems at up to 3 Mbps, which lets you capture &lt;a href=&#34;https://blog.mjbots.com/2026/01/01/capturing-full-rate-debug-data-from-moteus/&#34;&gt;high rate debug information from a moteus controller&lt;/a&gt;.  It also works just fine with the yet-to-be-announced UART based control at its default baud rate of 921600 (or up to 3Mbps if you like living on the edge).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Host side SPMSM simulation for regression tests</title>
      <link>https://blog.mjbots.com/2026/06/18/host-side-spmsm-simulation-for-regression-tests/</link>
      <pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/06/18/host-side-spmsm-simulation-for-regression-tests/</guid>
      <description>&lt;p&gt;When developing features for the moteus controller, testing on actual hardware has long been the primary way that new motor control features were validated.  That includes &amp;ldquo;hero&amp;rdquo; testing on the lab bench, and the hardware-in-the-loop (HIL) &lt;a href=&#34;https://blog.mjbots.com/2020/08/19/initial-dynamometer-assembly/&#34;&gt;dynamometer fixture&lt;/a&gt; used to &lt;a href=&#34;https://github.com/mjbots/moteus/blob/main/utils/firmware_validate.py&#34;&gt;validate each new firmware release&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;While those are valuable techniques, dynamometer testing is not something that you can do rapidly, is limited to validating a small number of things at a time, and has a non-zero fraction of false positive failures due to unmodeled effects.  To enable more rapid feature development, I wanted to test a lot of what was validated on the dynamometer fixture in a host side simulation.  This would provide a lot of benefits:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It could run much faster than real time&lt;/li&gt;&#xA;&lt;li&gt;100% deterministic&lt;/li&gt;&#xA;&lt;li&gt;Multiple instances can run in parallel&lt;/li&gt;&#xA;&lt;li&gt;Agents can use it as success criteria for validating development&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Read on to see how it was done:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Limiting the maximum regen power in moteus</title>
      <link>https://blog.mjbots.com/2026/06/11/limiting-the-maximum-regen-power-in-moteus/</link>
      <pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/06/11/limiting-the-maximum-regen-power-in-moteus/</guid>
      <description>&lt;p&gt;When using a servo controller, any time the motor needs to either decelerate or resist an external torque, the controller may &amp;ldquo;regenerate&amp;rdquo; energy that has to go somewhere.  By default, moteus will apply that energy back to the input bus, potentially charging a battery if that is used as the power source.  When the input voltage rises too high, either because the battery impedance is high or because a PSU is as the source, then moteus will apply &lt;a href=&#34;https://blog.mjbots.com/2019/11/04/flux-braking-with-the-moteus-controller/&#34;&gt;&amp;ldquo;flux braking&amp;rdquo;&lt;/a&gt; to dissipate the energy in the windings of the motor instead of allowing the voltage to grow without bounds.  This often works great, but in some common scenarios flux braking by itself can be inadequate.  In order to operate stably, flux braking need to use a filtered version of the bus voltage.  This means that if the bus voltage rises fast enough, the maximum configured voltage can be exceeded before flux braking has had a chance to actually begin dissipating significant energy in the motor.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RLS Orbis SPI support</title>
      <link>https://blog.mjbots.com/2026/06/04/rls-orbis-spi-support/</link>
      <pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/06/04/rls-orbis-spi-support/</guid>
      <description>&lt;p&gt;Hot on the heels of &lt;a href=&#34;https://blog.mjbots.com/2026/02/05/biss-c-encoder-support/&#34;&gt;BiSS-C encoder&#xA;support&lt;/a&gt;&#xA;intended for high end applications, I am excited to announce that&#xA;moteus now supports the &lt;a href=&#34;https://www.rls.si/eng/orbis-true-absolute-rotary-encoder&#34;&gt;RLS&#xA;Orbis&lt;/a&gt; SPI&#xA;protocol for lower-end systems as of &lt;a href=&#34;https://github.com/mjbots/moteus/releases/tag/firmware%2Fv1.0.0&#34;&gt;firmware version 1.0.0&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://www.rls.si/eng/orbis-true-absolute-rotary-encoder&#34;&gt;RLS Orbis&lt;/a&gt; is an absolute magnetic encoder suited for use with diametric ring magnets and can be configured to use a number of different communication protocols.  If you have a moteus-n1 or moteus-x1, then the newly released BiSS-C support already lets you communicate with them.  However that left out the moteus-c1, which does provide the 5V necessary for an Orbis to function, but does not have a built-in RS422 transceiver.&lt;/p&gt;</description>
    </item>
    <item>
      <title>moteus firmware version 1.0.0!</title>
      <link>https://blog.mjbots.com/2026/05/28/moteus-firmware-version-1.0.0/</link>
      <pubDate>Thu, 28 May 2026 00:00:00 +0000</pubDate>
      <guid>https://blog.mjbots.com/2026/05/28/moteus-firmware-version-1.0.0/</guid>
      <description>&lt;p&gt;The first public version of moteus-r4 was announced &lt;a href=&#34;https://blog.mjbots.com/2019/12/02/moteus-controller-r4-1/&#34;&gt;way back in 2019&lt;/a&gt;.  Since that time, there have been many new board variants and innumerable additional features and capabilities.  Amazingly, through all of that, the CAN-FD wire protocol has actually remained backwards compatible the entire time!  It is still possible to monitor that very first moteus with tview, and to command it using the register protocol with appropriate configuration.  Many projects hem and haw about releasing a version 1.0 of their software, justifying breaking things from a users perspective over and over again.  Here, we&amp;rsquo;ve actually maintained nearly complete backwards compatibility despite having a pure time based release versioning scheme.&lt;/p&gt;</description>
    </item>
    <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>
  </channel>
</rss>
