91³Ô¹ÏÍø

Watch CBS News

Grapevine Motorcycle Officer Almost Killed In Line Of Duty To Be Honored By Gov. Abbott Friday

GRAPEVINE, Texas (CBSDFW.COM) - Governor Greg Abbott is presenting the Star of Texas award in Austin Friday, Sept. 10, to a North Texas police officer who was almost killed in the line of duty.

The Grapevine motorcycle officer went through two years of grueling rehab to get back to the job he loves.

"I used to ride when I was a kid," said Officer RJ Hudson, who says he's always loved motorcycles.

Hudson has been riding one for more than two decades in his career as a police officer.

"Being on a police motorcycle, you're a lot more agile," he said. "You're able to get to places that cars can't go."

In 2017, Hudson was trying to pull someone over for a traffic violation on 121 when an SUV swerved into his lane and struck him.

"I was doing approximately 95 mph where I got hit," said Hudson.

His helmet flew off on impact, and he skidded down the roadway nearly 300 feet.

Officer RJ Hudson
Officer RJ Hudson's motorcycle and Hudson hospitalized (credit: Grapevine PD).

"I've been an accident investigator for a long time, and I've never worked a crash to this severity with someone who's living to tell about it," Hudson said. "I had 26 different broken bones in hundreds of different pieces."

It took two years, nearly a dozen surgeries, and countless hours of physical therapy before Hudson returned to full-duty – and to his motorcycle.

RELATED:

"I had a goal of getting back on a motorcycle, and coming back out and competing in events like this," he said. "That's what I wanted to do."

Grapevine Police Senior Officer RJ Hudson
Grapevine Police Senior Officer RJ Hudson back in uniform. (courtesy: Grapevine PD)

More than 100 officers from departments across the country are in Grapevine this week for the .

The motorcycle agility competitions are meant to be fun for the public to watch, but it's also a critical training opportunity.

Officers can practice riding with precision under pressure.

"The environment with lots of crowd and everything being on a stopwatch adds a lot of stress, and the human body doesn't really distinguish between that kind of adrenaline and the kind when you get a hot call," said Hudson.

He credits the skills the rodeo develops with helping to save his life.

"Officers need to trust in themselves and have perseverance to push through," he said. "Don't quit. And training is important."

Governor Abbott will present the Star of Texas Award to Hudson at 10:30 a.m. on Friday.

It honors first responders killed or seriously injured in the line of duty.

The .

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=296763317a51cab90faa73f1bb146d5c'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });