Package Summary

Tags No category tags.
Version 2.0.2
License MIT
Build type CATKIN

Repository Summary

Checkout URI
VCS Type git
VCS Version indigo
Last Updated 2019-04-30
CI status No Continuous Integration
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

Kvaser CAN interface for ROS device drivers.

Additional Links


  • AutonomouStuff Software Development Team


  • Joshua Whitley
  • Daniel Stanek

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 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/linuxcan-dkms

      sudo apt update && sudo apt install -y linuxcan-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).


Changelog for package kvaser_interface

2.0.2 (2018-09-13)

  • Bumping version.
  • Updating README with PPA and other information.
  • Cleaning up install script.
  • Adding melodic build. Fixing allowed_failures.
  • Fixing license in package.xml.
  • Fixed bug causing extremely high CPU utilization.
  • Fixing intermittent pause while checking can bus status.
  • corrects hard coding of sending extended IDs to use is_extended member
  • Updating package.xml to format 2.
  • Re-releasing under MIT license.
  • Adding install rule for launch file.
  • Removing debugging messages.
  • Setting Kvaser to not close on each write loop.
  • Changing writer to regular spin instead of async spinner.
  • Reducing number of threads used for can_write.
  • Reducing read time pause.
  • Turning off can_echo.
  • Changing script name to be more clear.
  • Cutting down on unecessary error messages.
  • Updating example launch file to match name changes.
  • Final changes for name change.
  • Preparing for name change to kvaser_interface.
  • Adding bit_rate and example launch file.
  • Adding node.
  • Moving Travis CI build status image in README.
  • Bumping version and cleaning up package.xml.
  • Changing many function params to const ref.
  • Modifying CPATH for linuxcan install.
  • Missed a state in is_open.
  • Adding the is_open function.
  • Add optional flag to open routine to turn off tx echo
  • Fixing license typos.
  • Changing BAD_PARAMS to BAD_PARAM.
  • Moved return_status_desc to utils.cpp for general use.
  • Adding CHANNEL_NOT_OPEN error.
  • Added CLOSE_FAILED. Made errors negative numbers. Added NO_CHANNELS_FOUND. Making the return statuses more standardized between can_interface and network_interface. Added the new return_statuses to the return_statuses_desc function.
  • Adding return_status_desc function.
  • Changing license to GPLv3.
  • Removing CanFrame in favor of can_msgs/Frame.
  • Changing size of id field to handle extended IDs (whoops).
  • Changing can_frame to CanFrame.
  • Fix loop in read routine to skip over TX ACK and other protocol type messages that the higher level application doesn\'t need.
  • Bypassed guts of open function if handle is already on-bus.
  • Making devel version match install version.
  • Adding basic README.
  • Moved canBusOn.
  • Going on bus in read/write instead of open.
  • Close channel in destructor if still valid.
  • Changing names to conform to ROS C++ style guide.
  • Adding repository URL to package.
  • Initial commit.
  • Contributors: Christopher Vigna, Daniel Stanek, Joe Kale, Joshua Whitley, Lucas Buckland, Sam Rustan, driscoll85

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files


No message files found.


No service files found


No plugins found.

Recent questions tagged kvaser_interface at Robotics Stack Exchange