<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://ulairii.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://ulairii.github.io/" rel="alternate" type="text/html" /><updated>2026-04-30T02:17:42+00:00</updated><id>https://ulairii.github.io/feed.xml</id><title type="html">Run Wang</title><subtitle>PhD Student at Clemson University</subtitle><author><name>Run Wang</name><email>runw@clemson.edu</email><uri>https://ulairii.github.io/</uri></author><entry><title type="html">Building CARLA (v0.9.15) from Source on Windows 11 with Visual Studio 2022: My Personal Guide &amp;amp; Tips</title><link href="https://ulairii.github.io/posts/2026/02/carla-install-windows11/" rel="alternate" type="text/html" title="Building CARLA (v0.9.15) from Source on Windows 11 with Visual Studio 2022: My Personal Guide &amp;amp; Tips" /><published>2026-02-20T00:00:00+00:00</published><updated>2026-02-20T00:00:00+00:00</updated><id>https://ulairii.github.io/posts/2026/02/carla-install-windows11</id><content type="html" xml:base="https://ulairii.github.io/posts/2026/02/carla-install-windows11/"><![CDATA[<p>Building <a href="https://carla.org/">CARLA</a> from source on Windows is notoriously painful — outdated guides, cryptic errors, and hours of compilation. This post is based on <a href="https://wambitz.github.io/tech-blog/carla/python/c++/simulation/autonomous-vehicles/2024/09/29/carla-win11.html">this excellent guide by wambitz</a>, combined with my own personal experience, additional fixes, and troubleshooting tips for issues I ran into that weren’t covered elsewhere.</p>

<blockquote>
  <p><strong>Credit:</strong> Original guide by <a href="https://wambitz.github.io/tech-blog/">wambitz</a>. I’m reposting the key steps here and layering in my own notes.</p>
</blockquote>

<hr />

<h2 id="table-of-contents">Table of Contents</h2>

<ol>
  <li><a href="#why-this-guide">Why This Guide?</a></li>
  <li><a href="#prerequisites">Prerequisites</a></li>
  <li><a href="#setting-up-the-environment">Setting Up the Environment</a></li>
  <li><a href="#build-unreal-engine-4-for-carla">Build Unreal Engine 4 for CARLA</a></li>
  <li><a href="#building-carla-from-source">Building CARLA from Source</a></li>
  <li><a href="#launching-the-carla-simulator">Launching the CARLA Simulator</a></li>
  <li><a href="#running-the-carla-client">Running the CARLA Client</a></li>
  <li><a href="#my-personal-tips--fixes">My Personal Tips &amp; Fixes</a></li>
</ol>

<hr />

<h2 id="why-this-guide">Why This Guide?</h2>

<ul>
  <li><strong>Up-to-Date:</strong> Tailored for CARLA v0.9.15, Windows 11, and Visual Studio 2022.</li>
  <li><strong>Time-Saving:</strong> Avoid pitfalls that cost me hours or days.</li>
  <li><strong>Personal Fixes:</strong> Includes troubleshooting for real errors I hit beyond the original guide.</li>
</ul>

<hr />

<h2 id="prerequisites">Prerequisites</h2>

<h3 id="system-requirements">System Requirements</h3>

<blockquote>
  <p><strong>NOTE:</strong> The build can take <strong>5+ hours</strong> on the reference hardware below.</p>
</blockquote>

<table>
  <thead>
    <tr>
      <th>Component</th>
      <th>Requirement</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>OS</td>
      <td>64-bit Windows 10 or 11</td>
    </tr>
    <tr>
      <td>CPU</td>
      <td>Quad-core Intel or AMD, 2.5 GHz or faster</td>
    </tr>
    <tr>
      <td>RAM</td>
      <td>32 GB (recommended)</td>
    </tr>
    <tr>
      <td>GPU</td>
      <td>Dedicated GPU with ≥ 6 GB VRAM (8 GB recommended)</td>
    </tr>
    <tr>
      <td>Disk Space</td>
      <td>~165 GB total (CARLA ~32 GB + UE4 ~133 GB)</td>
    </tr>
    <tr>
      <td>TCP Ports</td>
      <td>2000 and 2001 must be open</td>
    </tr>
  </tbody>
</table>

<h3 id="software-requirements">Software Requirements</h3>

<blockquote>
  <p><strong>IMPORTANT:</strong> If you have multiple Python versions installed, make sure <strong>Python 3.8</strong> is first in your PATH. Python 3.10 will not work. <strong>Do NOT use a virtual environment</strong> for building the CARLA package.</p>
</blockquote>

<p>Required tools:</p>

<table>
  <thead>
    <tr>
      <th>Tool</th>
      <th>Version / Notes</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Git</td>
      <td>Latest</td>
    </tr>
    <tr>
      <td>CMake</td>
      <td><strong>&gt;= 3.15 and &lt; 3.50</strong> — e.g., <a href="https://cmake.org/files/v3.28/">3.28.6</a> is safe</td>
    </tr>
    <tr>
      <td>Make</td>
      <td><strong>3.81 strictly</strong></td>
    </tr>
    <tr>
      <td>7-Zip</td>
      <td>Latest</td>
    </tr>
    <tr>
      <td>Python</td>
      <td><strong>3.8 (64-bit only)</strong></td>
    </tr>
    <tr>
      <td>Visual Studio</td>
      <td><strong>2022</strong> (Community Edition is sufficient)</td>
    </tr>
    <tr>
      <td>Unreal Engine</td>
      <td><strong>4.26 CARLA fork</strong> (see below)</td>
    </tr>
  </tbody>
</table>

<blockquote>
  <p>⚠️ <strong>CMake Version Warning:</strong> Use CMake <strong>&gt;= 3.15</strong> but <strong>&lt; 3.50</strong>. CMake 3.50+ removed backward compatibility that CARLA’s build scripts rely on and will cause cryptic errors later. Download older releases from <a href="https://cmake.org/files/">cmake.org/files</a>.</p>
</blockquote>

<p>Ensure all tools are added to your system <strong>PATH</strong>.</p>

<h3 id="python-dependencies">Python Dependencies</h3>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">pip</span> <span class="kd">install</span> <span class="na">--upgrade </span><span class="kd">pip</span>
<span class="kd">pip</span> <span class="kd">install</span> <span class="na">--user </span><span class="kd">setuptools</span>
<span class="kd">pip</span> <span class="kd">install</span> <span class="na">--user </span><span class="kd">wheel</span>
</code></pre></div></div>

<hr />

<h2 id="setting-up-the-environment">Setting Up the Environment</h2>

<h3 id="install-dependencies">Install Dependencies</h3>

<p><strong>Git</strong> — verify:</p>
<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">git</span> <span class="na">--version
</span></code></pre></div></div>

