<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>sensing on Matthew Shields</title>
    <link>https://mshields.name/tags/sensing/</link>
    <description>Recent content in sensing on Matthew Shields</description>
    <generator>Hugo -- gohugo.io</generator>
    <copyright>© 2022 - 2026 Matthew Shields</copyright>
    <lastBuildDate>Wed, 03 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mshields.name/tags/sensing/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ROS 2 Camera Calibration</title>
      <link>https://mshields.name/blog/2026-06-03-ros-2-camera-calibration/</link>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate>
      
      <guid>https://mshields.name/blog/2026-06-03-ros-2-camera-calibration/</guid>
      <description>Preamble – The Why Underlying many perception tasks is the need to express the pose of one coordinate frame relative to another and to compose such poses along kinematic and sensing chains. This allows us to take transform sensor obeservations from the reference frame of a sensing element. This is useful.
A rigid-body pose can be represented by a homogeneous transformation matrix, see here for more on that. \[\begin{equation} \mathbf{T}^{A}_{B} = \begin{bmatrix} \mathbf{R}^{A}_{B} &amp;amp; \mathbf{t}^{A}_{B} \\ \mathbf{0}^{\top} &amp;amp; 1 \end{bmatrix} \in SE(3), \qquad \mathbf{R}^{A}_{B} \in SO(3),\ \ \mathbf{t}^{A}_{B} \in \mathbb{R}^{3}, \label{eq:se3} \end{equation}\] Where \(\mathbf{R}^{A}_{B}\) is a \(3\times3\) rotation matrix belonging to the special orthogonal group \(SO(3)\) and \(\mathbf{t}^{A}_{B}\) is a translation vector.</description>
    </item>
    
    <item>
      <title>Setting Up Raspberry Pi Camera on Ubuntu 20.04 64 bit for Raspberry Pi 4</title>
      <link>https://mshields.name/blog/2024-01-20-setting-up-rapberry-pi-camera-on-ubuntu-20-04-64-bit-for-raspberry-pi-4/</link>
      <pubDate>Sat, 20 Jan 2024 00:00:00 +0000</pubDate>
      
      <guid>https://mshields.name/blog/2024-01-20-setting-up-rapberry-pi-camera-on-ubuntu-20-04-64-bit-for-raspberry-pi-4/</guid>
      <description>Preamble This was a pig for no good reason, so hopefully someone else doesn’t have to go through the same pain I did.
For clarity I was using a Raspberry Pi 4 running Ubuntu 20.04 64 bit with a Pi Zero camera connected using an adapter ribbon cable. Ensure everything is properly connected before starting.
How To Edit your /boot/firmware/config.txt, adding the following… start_x=1 gpu_mem=512 disable_camera_led=1 start_file=start_4x.elf fixup_file=fixup_4x.dat sudo apt-get update sudo apt-get upgrade sudo reboot When your system comes back up you should now have your camera listed as a video device.</description>
    </item>
    
    <item>
      <title>A GNSS Primer for Roboticists</title>
      <link>https://mshields.name/blog/2023-01-17-gnss-and-rtk-primer-for-roboticists/</link>
      <pubDate>Wed, 15 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://mshields.name/blog/2023-01-17-gnss-and-rtk-primer-for-roboticists/</guid>
      <description>Preamble Constellations How it Works Real Time Kinematic (RTK) Solutions Accuracy, Precision and Repeatability Absolute Geographic Accuracy vs. Other Forms of Accuracy Accuracy Metrics Resolution An Intentionally Brief Word on Geodetic Models and Datums Solution Types Standard Positioning Service Differential GNSS RTK Float RTK Integer Free Satellite Based Augementation Services (SBAS) - WAAS/ EGNOS/ MSAS/ GAGAN Paid For Satellite Based Correction Services - Omnistar, Terrastar Sources of GNSS Errors Atmospheric and Ionospheric Space Segment Error Multipath Reflections Other Considerations Antenna Selection Ground Planes Electromagnetic Interference (EMI) and Carrier to Noise Ratio (CNR) Communication Layer for Corrections Resources and Further Reading Hey you!</description>
    </item>
    
    <item>
      <title>Setting Up A Georeferenced RTK Base Station</title>
      <link>https://mshields.name/blog/2022-05-01-setting-up-a-georeferenced-rtk-base-station/</link>
      <pubDate>Sun, 01 May 2022 00:00:00 +0000</pubDate>
      
      <guid>https://mshields.name/blog/2022-05-01-setting-up-a-georeferenced-rtk-base-station/</guid>
      <description>Preamble In my previous post I detailed how to use RINEX data to create a sub-decimeter level position solution. Using RINEX data in this way from government sources ties you to an agreed upon reference datum. With your own base station this can be problematic as the accuracy of the established position of the station will likely not be geographically accurate. This then leads to repeatable rover solutions but they will have some offset versus many other georeferrenced data sets, eg.</description>
    </item>
    
    <item>
      <title>Registration Methods Comparison</title>
      <link>https://mshields.name/blog/2022-03-10-registration-methods-comparison/</link>
      <pubDate>Thu, 24 Mar 2022 00:00:00 +0000</pubDate>
      
      <guid>https://mshields.name/blog/2022-03-10-registration-methods-comparison/</guid>
      <description>Preamble Registration is the technique of aligning two data sets by finding either a rigid or affine transformation, depending on the problem. In robotics this is often between two pointclouds but the technique can be useful for aligning any data sets especially those that contain spatial data, MRI scan images for example. The Wikipedia page for this topic is quite concise and well written.
Background Typically we represent transformations in 3D space as a matrix and translation vector that we apply to an input vector of coordinates to produce a transformed output vector of shifted coordinates.</description>
    </item>
    
    <item>
      <title>Extracting Road Markings from Pointcloud Data</title>
      <link>https://mshields.name/blog/2022-02-23-extracting-road-markings-from-pointcloud-data/</link>
      <pubDate>Sat, 26 Feb 2022 00:00:00 +0000</pubDate>
      
      <guid>https://mshields.name/blog/2022-02-23-extracting-road-markings-from-pointcloud-data/</guid>
      <description>Preamble This is the first post in a series looking back at past projects I have done but not shared publicly or documented in any way.
This was a piece of work from 2019 with the goal of extracting road markings from geo-referenced pointclouds. For those that don’t know, a geo-referenced pointcloud is created by taking a LiDAR and putting it on some kind of a rover vehicle, then taking all the observations of the LiDAR that were taken in the moving vehicle reference frame and converting them into the global “static” reference frame.</description>
    </item>
    
  </channel>
</rss>
