Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~
No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Repository Summary

Checkout URI https://github.com/polymathrobotics/socketcan_adapter.git
VCS Type git
VCS Version main
Last Updated 2026-03-09
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
socketcan_adapter 0.1.0
socketcan_adapter_ros 0.1.0

README

SocketCAN Adapter

A modular SocketCAN driver library and ROS2 integration for Linux-based systems. This repository provides both a standalone C++ library and ROS2 wrapper for easy integration with robotics applications.

Architecture

This package is split into two complementary components:

socketcan_adapter

Pure C++ SocketCAN library with no ROS dependencies.

  • Core SocketCAN functionality
  • Thread-safe operations
  • Callback-based asynchronous processing
  • Configurable filters and error handling
  • Can be used in non-ROS projects

socketcan_adapter_ros

ROS2 wrapper providing nodes and launch files.

  • ROS2 lifecycle node
  • Integration with can_msgs
  • Launch files with parameter support
  • Depends on the core socketcan_adapter library

Quick Start

Build Both Packages

# Install dependencies
rosdep install -i -y --from-paths .

# Build everything
colcon build --packages-up-to socketcan_adapter_ros

Launch ROS2 CAN Bridge

ros2 launch socketcan_adapter_ros socketcan_bridge_launch.py

Use Core Library in C++

#include "socketcan_adapter/socketcan_adapter.hpp"

using namespace polymath::socketcan;

SocketcanAdapter adapter("can0");
adapter.openSocket();
// ... see socketcan_adapter README for full example

Requirements

System Requirements

  • Linux with SocketCAN support
  • C++17 compatible compiler
  • CMake 3.8+

ROS2 Requirements (for ROS package only)

  • ROS2 Humble or later
  • can_msgs package

Testing

Core Library Tests

colcon test --packages-select socketcan_adapter

Hardware Tests

Set CAN_AVAILABLE=1 to enable hardware-dependent tests:

CAN_AVAILABLE=1 colcon test --packages-select socketcan_adapter

Virtual CAN Setup

For testing without hardware:

sudo modprobe vcan
sudo ip link add dev vcan0 type vcan
sudo ip link set up vcan0

License

Licensed under the Apache License, Version 2.0. See LICENSE for the full license text.

Authors & Maintainers

  • Zeerek Ahmad - Original author - zeerekahmad@hotmail.com
  • Polymath Robotics Engineering Team - Maintainers - engineering@polymathrobotics.com

CONTRIBUTING

Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:

5. Submission of Contributions. Unless You explicitly state otherwise,
   any Contribution intentionally submitted for inclusion in the Work
   by You to the Licensor shall be under the terms and conditions of
   this License, without any additional terms or conditions.
   Notwithstanding the above, nothing herein shall supersede or modify
   the terms of any separate license agreement you may have executed
   with Licensor regarding such Contributions.
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that [license](http://www.apache.org/licenses/LICENSE-2.0.html): ~~~ 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. ~~~