<p><strong>CMake</strong> (must be &gt;= 3.15 and &lt; 3.50):</p>
<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">cmake</span> <span class="na">--version
</span><span class="c">rem Must show &gt;= 3.15 and &lt; 3.50</span>
</code></pre></div></div>

<p><strong>Make</strong> via Chocolatey (requires admin):</p>
<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">choco</span> <span class="kd">install</span> <span class="kd">make</span>
<span class="kd">make</span> <span class="na">--version
</span></code></pre></div></div>

<p><strong>7-Zip</strong> — download from <a href="https://www.7-zip.org/">7-zip.org</a>.</p>

<p><strong>Python 3.8 (64-bit)</strong> — download from <a href="https://www.python.org/downloads/release/python-380/">python.org</a>. Add to PATH during installation:</p>
<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">python</span> <span class="na">--version
</span><span class="kd">pip</span> <span class="na">--version
</span></code></pre></div></div>

<h3 id="install-visual-studio-2022">Install Visual Studio 2022</h3>

<blockquote>
  <p><strong>IMPORTANT:</strong> Do not have multiple Visual Studio versions installed simultaneously — even uninstalled remnants can cause conflicts.</p>
</blockquote>

<p>Download <a href="https://visualstudio.microsoft.com/vs/">Visual Studio 2022</a> and select:</p>

<p><strong>Workloads:</strong></p>
<ul>
  <li>Desktop Development with C++</li>
  <li>.NET Desktop Development</li>
</ul>

<p><strong>Individual Components:</strong></p>
<ul>
  <li>Windows 10 SDK (use the latest Windows 10 SDK even on Windows 11)</li>
  <li>C++ CMake Tools for Windows</li>
</ul>

<p>Complete installation and <strong>restart your computer</strong>.</p>

<hr />

<h2 id="build-unreal-engine-4-for-carla">Build Unreal Engine 4 for CARLA</h2>

<blockquote>
  <p><strong>NOTE:</strong> You need your GitHub account linked to your Epic Games account to access the CARLA UE4 fork. Follow <a href="https://www.unrealengine.com/en-US/ue-on-github">these instructions</a>.</p>
</blockquote>

<blockquote>
  <p><strong>Keep the path short</strong> (e.g., <code class="language-plaintext highlighter-rouge">C:\CarlaUE4</code>). Long paths cause errors in <code class="language-plaintext highlighter-rouge">Setup.bat</code>.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">git</span> <span class="kd">clone</span> <span class="na">--depth </span><span class="m">1</span> <span class="na">-b </span><span class="kd">carla</span> <span class="kd">https</span>://github.com/CarlaUnreal/UnrealEngine.git <span class="kd">CarlaUE4</span>
<span class="nb">cd</span> <span class="kd">CarlaUE4</span>
</code></pre></div></div>

<p>Run the setup scripts:</p>

<blockquote>
  <p><strong>NOTE:</strong> If a Windows pop-up about an incompatible framework appears, select <strong>Download</strong>.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">Setup</span>.bat
<span class="kd">GenerateProjectFiles</span>.bat
</code></pre></div></div>

<h3 id="compile-the-engine">Compile the Engine</h3>

<blockquote>
  <p><strong>NOTE:</strong> This step takes <strong>several hours</strong> (5+ hours on the reference machine).</p>
</blockquote>

<ol>
  <li>Open <code class="language-plaintext highlighter-rouge">UE4.sln</code> in <code class="language-plaintext highlighter-rouge">C:\CarlaUE4</code> with Visual Studio 2022.</li>
  <li>Set <strong>Configuration:</strong> <code class="language-plaintext highlighter-rouge">Development Editor</code> and <strong>Platform:</strong> <code class="language-plaintext highlighter-rouge">Win64</code>.</li>
  <li>In Solution Explorer, right-click <strong>UE4</strong> → <strong>Build</strong>.</li>
  <li>After the build, verify by running <code class="language-plaintext highlighter-rouge">Engine\Binaries\Win64\UE4Editor.exe</code>.</li>
</ol>

<hr />

<h2 id="building-carla-from-source">Building CARLA from Source</h2>

<h3 id="clone-the-carla-repository">Clone the CARLA Repository</h3>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">git</span> <span class="kd">clone</span> <span class="kd">https</span>://github.com/carla<span class="na">-simulator/carla</span>.git <span class="na">-b </span><span class="m">0</span>.9.15 <span class="kd">carla</span><span class="o">-</span><span class="m">0</span>.9.15
<span class="nb">cd</span> <span class="kd">carla</span><span class="o">-</span><span class="m">0</span>.9.15
</code></pre></div></div>

<h3 id="download-assets">Download Assets</h3>

<blockquote>
  <p><strong>NOTE:</strong> If assets are missing at runtime, <code class="language-plaintext highlighter-rouge">make launch-only</code> will crash with a segmentation fault.</p>
</blockquote>

<p>Before running <code class="language-plaintext highlighter-rouge">Update.bat</code>, you must apply <strong>two patches</strong> to fix known bugs in the script:</p>

<p><strong>Patch 1 — Fix the broken download URL</strong></p>

<p>The original S3 URL is dead for CARLA 0.9.15 (asset ID <code class="language-plaintext highlighter-rouge">20231108_c5101a5</code>). Open <code class="language-plaintext highlighter-rouge">C:\carla-0.9.15\Update.bat</code> and replace:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">set</span> <span class="kd">CONTENT_LINK</span><span class="o">=</span><span class="kd">http</span>://carla<span class="na">-assets</span>.s3.amazonaws.com/<span class="nv">%CONTENT_ID%</span>.tar.gz
</code></pre></div></div>

<p>with:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">set</span> <span class="kd">CONTENT_LINK</span><span class="o">=</span><span class="kd">https</span>://carla<span class="na">-assets</span>.s3.us<span class="na">-east</span><span class="o">-</span><span class="m">005</span>.backblazeb2.com/<span class="nv">%CONTENT_ID%</span>.tar.gz
</code></pre></div></div>

<p><strong>Patch 2 — Fix the 7-Zip command path</strong></p>

<p><code class="language-plaintext highlighter-rouge">Update.bat</code> calls <code class="language-plaintext highlighter-rouge">7zip</code>, but the actual executable is <code class="language-plaintext highlighter-rouge">7z.exe</code>. Without this fix, extraction falls back to PowerShell’s <code class="language-plaintext highlighter-rouge">Expand-Archive</code>, which does not support <code class="language-plaintext highlighter-rouge">.tar.gz</code> and will throw:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Expand-Archive : .gz is not a supported archive file format.
</code></pre></div></div>

<p>Find the line calling <code class="language-plaintext highlighter-rouge">7zip x ...</code> and replace <code class="language-plaintext highlighter-rouge">7zip</code> with the full path:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="s2">"C:\Program Files (x86)\7-Zip\7z.exe"</span> <span class="kd">x</span> ...
</code></pre></div></div>

