Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions data/radar/radar.parm.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/smart_radar:
ros__parameters:
master_inst_serial_type: "port_based"
master_data_serial_type: "port_based"
adapters:
adapter_0:
hw_type: "eth"
hw_dev_id: 2
hw_iface_name: "enp3s0"
port: 55555
sensors:
sensor_0:
link_type: "eth"
pub_type: "target"
model: "umrr9f_v2_4_1"
dev_id: 2
id: 100
ip: "192.168.11.11"
port: 55555
frame_id: "umrr"
history_size: 10
inst_type: "port_based"
data_type: "port_based"
uifname: "umrr9f_t169_automotive"
uifmajorv: 2
uifminorv: 4
uifpatchv: 1
1 change: 1 addition & 0 deletions launch.hailbopp_full.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ def generate_launch_description():
joystick_microsoft,
# #camera,
gnss,
radar,
# Old lidar (left and right):
# lidar_driver_left,
# lidar_pointcloud_left,
Expand Down
7 changes: 7 additions & 0 deletions launch_node_definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,13 @@
executable='clock_node'
)

radar = Node(
package="umrr_ros2_driver",
executable="smartmicro_radar_node_exe",
name="smart_radar",
parameters=['/vehicle_interface/data/radar/radar.param.yaml'],
)

