Skip to content
A Kvaser CAN interface ROS abstraction layer.
C++ CMake
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

Kvaser ROS Interface API


This package was developed as a standardized way to access Kvaser CAN devices from ROS. It can either be used as a development API by including the header <kvaser_interface/kvaser_interface.h> and linking against or the stand-alone node kvaser_can_bridge can communicate with a CAN device independently.

The following are required prerequisites:

  • The Kvaser CANLIB API (
    • Can be downloaded directly or installed through PPA:

      sudo apt-add-repository ppa:jwhitleyastuff/kvaser-linuxcan

      sudo apt update && sudo apt install -y kvaser-canlib-dev

    • You can optionally install the Kvaser drivers from the PPA with the following command:

      sudo apt install -y kvaser-drivers-dkms

    • For Linux kernel 4.13 or higher, version 5.21 or higher of CANLIB is required

  • can_msgs

The kvaser_can_bridge Node


can_tx [can_msgs::Frame]

This topic is published by the node. It expects to have other nodes subscribe to it to receive data which are sent by the CAN device.

can_rx [can_msgs::Frame]

This topic is subscribed to by the node. It expects to have data published to it which are intended to be received by the CAN device.



This is the Kvaser Hardware ID (serial number) of the connected device.


This is the 0-based index of the channel number on the specific hardware device designated by the ~can_hardware_id.


This is the communication rate to be used on the CAN channel in bits per second (default: 500000).



A simple tool with no ROS dependencies which returns a list of all Kvaser devices and channels available on those devices.


A simple tool with no ROS depedencies to output the CAN messages received on a given channel index (-i - default: 0) and bitrate (-b - default: 500000) to the terminal.

You can’t perform that action at this time.