<blockquote>
  <p>If you installed 7-Zip elsewhere, adjust the path accordingly. Alternatively, add <code class="language-plaintext highlighter-rouge">C:\Program Files (x86)\7-Zip</code> to your system PATH so that <code class="language-plaintext highlighter-rouge">7z</code> is recognized globally.</p>
</blockquote>

<p>After applying both patches, run:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">Update</span>.bat
</code></pre></div></div>

<h3 id="install-python-packages">Install Python Packages</h3>

<blockquote>
  <p><strong>IMPORTANT:</strong> Do NOT compile CARLA inside a virtual environment — this triggers a <code class="language-plaintext highlighter-rouge">B2.EXE</code> error. Use Python 3.8 system-wide.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">python</span> <span class="na">--version
</span><span class="c">rem Must output: Python 3.8.XX</span>

<span class="kd">pip</span> <span class="kd">install</span> <span class="kd">wheel</span>
<span class="kd">pip</span> <span class="kd">list</span>
<span class="kd">pip</span> <span class="na">--version
</span></code></pre></div></div>

<h3 id="compile-the-python-api">Compile the Python API</h3>

<blockquote>
  <p><strong>NOTES:</strong></p>
  <ul>
    <li>The build defaults to Visual Studio 2019. Since we’re on VS 2022, we must specify the generator explicitly.</li>
    <li>Python 3.8 must be the top version in your system PATH.</li>
    <li>This takes around <strong>30 minutes</strong>.</li>
  </ul>
</blockquote>

<blockquote>
  <p>❗ <strong>You CANNOT run this in a regular <code class="language-plaintext highlighter-rouge">cmd</code> or PowerShell terminal.</strong> You must use the <strong>x64 Native Tools Command Prompt for VS 2022</strong>, which sets up the correct compiler environment variables. Running in a regular terminal causes cryptic build failures.</p>

  <p><strong>How to open it:</strong> Start menu → type <code class="language-plaintext highlighter-rouge">x64</code> → select <strong>“x64 Native Tools Command Prompt for VS 2022”</strong></p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> <span class="kd">C</span>:\carla<span class="o">-</span><span class="m">0</span>.9.15
<span class="kd">make</span> <span class="kd">PythonAPI</span> <span class="kd">GENERATOR</span><span class="o">=</span><span class="s2">"Visual Studio 17 2022"</span>
</code></pre></div></div>

<hr />

<h3 id="-troubleshooting-boost-linker-error-wrong-msvc-toolset">🔧 Troubleshooting: Boost Linker Error (Wrong MSVC Toolset)</h3>

<blockquote>
  <p>⚠️ <strong>Error:</strong></p>
  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc142-mt-x64-1_80.lib'
</code></pre></div>  </div>
</blockquote>

<p><strong>Cause:</strong> Boost was compiled with MSVC 14.2 (VS 2019) but you’re using MSVC 14.3 (VS 2022).</p>

<p><strong>Fix:</strong> Delete the existing Boost build and reinstall with the correct toolset:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">rem Delete the current Boost installation</span>
<span class="kd">rm</span> <span class="na">-r </span>.\Build\boost<span class="o">-</span><span class="m">1</span>.80.0<span class="na">-install</span>\

<span class="c">rem Reinstall with the correct toolset (-j 32 = parallel jobs, adjust to your CPU)</span>
.\Util\InstallersWin\install_boost.bat <span class="na">--build-dir </span><span class="s2">"C:\carla-0.9.15\Build\"</span> <span class="na">--toolset </span><span class="kd">msvc</span><span class="o">-</span><span class="m">14</span>.3 <span class="na">--version </span><span class="m">1</span>.80.0 <span class="na">-j </span><span class="m">32</span>

<span class="c">rem Rebuild the Python API</span>
<span class="kd">make</span> <span class="kd">PythonAPI</span> <span class="kd">GENERATOR</span><span class="o">=</span><span class="s2">"Visual Studio 17 2022"</span>
</code></pre></div></div>

<hr />

<h3 id="-troubleshooting-b2exe-boost-build-error-toolset-mismatch-in-scripts">🔧 Troubleshooting: <code class="language-plaintext highlighter-rouge">b2.exe</code> Boost Build Error (Toolset Mismatch in Scripts)</h3>

<blockquote>
  <p>⚠️ <strong>Error:</strong></p>
  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>-[install_boost]: [B2 ERROR] An error ocurred while installing using "b2.exe".
</code></pre></div>  </div>
</blockquote>

<p><strong>Cause:</strong> Boost 1.80’s <code class="language-plaintext highlighter-rouge">bootstrap.bat</code> auto-detects <code class="language-plaintext highlighter-rouge">vc143</code>, but CARLA’s build scripts hardcode <code class="language-plaintext highlighter-rouge">vc141</code>/<code class="language-plaintext highlighter-rouge">vc142</code> in two places.</p>

<p><strong>Fix:</strong> Update the toolset to <code class="language-plaintext highlighter-rouge">vc143</code> in two files:</p>

<ol>
  <li><code class="language-plaintext highlighter-rouge">Util\BuildTools\Windows.mk</code> — around <strong>line 75</strong>, change <code class="language-plaintext highlighter-rouge">vc141</code> or <code class="language-plaintext highlighter-rouge">vc142</code> to <code class="language-plaintext highlighter-rouge">vc143</code>.</li>
  <li><code class="language-plaintext highlighter-rouge">Util\InstallersWin\install_boost.bat</code> — around <strong>line 109</strong>, change the same.</li>
</ol>

<p>Then retry:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">make</span> <span class="kd">PythonAPI</span> <span class="kd">GENERATOR</span><span class="o">=</span><span class="s2">"Visual Studio 17 2022"</span>
</code></pre></div></div>

<blockquote>
  <p><em>Credit: fix originally identified by <a href="https://github.com/carla-simulator/carla/issues/21">ThibaultFy</a> (Aug 2021).</em></p>
</blockquote>

<hr />

<h3 id="-troubleshooting-zlib-download-failure-broken-url">🔧 Troubleshooting: zlib Download Failure (Broken URL)</h3>

<blockquote>
  <p>⚠️ <strong>Error:</strong></p>
  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[install_zlib]: Retrieving zlib.
Exception calling "DownloadFile" ... (404) Not Found.
[install_zlib]: [CMAKE ERROR] An error ocurred while executing cmake command.
</code></pre></div>  </div>
</blockquote>

<p><strong>Cause:</strong> <code class="language-plaintext highlighter-rouge">zlib.net</code> no longer hosts the file; the backup URL returns a <code class="language-plaintext highlighter-rouge">301</code> redirect that PowerShell’s <code class="language-plaintext highlighter-rouge">WebClient</code> won’t follow.</p>

<p><strong>Fix:</strong> Open <code class="language-plaintext highlighter-rouge">C:\carla-0.9.15\Util\InstallersWin\install_zlib.bat</code>, find the line with <code class="language-plaintext highlighter-rouge">ZLIB_REPO</code> (containing <code class="language-plaintext highlighter-rouge">zlib.net</code>) and replace it with:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">set</span> <span class="kd">ZLIB_REPO</span><span class="o">=</span><span class="kd">https</span>://github.com/madler/zlib/archive/refs/tags/v<span class="nv">%ZLIB_VERSION%</span>.zip
</code></pre></div></div>

<p>Clean up the half-created folders and retry:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">rmdir</span> <span class="na">/s /q </span><span class="kd">Build</span>\zlib<span class="na">-source
</span><span class="nb">rmdir</span> <span class="na">/s /q </span><span class="kd">Build</span>\zlib<span class="na">-install
</span><span class="nb">del</span> <span class="na">/q </span><span class="kd">Build</span>\zlib<span class="o">-</span><span class="m">1</span>.2.13.zip

<span class="kd">make</span> <span class="kd">PythonAPI</span> <span class="kd">GENERATOR</span><span class="o">=</span><span class="s2">"Visual Studio 17 2022"</span>
</code></pre></div></div>

<hr />

<h3 id="-troubleshooting-cmake-too-new-compatibility-error">🔧 Troubleshooting: CMake Too New (Compatibility Error)</h3>

<blockquote>
  <p>⚠️ <strong>Error:</strong></p>
  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Compatibility with CMake &lt; 3.5 has been removed from CMake.
[install_zlib]: [CMAKE ERROR] An error ocurred while executing cmake command.
</code></pre></div>  </div>
</blockquote>

<p><strong>Cause:</strong> CMake ≥ 3.50 dropped backward compatibility that CARLA’s <code class="language-plaintext highlighter-rouge">CMakeLists.txt</code> requires.</p>

<p><strong>Fix:</strong> Downgrade to CMake <strong>&gt;= 3.15 and &lt; 3.50</strong> (e.g., <a href="https://cmake.org/files/v3.28/">3.28.6</a>). Verify after installing:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">cmake</span> <span class="na">--version
</span><span class="c">rem Must show &gt;= 3.15 and &lt; 3.50</span>
</code></pre></div></div>

<p>Then clean up and retry <code class="language-plaintext highlighter-rouge">make PythonAPI</code> as above.</p>

<hr />

<h3 id="compile-the-carla-server">Compile the CARLA Server</h3>

<blockquote>
  <p><strong>NOTE:</strong> This step takes <strong>2+ hours</strong>.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">make</span> <span class="kd">CarlaUE4Editor</span> <span class="kd">GENERATOR</span><span class="o">=</span><span class="s2">"Visual Studio 17 2022"</span>
</code></pre></div></div>

<p>Output files will be created at: <code class="language-plaintext highlighter-rouge">C:\carla-0.9.15\PythonAPI\carla\dist</code></p>

<hr />

<h3 id="-troubleshooting-osm2odr-cmake-x64-path-error">🔧 Troubleshooting: OSM2ODR CMake “x64” Path Error</h3>

<blockquote>
  <p>⚠️ <strong>Error:</strong></p>
  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CMake Error: The source directory ".../Build/osm2odr-visualstudio/x64" does not exist.
Ignoring extra path from command line: "...\Build\om2odr-source""
</code></pre></div>  </div>
</blockquote>

<p><strong>Cause:</strong> The script passes <code class="language-plaintext highlighter-rouge">x64</code> as a positional argument instead of an architecture flag, so CMake misinterprets it as the source directory.</p>

<p><strong>Fix:</strong> Open <code class="language-plaintext highlighter-rouge">C:\carla-0.9.15\Util\BuildTools\BuildOSM2ODR.bat</code>, find the CMake configure line containing <code class="language-plaintext highlighter-rouge">-G %GENERATOR% %PLATFORM%</code>, and change <code class="language-plaintext highlighter-rouge">%PLATFORM%</code> to <code class="language-plaintext highlighter-rouge">-A x64</code>:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">cmake</span> <span class="na">-G </span><span class="nv">%GENERATOR%</span> <span class="na">-A </span><span class="kd">x64</span><span class="se">^
</span></code></pre></div></div>

<p>Clean the broken dirs and retry:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">rmdir</span> <span class="na">/s /q </span><span class="kd">Build</span>\osm2odr<span class="na">-visualstudio
</span><span class="nb">rmdir</span> <span class="na">/s /q </span><span class="kd">Build</span>\osm2odr<span class="na">-source
</span><span class="nb">rmdir</span> <span class="na">/s /q </span><span class="kd">Build</span>\om2odr<span class="na">-source

</span><span class="kd">make</span> <span class="kd">PythonAPI</span> <span class="kd">GENERATOR</span><span class="o">=</span><span class="s2">"Visual Studio 17 2022"</span>
</code></pre></div></div>

<hr />

<h3 id="-troubleshooting-unreal-engine-not-detected--ue4_root-not-set">🔧 Troubleshooting: “Unreal Engine Not Detected” / <code class="language-plaintext highlighter-rouge">UE4_ROOT</code> Not Set</h3>

<blockquote>
  <p>⚠️ <strong>Error:</strong></p>
  <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ERROR: The system was unable to find the specified registry key or value.
-[BuildCarlaUE4]: [ERROR] Unreal Engine not detected
</code></pre></div>  </div>
</blockquote>

<p><strong>Cause:</strong> CARLA checks the <code class="language-plaintext highlighter-rouge">UE4_ROOT</code> environment variable first, then falls back to the Windows registry — which usually doesn’t exist.</p>

<p><strong>Fix:</strong> Set <code class="language-plaintext highlighter-rouge">UE4_ROOT</code> to wherever <strong>you</strong> cloned the CARLA UE4 fork. This path varies per user — the examples below use <code class="language-plaintext highlighter-rouge">C:\CarlaUE4</code>, but substitute your actual install location:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c">rem For the current session only</span>
<span class="kd">set</span> <span class="kd">UE4_ROOT</span><span class="o">=</span><span class="kd">C</span>:\CarlaUE4

<span class="c">rem To persist across all terminals (run once)</span>
<span class="nb">setx</span> <span class="kd">UE4_ROOT</span> <span class="s2">"C:\CarlaUE4"</span>
</code></pre></div></div>

<p>If you cloned UE4 to a different drive, e.g. <code class="language-plaintext highlighter-rouge">D:\UnrealEngine\CarlaUE4</code>:</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">setx</span> <span class="kd">UE4_ROOT</span> <span class="s2">"D:\UnrealEngine\CarlaUE4"</span>
</code></pre></div></div>

