• Stars
    star
    143
  • Rank 257,007 (Top 6 %)
  • Language
    C++
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

CANopen driver framework for ROS2

ROS2 CANopen

Status

Build Process Status
Industrial CI Build CI Build Status
Documentation Build CI Documentation Status
Buildfarm Build Buildfarm Status

The stack is currently under development and not yet ready for production use.

Binary Package (rolling) Jammy Rhel9
canopen_interfaces Build Status Build Status
lely_core_libraries Build Status Build Status
canopen_core Build Status Build Status
canopen_master_driver Build Status Build Status
canopen_base_driver Build Status Build Status
canopen_proxy_driver Build Status Build Status
canopen_402_driver Build Status Build Status
canopen_ros2_control Build Status Build Status
canopen_ros2_control Build Status Build Status
canopen_tests Build Status Build Status
canopen_utils Build Status Build Status

Documentation

The documentation consists of two parts: a manual and an api reference. The documentation is built for rolling (master), iron and humble and hosted on github pages. Older ROS 2 releases are EOL and are not supported anymore.

Rolling

Iron

Humble

Features

These are some of the features this stack implements. For further information please refer to the documentation.

  • YAML-Bus configuration This canopen stack enables you to configure the bus using a YAML file. In this file you define the nodes that are connected to the bus by specifying their node id, the corresponding EDS file and the driver to run for the node. You can also specify further parameters that overwrite EDS parameters or are inputs to the driver.
  • Service based operation The stack can be operated using standard ROS2 nodes. In this case the device container will load the drivers for master and slave nodes. Each driver will be visible as a node and expose a ROS 2 interface. All drivers are brought up when the device manager is launched.
  • Managed service based operation The stack can be opeprated using managed ROS2 nodes. In this case the device container will load the drivers for master and slave nodes based on the bus configuration. Each driver will be a lifecycle node and expose a ROS 2 interface. The lifecycle manager can be used to bring all device up and down in the correct sequence.
  • ROS2 control based operation Currently, multiple ros2_control interfaces are available. These can be used for controlling CANopen devices. The interfaces are:
    • canopen_ros2_control/CANopenSystem
    • canopen_ros2_control/CIA402System
    • canopen_ros2_control/RobotSystem
  • CANopen drivers Currently, the following drivers are available:
    • ProxyDriver
    • Cia402Driver

Post testing

To test stack after it was built from source you should first setup a virtual can network.

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

Then you can launch a managed example

ros2 launch canopen_tests cia402_lifecycle_setup.launch.py
ros2 lifecycle set /lifecycle_manager configure
ros2 lifecycle set /lifecycle_manager activate

Or you can launch a standard example

ros2 launch canopen_tests cia402_setup.launch.py

Or you can launch a ros2_control example

ros2 launch canopen_tests robot_control_setup.launch.py

Contributing

This repository uses pre-commit for code formatting. This program has to be setup locally and installed inside the repository. For this execute in the repository folder following commands:

sudo apt install -y pre-commit
pre-commit install

The checks are automatically executed before each commit. This helps you to always commit well formatted code. To run all the checks manually use pre-commit run -a command. For the other options check pre-commit --help.

In a case of an "emergency" you can avoid execution of pre-commit hooks by adding -n flag to git commit command - this is NOT recommended to do if you don't know what are you doing!

More Repositories

1

universal_robot