# I don't think we use this... maybe the old gps?
# but we should keep it for broader vehicle interface...
gps_node = Node(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Build and test

on:
pull_request:
push:
branches:
- master

jobs:
build-and-test:
runs-on: ubuntu-latest
strategy:
matrix:
ros_distro: [foxy, humble, jazzy]
steps:
- name: Checkout
uses: actions/checkout@v2

- name: Get the Smart Access binaries
run: echo "yes" | ./smart_extract.sh

- name: Build docker container
run: docker build --build-arg ROS_DISTRO=${{ matrix.ros_distro }} -t umrr-ros:${{ matrix.ros_distro }} .

- name: Build the driver
run: docker run --rm -v $(pwd):/code umrr-ros:${{ matrix.ros_distro }} colcon build --packages-skip smart_rviz_plugin

- name: Run tests
run: ROS_DISTRO=${{ matrix.ros_distro }} docker compose up

- name: Collect test results
run: docker run --rm -v`pwd`:/code umrr-ros:${{ matrix.ros_distro }} colcon test-result --all --verbose

- name: Shut down containers
run: docker compose down
16 changes: 16 additions & 0 deletions src/drivers/smartmicro_ros2_radars/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
build
install
log
*.pyc
umrr_ros2_driver/__pycache__
simulator/simulation/build_dir
simulator/simulation/out
umrr_ros2_driver/include/umrr_ros2_driver/sensor_params.hpp
umrr_ros2_driver/include/umrr_ros2_driver/sensor_commands.hpp
umrr_ros2_driver/smartmicro/*
!umrr_ros2_driver/smartmicro/include
umrr_ros2_driver/smartmicro/include/*
!umrr_ros2_driver/smartmicro/include/DataServicesIface.h
!umrr_ros2_driver/smartmicro/include/InstructionBuffer.h
!umrr_ros2_driver/smartmicro/include/Types.h
!umrr_ros2_driver/smartmicro/Readme.md
135 changes: 135 additions & 0 deletions src/drivers/smartmicro_ros2_radars/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# Change Log
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).

## v1.0.0 - 2021-11-01

### Initial Release
- **smartmicro_ros2_radars**: First official versioned release.
- **ROS 2 Node**: Wrapped around `Smart Access C++ API v3.3.15`.
- **Functionality**: Interfaces with smartmicro automotive radars and publishes incoming data as point cloud.

## v2.0.0 - 2022-05-05

### Major Update
- **Multi-User Interface**: Supports and publishes data from UMRR96 and UMRR11.
- **Testing Enhancements**: Implemented a new test approach simulating sensors and interfacing with the node.
- **New Sensor Firmware Requirement For**:
- UMRR11-T132: V5.1.4
- UMRR96-T153: V5.2.4

# v2.1.0 - 2022-06-02

### Minor Update
- **ROS 2 Services**: Added services to communicate with the sensor.
- **Mode Changes**: Supports mode changes for UMRR96 and UMRR11.
- **IP Configuration**: Allows configuring sensor IP addresses via ROS 2 services.
- **Extended Testing**: Includes ROS 2 services check.
- **New Sensor Firmware Requirement For**:
- UMRR11-T132: V5.1.4
- UMRR96-T153: V5.2.4

## v3.0.0 - 2022-09-23

### Major Update
- **New Sensor Support**: Added support for smartmicro sensor DRVEGRD 169.
- **Functionality**: Mode changes and configuration for DRVEGRD 169, publishes radar targets as point cloud data.
- **Callback Changes**: Data stream callbacks now require a clientID.

## v3.1.0 - 2022-10-19

### Minor Update
- **New Sensor Support**: Added support for smartmicro sensor DRVEGRD 152.
- **Functionality**: Mode changes and configuration for DRVEGRD 152, publishes radar targets as point cloud data.
- **Callback Changes**: Data stream callbacks now require a clientID.

## v3.2.0 - 2022-11-11

### Minor Update
- **Point Cloud Enhancement**: Introduced signal-to-noise field.
- **Bug Fixes**: Fixed the max number of sensors that could be connected simultaneously.

## v3.2.1 - 2022-12-16

### Patch Update
- **Bug Fixes**:
- Fixed offset causing anomalies in point clouds from DRVEGRD 152 sensor.
- Fixed timestamp calculation bug causing RViz to crash.
- **Updates**: Updated simulator source files.

## v4.0.0 - 2023-02-06

### Major Update
- **New UI**: Added user-interface for DRVEGRD 169.
- **New Modes**: Introduced new modes for DRVEGRD 169.
- **New Service**: Added ROS 2 service to save configurations.
- **Model Update**: 'UMRR9F' radar parameter model split into 'UMRR9F_V1_1_1' and 'UMRR9F_V2_0_0'.

## v4.1.0 - 2023-08-21

### Minor Update
- **New UI**: Added user-interfaces for DRVEGRD 171 and DRVEGRD 152.
- **Parameter List**: Complete list of all parameters and commands for all sensors accessible via ROS 2 services.

## v5.0.0 - 2023-09-22

### Major Update
- **CAN Communication**: Enabled for all provided sensor types and interfaces.
- **Parameter Expansion**: Extended parameters to include settings for connected adapters along with sensor parameters.

## v6.0.0 - 2023-12-20

### Major Update
- **Firmware Download**: Added features for downloading sensor firmware onto the sensors.
- **RViz Plugins**:
- Log target list data, record, and save it.
- Send instructions to the sensors.
- **Python GUI**: Added a GUI to send custom CAN messages.
- **Parameter Templates**: Merged radar parameter templates into one file.
- **Point Cloud Enhancement**: Added polar coordinates.
- **New UI**: Added user-interface for sensor A4 T171.

## v6.1.0 - 2024-01-26

### Minor Update
- **New UIs**: Added user interfaces for DRVEGRD 169 and DRVEGRD 152.
- **Bug Fixes**:
- Fixed issues with the smart record plugin.
- Added azimuth and elevation angles in degrees.

## v7.0.0 - 2024-06-07

### New Features
- **User Interface for DRVEGRD 169**: Introduced a new UI with integrated object tracking capabilities.
- **RViz Plugins**: Added plugins to RViz for decoding targets, objects, and header information.
- **Enhanced Command Configurator**: Improved the command configurator for better usability and functionality.
- **New ROS 2 Parameter - `pub_type`**: Added the `pub_type` parameter to manage the desired publication type.
- **New message definitions**:
- CanObjectHeader.msg includes object status for sensors connected over CAN.
- CanTargetHeader.msg includes target status for sensors connected over CAN.
- PortObjectHeader.msg includes object status for sensors connected over ethernet.
- PortTargetHeader.msg includes target status for sensors connected over ethernet.

## v7.1.0 - 2025-02-12

### New Features
- **User Interface for DRVEGRD 169 MSE v1.1.0**: Introduced a new UI with integrated object tracking capabilities.
- **User Interface for DRVEGRD 171 MSE v1.0.0**: Introduced a new UI with integrated object tracking capabilities.
- **New User Interfaces**: Added user interfaces for DRVEGRD 152 v1.5.0 and DRVEGRD 171 v1.4.0.
- **RViz Plugins**: Extended service configurator with DRVEGRD 171 MSE instruction set.
- **Adopted Testing**: Includes check for new DRVEGRD 171 v1.5.0.
- **Updated External libraries**: Updated external libraries compatible with the new smart access release.

## v8.0.0 - 2026-03-03

### New Features
- **User Interface for DRVEGRD 166 v1.0.0**: Introduced a new UI.
- **User Interface for DRVEGRD 166 v2.0.0**: Introduced a new UI.
- **New User Interfaces**: Added user interfaces for DRVEGRD 169 v3.0.0, DRVEGRD 169 MSE v1.3.0 and DRVEGRD 171 MSE v2.1.0.
- **Multi-Distro Support**: Added full compatibility for ROS 2 Foxy, Humble, and Jazzy via updated Docker configurations and CI/CD pipelines.
- **Batch Instruction Interface**: Introduced a new extensible service structure allowing multiple parameters of varying types (float, uint8/16/32) to be sent in a single request.
- **Asynchronous Firmware Updates**: Refactored the download protocol to use a thread-safe, non-blocking architecture, preventing RViz UI freezes during sensor updates.
- **Expanded Service Set**: Integrated new GetMode and GetStatus services into the smartmicro node logic.
- **Enhanced RViz Plugins**: Updated the Service Configurator and Download plugins with improved layouts, section-based parameters, and read/write capabilities.

### Breaking Changes
- **Message Structure Refactor**: Replaced single-field param and value fields with array-based params, values, and value_types to support batch processing. Existing integrations must be updated to the new array format.
47 changes: 47 additions & 0 deletions src/drivers/smartmicro_ros2_radars/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Contributions

Contributions to the `smartmicro_ros2_radars` are welcomed and highly
appreciated! :tada::+1:


## Contribution Guidelines

First and foremost to get an overview of the project, please read the
[Readme](Readme.md).

### Gitflow Workflow

This document provides certain guidelines and rules that should be
followed while contributing to `smartmicro_ros2_radars` and its
packages. The project follows the Gitflow guidelines and so it is
expected from the contributor to firstly read the Gitflow guide and
adhere to it.

If not familiar with Gitflow Workflow, please refer to the following
link:
- [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)

### Bugs and Features

We use GitHub issues to report bugs and make feature requests. For
each bug/feature a new issue should be created first. It is advised to
give each issue a label. Once creating a pull request which stems from
an issue, the pull request must be linked with the respective issue.
The issue should be closed once the pull request has been successfully
merged. Also, it is advisable to name the pull request as such that it
includes the issue number.

In case of suggestions or enhancements, simply create an issue.
:smile_cat:

### Commits

We would like to have clear and understandable commits, please refer to
the following link for certain good commit practices:
- [Commit practices](https://chris.beams.io/posts/git-commit/)

### Coding Style

It is advised to maintain a consistency in the coding style. Refer to
the following link for ROS2 coding guidelines:
- [ROS2 code style](https://docs.ros.org/en/foxy/Contributing/Code-Style-Language-Versions.html)
35 changes: 35 additions & 0 deletions src/drivers/smartmicro_ros2_radars/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# ROS 2 distro (default = foxy)
ARG ROS_DISTRO=foxy
FROM ros:${ROS_DISTRO}

# Fix repo keys ONLY for Foxy (snapshots issue).
RUN if [ "$ROS_DISTRO" = "foxy" ]; then \
rm -f /etc/apt/sources.list.d/ros2-snapshots.list || true && \
apt-get update && apt-get install -y curl gnupg2 lsb-release && \
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
-o /usr/share/keyrings/ros-archive-keyring.gpg && \
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] \
http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" \
| tee /etc/apt/sources.list.d/ros2.list > /dev/null ; \
fi

# Common dependencies
RUN apt-get update && apt-get install -y \
iputils-ping \
python3 \
python3-pip \
wget \
git \
ca-certificates \
&& update-ca-certificates \
&& rm -rf /var/lib/apt/lists/*

# ROS-specific dependencies
RUN apt-get update && apt-get install -y \
ros-${ROS_DISTRO}-point-cloud-msg-wrapper \
ros-${ROS_DISTRO}-rviz2 \
ros-${ROS_DISTRO}-rviz-common \
ros-${ROS_DISTRO}-rviz-default-plugins \
ros-${ROS_DISTRO}-rviz-rendering

WORKDIR /code
Loading