<p>Verify it’s correct (<code class="language-plaintext highlighter-rouge">UE4Editor.exe</code> should be listed):</p>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">echo</span> <span class="vm">%UE4</span>_ROOT<span class="err">%</span>
<span class="nb">dir</span> <span class="s2">"</span><span class="vm">%UE4</span><span class="s2">_ROOT</span><span class="err">%</span><span class="s2">\Engine\Binaries\Win64\UE4Editor.exe"</span>
</code></pre></div></div>

<blockquote>
  <p><strong><code class="language-plaintext highlighter-rouge">UE4_ROOT</code> must point to the root folder</strong> (the one containing <code class="language-plaintext highlighter-rouge">Engine\</code>), <strong>not</strong> to <code class="language-plaintext highlighter-rouge">Engine\Binaries\Win64</code> itself.</p>
</blockquote>

<blockquote>
  <p><strong>Haven’t built UE4 yet?</strong> Go back to the <a href="#build-unreal-engine-4-for-carla">Build Unreal Engine 4 for CARLA</a> section. The CARLA-specific fork (<code class="language-plaintext highlighter-rouge">-b carla</code>) must be fully compiled before this step will succeed.</p>
</blockquote>

<hr />

<h2 id="launching-the-carla-simulator">Launching the CARLA Simulator</h2>

<h3 id="change-the-default-map-optional">Change the Default Map (Optional)</h3>

<p>By default, CARLA loads <code class="language-plaintext highlighter-rouge">Town10HD_Opt</code>, which is large and resource-intensive. To switch to a lighter map like <code class="language-plaintext highlighter-rouge">Town02</code>, edit <code class="language-plaintext highlighter-rouge">Unreal\CarlaUE4\Config\DefaultEngine.ini</code>:</p>

<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[/Script/EngineSettings.GameMapsSettings]</span>
<span class="py">EditorStartupMap</span><span class="p">=</span><span class="s">/Game/Carla/Maps/Town02.Town02</span>
<span class="py">GameDefaultMap</span><span class="p">=</span><span class="s">/Game/Carla/Maps/Town02.Town02</span>
<span class="py">ServerDefaultMap</span><span class="p">=</span><span class="s">/Game/Carla/Maps/Town02.Town02</span>
<span class="py">GlobalDefaultGameMode</span><span class="p">=</span><span class="s">/Game/Carla/Blueprints/Game/CarlaGameMode.CarlaGameMode_C</span>
<span class="py">GameInstanceClass</span><span class="p">=</span><span class="s">/Script/Carla.CarlaGameInstance</span>
<span class="py">TransitionMap</span><span class="p">=</span><span class="s">/Game/Carla/Maps/Town02.Town02</span>
<span class="py">GlobalDefaultServerGameMode</span><span class="p">=</span><span class="s">/Game/Carla/Blueprints/Game/CarlaGameMode.CarlaGameMode_C</span>
</code></pre></div></div>

<h3 id="launch-the-carla-server">Launch the CARLA Server</h3>

<blockquote>
  <p><strong>NOTE:</strong> The first launch is slow. On my machine it took ~20 min to open the Editor and ~30 min more for shader compilation. Subsequent launches are much faster thanks to caching.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">make</span> <span class="kd">launch</span><span class="na">-only
</span></code></pre></div></div>

<p>Click <strong>Play</strong> in the Unreal Editor to start the simulation. Use <strong>WASD</strong> + mouse to move around.</p>

<hr />

<h2 id="running-the-carla-client">Running the CARLA Client</h2>

<h3 id="create-a-python-virtual-environment">Create a Python Virtual Environment</h3>

<blockquote>
  <p><strong>IMPORTANT:</strong> Do NOT create a virtual environment until the <strong>full build is complete</strong>. Use Python 3.8.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">py</span> <span class="o">-</span><span class="m">3</span>.8 <span class="na">-m </span><span class="kd">venv</span> .venv
.\.venv\Scripts\activate
</code></pre></div></div>

<h3 id="install-the-carla-package">Install the CARLA Package</h3>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> <span class="kd">C</span>:\carla<span class="o">-</span><span class="m">0</span>.9.15\PythonAPI\carla\dist
<span class="kd">pip</span> <span class="kd">install</span> .\carla<span class="o">-</span><span class="m">0</span>.9.15<span class="na">-cp</span><span class="m">38</span><span class="na">-cp</span><span class="m">38</span><span class="na">-win</span>_amd64.whl
</code></pre></div></div>

<h3 id="install-example-script-dependencies">Install Example Script Dependencies</h3>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nb">cd</span> <span class="kd">C</span>:\carla<span class="o">-</span><span class="m">0</span>.9.15\PythonAPI\examples
<span class="kd">pip</span> <span class="kd">install</span> <span class="na">-r </span><span class="kd">requirements</span>.txt
</code></pre></div></div>

<h3 id="start-the-traffic-simulation">Start the Traffic Simulation</h3>

<blockquote>
  <p><strong>NOTE:</strong> Ensure the CARLA server is running before executing client scripts.</p>
</blockquote>

<div class="language-bat highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">python</span> <span class="kd">generate_traffic</span>.py
</code></pre></div></div>

<p>You should now see traffic in the simulation.</p>

<hr />

<h2 id="my-personal-tips--fixes">My Personal Tips &amp; Fixes</h2>

<p><em>I will continue updating this section with additional workarounds and lessons learned beyond the issues already documented above.</em></p>

<!-- TODO: Add personal tips here -->

<hr />

<h2 id="conclusion">Conclusion</h2>

<p>You’ve now built and launched CARLA on Windows 11 using Visual Studio 2022. Whether you’re using it for research, development, or experimentation, CARLA is a powerful platform for autonomous driving simulation. Good luck, and feel free to reach out if you hit issues not covered here!</p>

<hr />

<h2 id="additional-resources">Additional Resources</h2>

<table>
  <thead>
    <tr>
      <th>Resource</th>
      <th>Link</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Official CARLA Docs</td>
      <td><a href="https://carla.readthedocs.io/">carla.readthedocs.io</a></td>
    </tr>
    <tr>
      <td>CARLA GitHub</td>
      <td><a href="https://github.com/carla-simulator/carla">carla-simulator/carla</a></td>
    </tr>
    <tr>
      <td>Unreal Engine on GitHub</td>
      <td><a href="https://www.unrealengine.com/en-US/ue-on-github">unrealengine.com/ue-on-github</a></td>
    </tr>
    <tr>
      <td>CARLA Forum</td>
      <td><a href="https://github.com/carla-simulator/carla/discussions">github.com/carla-simulator/carla/discussions</a></td>
    </tr>
    <tr>
      <td>Python 3.8 Downloads</td>
      <td><a href="https://www.python.org/downloads/release/python-380/">python.org</a></td>
    </tr>
    <tr>
      <td>Visual Studio 2022</td>
      <td><a href="https://visualstudio.microsoft.com/vs/">visualstudio.microsoft.com</a></td>
    </tr>
    <tr>
      <td>CMake 3.28 (recommended)</td>
      <td><a href="https://cmake.org/files/v3.28/">cmake.org/files/v3.28</a></td>
    </tr>
    <tr>
      <td>Original Guide by wambitz</td>
      <td><a href="https://wambitz.github.io/tech-blog/carla/python/c++/simulation/autonomous-vehicles/2024/09/29/carla-win11.html">wambitz.github.io</a></td>
    </tr>
  </tbody>