ROS-Industrial Universal Robots support (https://wiki.ros.org/universal_robot)
C++
1,082
star
2

industrial_training

ROS-Industrial Training Material
C++
422
star
3

ros_qtc_plugin

ROS Qt Creator Plug-in (https://ros-qtc-plugin.readthedocs.io)
C++
397
star
4

ros_canopen

CANopen driver framework for ROS (http://wiki.ros.org/ros_canopen)
C++
339
star
5

ur_modern_driver

(deprecated) ROS 1 driver for CB1 and CB2 controllers with UR5 or UR10 robots from Universal Robots
C++
302
star
6

kuka_experimental

Experimental packages for KUKA manipulators within ROS-Industrial (http://wiki.ros.org/kuka_experimental)
C++
268
star
7

industrial_ci

Easy continuous integration repository for ROS repositories
Shell
246
star
8

robotiq

Robotiq packages (http://wiki.ros.org/robotiq)
C++
227
star
9

ros2_i_training

HTML
169
star
10

industrial_core

ROS-Industrial core communication packages (http://wiki.ros.org/industrial_core)
C++
154
star
11

fanuc

ROS-Industrial Fanuc support (http://wiki.ros.org/fanuc)
C++
153
star
12

motoman

ROS-Industrial Motoman support (http://wiki.ros.org/motoman)
C++
146
star
13

abb

ROS-Industrial ABB support (http://wiki.ros.org/abb)
C++
145
star
14

yak

A library for integrating depth images into Truncated Signed Distance Fields.
C++
132
star
15

abb_experimental

Experimental packages for ABB manipulators within ROS-Industrial (http://wiki.ros.org/abb_experimental)
CMake
131
star
16

noether

Tool path planning and surface segmenter
C++
121
star
17

industrial_calibration

Contains libraries/algorithms for calibrating industrial systems
C++
120
star
18

abb_robot_driver

The new ROS driver for ABB robots
C++
100
star
19

reach

A tool that allows users to visualize and quantitatively evaluate the reach capability of a robot system for a given workpiece.
C++
94
star
20

industrial_moveit

ROS-Industrial movit meta-package (http://wiki.ros.org/industrial_moveit)
C++
93
star
21

abb_libegm

A C++ library for interfacing with ABB robot controllers supporting Externally Guided Motion (689-1)
C++
93
star
22

abb_librws

A C++ library for interfacing with ABB robot controllers supporting Robot Web Services
C++
69
star
23

robodk_postprocessors

Open-source vendor-specific post-processors/code generators from RoboDK (http://robodk.com)
Python
64
star
24

easy_perception_deployment

A ROS2 package that accelerates the training and deployment of CV models for industries.
Python
54
star
25

industrial_reconstruction

Tools for surface reconstruction from 2D depth images
Python
50
star
26

easy_manipulation_deployment

A ROS2 package that allows rapid digitization of robotic work cells and ease of efficient path-planning of manipulators.
C++
49
star
27

yak_ros

Example ROS frontend node for the Yak TSDF package
C++
48
star
28

cros

A single thread pure C implementation of the ROS framework
C
47
star
29

fanuc_experimental

Experimental packages for Fanuc manipulators within ROS-Industrial (http://wiki.ros.org/fanuc_experimental)
CMake
45
star
30

stomp_ros

ROS packages for the STOMP planner (split out of industrial_moveit)
C++
37
star
31

robot_movement_interface

Drivers implementing the Robot Movement Interface, which allows access to robot specific capabilities in a standardized common format while maintaining compatibility with the ROS-Industrial Joint interface.
C++
36
star
32

human_tracker

Library for detecting and tracking humans using 3D sensing systems (stereo and kinect-like)
36
star
33

flexgui_industrial

Moved to: https://github.com/PPM-Robotics-AS/flexgui4.0
JavaScript
31
star
34

kuka

ROS-Industrial KUKA support (http://wiki.ros.org/kuka)
CMake
30
star
35

abb_driver

(old) ROS driver for ABB IRC5 / RW5 or RW6 controllers (Simple Message & RAPID)
AMPL
29
star
36

staubli_experimental

Experimental packages for Staubli manipulators within ROS-Industrial (http://wiki.ros.org/staubli_experimental)
CMake
27
star
37

staubli_val3_driver

ROS-Industrial (simple message) driver for Stรคubli CS8 and CS9 robot controllers (VAL 3 application)
TeX
26
star
38

docker

ROS-Industrial docker and cloud tools
Dockerfile
23
star
39

stomp

Stochastic Trajectory Optimization for Motion Planning (STOMP)
C++
22
star
40

reach_ros2

ROS2 packages for REACH
C++
17
star
41

staubli

ROS-Industrial Staubli support (http://wiki.ros.org/staubli)
C++
17
star
42

ros_industrial_cmake_boilerplate

CMake
16
star
43

packml_ros2

State machine based system programming, monitoring and control in ROS 2
C++
16
star
44

motoman_experimental

Experimental packages for Motoman manipulators within ROS-Industrial
C++
15
star
45

abb_robot_driver_interfaces

ROS message and service definitions for a ROS driver for ABB robots
CMake
13
star
46

rep

ROS-Industrial REPs
12
star
47

crcl

11
star
48

workcell_explorer

Repository for GSoC 2018 focusing on creation of a ROS package for Robotic Workcell exploration
CMake
11
star
49

ur_msgs

ROS messages and services for Universal Robots robot controllers.
CMake
11
star
50

industrial_calibration_tutorials

Tutorials for industrial calibration package.
CMake
11
star
51

keyence_experimental

C++
10
star
52

siemens_tutorials

C++
10
star
53

ros_industrial_meetings

Repository for tracking ROS-Industrial developers meeting minutes
9
star
54

packet-simplemessage

Wireshark Lua dissector for the ROS-Industrial SimpleMessage protocol
Lua
8
star
55

reach_ros

ROS1 Packages for REACH
C++
8
star
56

siemens_experimental

C++
8
star
57

intelligent_actuator

ROS package for serial communication with the Robo Cylinder
Python
8
star
58

swri-ros-pkg

Automatically exported from code.google.com/p/swri-ros-pkg
C++
7
star
59

abb_egm_rws_managers

A C++ library for encapsulating ROS agnostic components for a ROS driver for ABB robots
C++
6
star
60

ros2_quality_assurance_guidelines

A collection of documentation which contains detailed instructions and tutorials for improving ROS 2 package quality, following REP-2004 quality level and integrating CI into one's development workflow.
Python
6
star
61

industrial_pcl_experimental

ROS Industrial addons, utilities, and other libraries that extend or are useful with the Point Cloud Library (PCL)
C++
5
star
62

jenkins_config

Contains jenkins CI configuration scripts.
Python
4
star
63

socketcan_interface

DO NOT USE YET
C++
4
star
64

industrial_experimental

Contains experimental packages for industrial_core.
C++
3
star
65

yak_ros2

Example ROS 2 frontend node for the Yak TSDF package
C++
3
star
66

ros_industrial_issues

Repository for tracking common ROS-Industrial issuses.
3
star
67

tolomatic

C++
2
star
68

industrial_pcl

ROS-Industrial PCL Extension meta-package. http://wiki.ros.org/industrial_pcl
C++
2
star
69

rvip

A ROS package for easy integration of a hybrid 2D-3D robotic vision technique for industrial tasks.
1
star
70

robotiq_experimental

Experimental robotiq packages within ROS-Industrial
C++
1
star
71

siemens_drivers

Open source drivers for Siemens devices
1
star
72

fake_ar_publisher

C++
1
star
73

ros_profinet_experimental

1
star
74

acuity

Support for acuity laser products
Python
1
star
75

error_resolution_diagnoser

C++
1
star
76

fanuc_demos

Demos of ROS(-Industrial) functionality specifically for (simulated) Fanuc robots
1
star
77

industrial_calibration_ros2

ROS Utilities for Industrial Calibration
Python
1
star
78

epd_onnxruntime_vendor

CMake
1
star
79

error_classification_server

Python
1
star