</table>]]></content><author><name>Run Wang</name><email>runw@clemson.edu</email><uri>https://ulairii.github.io/</uri></author><category term="carla" /><category term="autonomous vehicles" /><category term="simulation" /><category term="windows" /><category term="tutorial" /><summary type="html"><![CDATA[Building CARLA from source on Windows is notoriously painful — outdated guides, cryptic errors, and hours of compilation. This post is based on this excellent guide by wambitz, combined with my own personal experience, additional fixes, and troubleshooting tips for issues I ran into that weren’t covered elsewhere.]]></summary></entry><entry><title type="html">SoK: How Sensor Attacks Disrupt Autonomous Vehicles: An End-to-end Analysis, Challenges, and Missed Threats</title><link href="https://ulairii.github.io/posts/2025/12/sok-sensor-attacks-avs/" rel="alternate" type="text/html" title="SoK: How Sensor Attacks Disrupt Autonomous Vehicles: An End-to-end Analysis, Challenges, and Missed Threats" /><published>2025-12-30T00:00:00+00:00</published><updated>2025-12-30T00:00:00+00:00</updated><id>https://ulairii.github.io/posts/2025/12/how-sensor-attacks-disrupt-avs</id><content type="html" xml:base="https://ulairii.github.io/posts/2025/12/sok-sensor-attacks-avs/"><![CDATA[<p>Autonomous vehicles (AVs)—including self-driving cars, robots, and drones—rely heavily on multi-modal sensor pipelines to operate safely. However, these sensors are known to be vulnerable to adversarial attacks. A major gap in current research is the lack of a systematic ecosystem view: how exactly do sensor-induced errors propagate through the interconnected modules of an AV to eventually cause physical harm?</p>

<p>A new paper titled <strong>“SoK: How Sensor Attacks Disrupt Autonomous Vehicles: An End-to-end Analysis, Challenges, and Missed Threats”</strong> aims to bridge this gap.</p>

<h2 id="the-gap-from-sensor-error-to-physical-impact">The Gap: From Sensor Error to Physical Impact</h2>

<p>Existing research often focuses on compromising a single sensor or algorithm. This paper takes a step back to provide a comprehensive survey and analysis across different platforms, sensing modalities, and attack methods.</p>

<h2 id="the-framework-modeling-error-propagation">The Framework: Modeling Error Propagation</h2>

<p>At the core of this paper is a graph-based framework designed to map the journey of an attack:</p>
<ol>
  <li><strong>Injection:</strong> How attacks inject errors into the system.</li>
  <li><strong>Propagation:</strong> The conditions under which these errors travel through modules—from perception and localization to planning and control.</li>
  <li><strong>Impact:</strong> When and how these errors manifest as physical consequences.</li>
</ol>

<h2 id="key-findings--missed-threats">Key Findings &amp; Missed Threats</h2>

<p>Through this systematic analysis, the authors uncovered significant insights:</p>

<ul>
  <li><strong>8 Key Findings:</strong>
    <ol>
      <li><strong>Perception Sensitivity:</strong> Attacks on perception sensors often require minimal physical impact to cause system failure.</li>
      <li><strong>Localization Drift:</strong> Localization sensors are susceptible to attacks that induce small, cumulative errors leading to significant deviations over time.</li>
      <li><strong>Fusion Vulnerability:</strong> Attacks targeting sensor fusion modules can be highly effective by exploiting inconsistencies between different sensor modalities.</li>
      <li><strong>Context Dependency:</strong> The propagation of sensor-induced errors is highly dependent on the AV’s operational context and environmental conditions.</li>
      <li><strong>Redundancy Bypass:</strong> Redundancy in sensing and processing can be bypassed by sophisticated attacks that understand the system’s failover logic.</li>
      <li><strong>ML Black-Boxes:</strong> Machine learning components within the pipeline are major targets due to their black-box nature and sensitivity to input perturbations.</li>
      <li><strong>Indirect Control Impact:</strong> Attacks on the planning and control modules, although less direct, can cause dangerous physical actions by exploiting model inaccuracies.</li>
      <li><strong>Testing Gaps:</strong> End-to-end testing and validation are crucial but often insufficient to uncover complex attack vectors involving multiple system components.</li>
    </ol>
  </li>
  <li><strong>12 Missed Threats:</strong>
    <ol>
      <li><strong>Multi-sensor Coordination:</strong> Multi-sensor coordinated attacks that exploit cross-modal dependencies.</li>
      <li><strong>Physical Environment:</strong> Attacks leveraging the physical environment to manipulate sensor readings (e.g., reflections, occlusions).</li>
      <li><strong>Temporal Dynamics:</strong> Attacks exploiting the temporal dynamics of sensor data and system processing.</li>
      <li><strong>Adversarial ML on Fusion:</strong> Adversarial machine learning attacks specifically targeting sensor fusion algorithms.</li>
      <li><strong>Edge Cases:</strong> Attacks exploiting edge cases and corner cases in perception and planning algorithms.</li>
      <li><strong>Communication Channels:</strong> Attacks targeting communication between AV modules or between AV and infrastructure.</li>
      <li><strong>Subtle Degradation:</strong> Attacks that induce subtle, long-term degradation of system performance rather than immediate failure.</li>
      <li><strong>Human Interaction:</strong> Exploitation of human-in-the-loop systems and their interaction with the AV.</li>
      <li><strong>Side-channels:</strong> Attacks leveraging side-channel information (e.g., power consumption, EM emissions) to infer system state or inject faults.</li>
      <li><strong>Learning Mechanisms:</strong> Attacks against the AV’s learning and update mechanisms, poisoning data or models.</li>
      <li><strong>Multi-AV Interaction:</strong> Exploiting the interaction between multiple AVs or between AVs and other road users.</li>
      <li><strong>Simulation Exploits:</strong> Attacks targeting simulation environments used for AV testing and a false sense of security.</li>
    </ol>
  </li>
</ul>

<p>This Systematization of Knowledge (SoK) serves as a critical wake-up call and a roadmap for future defense strategies, emphasizing that securing individual sensors is not enough—we must secure the entire pipeline.</p>

<p><a href="https://arxiv.org/abs/2509.11120">Read the full paper on arXiv</a>
<a href="https://arxiv.org/pdf/2509.11120">Download PDF</a></p>]]></content><author><name>Run Wang</name><email>runw@clemson.edu</email><uri>https://ulairii.github.io/</uri></author><category term="ai security" /><category term="one paper per day" /><category term="autonomous vehicles" /><summary type="html"><![CDATA[Autonomous vehicles (AVs)—including self-driving cars, robots, and drones—rely heavily on multi-modal sensor pipelines to operate safely. However, these sensors are known to be vulnerable to adversarial attacks. A major gap in current research is the lack of a systematic ecosystem view: how exactly do sensor-induced errors propagate through the interconnected modules of an AV to eventually cause physical harm?]]></summary></entry><entry><title type="html">Investigating Physical Latency Attacks Against Camera-Based Perception</title><link href="https://ulairii.github.io/posts/2025/12/detstorm-latency-attacks/" rel="alternate" type="text/html" title="Investigating Physical Latency Attacks Against Camera-Based Perception" /><published>2025-12-25T00:00:00+00:00</published><updated>2025-12-25T00:00:00+00:00</updated><id>https://ulairii.github.io/posts/2025/12/detstorm-latency-attacks</id><content type="html" xml:base="https://ulairii.github.io/posts/2025/12/detstorm-latency-attacks/"><![CDATA[<p>In the rapidly evolving field of autonomous systems, visual perception is the cornerstone of safe navigation. A recent paper titled <strong>“Investigating Physical Latency Attacks Against Camera-Based Perception”</strong>, accepted to the 2025 IEEE Symposium on Security and Privacy (S&amp;P), introduces a novel and concerning threat vector: <strong>Detstorm</strong>.</p>

<h3 id="the-problem-latency-as-a-weapon">The Problem: Latency as a Weapon</h3>
<p>Denial-of-Service (DoS) attacks on autonomous vehicles (AVs) can be catastrophic. If an AV’s perception system is delayed, even by a split second, it may fail to react to obstacles or pedestrians in time. Previous research into latency attacks has often been limited to:</p>
<ul>
  <li><strong>Digital-only attacks</strong>: Simulations that cannot be easily replicated in the physical world.</li>
  <li><strong>Unscalable physical patches</strong>: Large, conspicuous patterns that block the camera’s view, which are easily detectable and impractical to deploy discreetly.</li>
</ul>

<p>The challenge was to create a <em>physically realizable</em> attack that could overwhelm the perception pipeline without requiring massive physical alterations to the scene.</p>

<h3 id="proposed-method-detstorm">Proposed Method: Detstorm</h3>
<p>The researchers propose <strong>Detstorm</strong>, a new attack method that exploits the computational bottlenecks in object detection pipelines.</p>

<h4 id="1-concept">1. Concept</h4>
<p>Detstorm works by flooding the object detector with a massive number of “ghost” adversarial objects. By forcing the system to process hundreds of non-existent detections, the pipeline’s latency effectively creates a DoS condition.</p>

<h4 id="2-design--methodology">2. Design &amp; Methodology</h4>
<p>To achieve this in the real world, Detstorm uses <strong>projector perturbations</strong>—light patterns projected onto the scene. Key components of the design include:</p>

<ul>
  <li><strong>Evading NMS (Non-Maximum Suppression)</strong>: Object detectors use NMS to filter out overlapping boxes for the same object. Detstorm optimizes its adversarial objects to specifically <em>evade</em> this filtering, ensuring that the system keeps as many false positives as possible.</li>
  <li><strong>Zone Stitching</strong>: Projecting a single coherent image that covers a large area is difficult. Detstorm uses a “zone stitching” process to recombine perturbation patterns into a single, contiguous image that can be projected physically and effectively.</li>
  <li><strong>Greedy Zone Strategy</strong>: The attack segments the environment into zones containing different object classes. It then employs a greedy algorithm to maximize the number of created objects within each specific zone.</li>
</ul>

<h3 id="effectiveness--results">Effectiveness &amp; Results</h3>
<p>The paper presents rigorous evaluations in both simulated and real-world environments. The results are startling:</p>
<ul>
  <li><strong>506% increase</strong> in the number of detected objects on average.</li>
  <li><strong>Perception delays of up to 8.1 seconds</strong>, which is an eternity in autonomous driving contexts.</li>
  <li>The attack was proven to be physically realizable, capable of causing tangible consequences for real-world autonomous driving systems.</li>
</ul>

<p>This research highlights a critical vulnerability in current perception architectures. As we move towards fully autonomous roads, defense mechanisms against not just misclassification, but <em>pipeline overload</em>, will be essential.</p>

<hr />
<p><strong>Reference:</strong>
R. Muller, R. Song, C. Wang, Y. Zhan, J.-P. Monteuuis, Y. Man, M. Li, R. Gerdes, J. Petit, and Z. B. Celik, “Investigating Physical Latency Attacks Against Camera-Based Perception,” <em>2025 IEEE Symposium on Security and Privacy (S&amp;P)</em>, 2025. DOI: <a href="https://doi.org/10.1109/SP61157.2025.00236">10.1109/SP61157.2025.00236</a></p>]]></content><author><name>Run Wang</name><email>runw@clemson.edu</email><uri>https://ulairii.github.io/</uri></author><category term="security" /><category term="autonomous-driving" /><category term="adversarial-attacks" /><category term="latency" /><category term="one paper per day" /><summary type="html"><![CDATA[In the rapidly evolving field of autonomous systems, visual perception is the cornerstone of safe navigation. A recent paper titled “Investigating Physical Latency Attacks Against Camera-Based Perception”, accepted to the 2025 IEEE Symposium on Security and Privacy (S&amp;P), introduces a novel and concerning threat vector: Detstorm.]]></summary></entry><entry><title type="html">FlyTrap: Physical Distance-Pulling Attack Towards Camera-based Autonomous Target Tracking Systems</title><link href="https://ulairii.github.io/posts/2025/12/flytrap-physical-distance-pulling-attack/" rel="alternate" type="text/html" title="FlyTrap: Physical Distance-Pulling Attack Towards Camera-based Autonomous Target Tracking Systems" /><published>2025-12-23T00:00:00+00:00</published><updated>2025-12-23T00:00:00+00:00</updated><id>https://ulairii.github.io/posts/2025/12/flytrap-physical-distance-pulling-attack</id><content type="html" xml:base="https://ulairii.github.io/posts/2025/12/flytrap-physical-distance-pulling-attack/"><![CDATA[<p>Autonomous Target Tracking (ATT) systems, especially in drones, are becoming increasingly common for surveillance and photography. However, their reliance on visual tracking algorithms introduces significant security vulnerabilities. A new paper titled <strong>“FlyTrap: Physical Distance-Pulling Attack Towards Camera-based Autonomous Target Tracking Systems”</strong> exposes a critical flaw that allows attackers to manipulate drones into dangerous proximity.</p>

<h2 id="the-concept-distance-pulling-attack-dpa">The Concept: Distance-Pulling Attack (DPA)</h2>

<p>The core of this research is the <strong>Distance-Pulling Attack (DPA)</strong>. The goal is simple but dangerous: deceive the drone into believing the target is further away than it actually is. This causes the drone’s control system to move closer to maintain the “correct” tracking distance, potentially leading to capture or collision.</p>

<h2 id="design-the-adversarial-umbrella">Design: The Adversarial Umbrella</h2>

<p>The researchers proposed a novel attack vector: an <strong>Adversarial Umbrella</strong>.</p>

<p>Why an umbrella?</p>
<ul>
  <li><strong>Deployable:</strong> It’s a common object, effectively hiding the attack in plain sight.</li>
  <li><strong>Inconspicuous:</strong> Unlike obvious adversarial patches, a patterned umbrella doesn’t raise immediate suspicion.</li>
  <li><strong>Control:</strong> It allows the attacker to easily manipulate the visual input presented to the drone.</li>
</ul>

<h2 id="logic--methodology">Logic &amp; Methodology</h2>

<p>To achieve a robust attack, the system, dubbed <strong>FlyTrap</strong>, uses two key components:</p>

<h3 id="1-progressive-distance-pulling-pdp-strategy">1. Progressive Distance-Pulling (PDP) Strategy</h3>
<p>Attacking a moving drone is difficult because the visual perspective changes constantly. The PDP strategy addresses this by <strong>simulating the attack’s effects under gradually decreasing distances</strong>. It uses physical modeling to estimate the distance and generates adversarial patterns that remain effective as the drone moves closer.</p>

<h3 id="2-attack-target-generator-atg">2. Attack Target Generator (ATG)</h3>
<p>A major challenge in physical adversarial attacks is maintaining consistency across different viewing angles and frames (spatial-temporal consistency). The ATG solves this by explicitly encoding these constraints during the optimization process. It ensures that the generated adversarial pattern looks plausible to the drone’s tracking algorithm from multiple angles and over time, bypassing consistency-checking defenses.</p>

<h2 id="real-world-impact">Real-World Impact</h2>

<p>The effectiveness of FlyTrap is alarming. Evaluations demonstrated that it works against real-world commercial ATT drones, including widely used models from <strong>DJI</strong> and <strong>HoverAir</strong>. The attack successfully reduced tracking distances to the point where drones could be:</p>
<ul>
  <li><strong>Captured:</strong> Physically grabbed by the attacker.</li>
  <li><strong>Sensor Attacked:</strong> Brought close enough for other short-range attacks.</li>
  <li><strong>Crashed:</strong> Tricked into colliding with the target or obstacles.</li>
</ul>

<p>This research highlights a urgent need for robust defense mechanisms in autonomous systems, as simple visual deception can lead to physical safety risks.</p>

<p><a href="https://arxiv.org/abs/2509.20362">Read the full paper on arXiv</a>
<a href="https://arxiv.org/pdf/2509.20362">Download PDF</a></p>]]></content><author><name>Run Wang</name><email>runw@clemson.edu</email><uri>https://ulairii.github.io/</uri></author><category term="ai security" /><category term="one paper per day" /><category term="drone security" /><summary type="html"><![CDATA[Autonomous Target Tracking (ATT) systems, especially in drones, are becoming increasingly common for surveillance and photography. However, their reliance on visual tracking algorithms introduces significant security vulnerabilities. A new paper titled “FlyTrap: Physical Distance-Pulling Attack Towards Camera-based Autonomous Target Tracking Systems” exposes a critical flaw that allows attackers to manipulate drones into dangerous proximity.]]></summary></entry><entry><title type="html">Cross-Country Road Trip: Columbus to LA</title><link href="https://ulairii.github.io/posts/2025/08/road-trip-columbus-to-la/" rel="alternate" type="text/html" title="Cross-Country Road Trip: Columbus to LA" /><published>2025-08-01T00:00:00+00:00</published><updated>2025-08-01T00:00:00+00:00</updated><id>https://ulairii.github.io/posts/2025/08/road-trip-columbus-to-la</id><content type="html" xml:base="https://ulairii.github.io/posts/2025/08/road-trip-columbus-to-la/"><![CDATA[<p>This winter, I embarked on an epic cross-country road trip, driving over 2,200 miles from <strong>Columbus, Ohio</strong> to <strong>Los Angeles, California</strong>. It was an unforgettable journey through the changing landscapes of America.</p>

<p><img src="/images/road-trip-2024.jpg" alt="Road Trip Map" /></p>

<h3 id="the-route">The Route</h3>

<p>We planned our route to hit several iconic cities along the way:</p>

<ol>
  <li><strong>Columbus, OH</strong> 🏁
    <ul>
      <li>Our journey began here, packing up the car and heading west on I-70.</li>
    </ul>
  </li>
  <li><strong>St. Louis, MO</strong>
    <ul>
      <li>Our first major landmark was the Gateway Arch, standing tall over the Mississippi River.</li>
    </ul>
  </li>
  <li><strong>Kansas City, MO</strong>
    <ul>
      <li>We stopped for some world-famous BBQ and enjoyed the vibrant atmosphere before pushing into the Great Plains.</li>
    </ul>
  </li>
  <li><strong>Denver, CO</strong>
    <ul>
      <li>The scenery changed dramatically as we approached the Rockies. The “Mile High City” offered stunning mountain views and crisp air.</li>
    </ul>
  </li>
  <li><strong>Las Vegas, NV</strong>
    <ul>
      <li>A dazzling stop in the Mojave Desert. The neon lights of the Strip were a surreal contrast to the miles of open road we just covered.</li>
    </ul>
  </li>
  <li><strong>Los Angeles, CA</strong> 🌴
    <ul>
      <li>Final destination! Arriving at the Pacific Coast felt like a huge accomplishment after days of driving.</li>
    </ul>
  </li>
</ol>

<p>From the forests of the Midwest to the endless horizon of the plains, the towering peaks of the Rockies, and the arid beauty of the desert—this trip showed us the incredible diversity of the US landscape.</p>]]></content><author><name>Run Wang</name><email>runw@clemson.edu</email><uri>https://ulairii.github.io/</uri></author><category term="travel" /><category term="road trip" /><category term="photography" /><summary type="html"><![CDATA[This winter, I embarked on an epic cross-country road trip, driving over 2,200 miles from Columbus, Ohio to Los Angeles, California. It was an unforgettable journey through the changing landscapes of America.]]></summary></entry></feed>