GithubHelp home page GithubHelp logo

yixin-shen-1218 / canopenrobotcontroller Goto Github PK

View Code? Open in Web Editor NEW

This project forked from unimelbhumanroboticslab/canopenrobotcontroller

0.0 0.0 0.0 14.58 MB

CORC: free and open source robot development software stack in C++

License: Apache License 2.0

Shell 0.05% C++ 80.42% Python 0.07% C 10.06% HTML 8.90% CMake 0.50%

canopenrobotcontroller's Introduction

CANOpen Robot Controller (CORC) Project

CORC is a free and open source robotic development software stack, written in C++.

The project was initiated at the University of Melbourne in partnership with Fourier Intelligence, however has welcomed (and continues to welcome) collaborators from all institutions. The project was initially developed to run on an ExoMotus X2 Exoskeleton powered by a Beaglebone Black, however, the software is designed to be extensible to any embedded Linux and CANopen enabled Robotic platform. The repository currently also includes code which has been run on the ArmMotus M1, M2 and M3 (EMU) rehabilitation devices, and using desktop or laptop Ubuntu installations.

The CANOpen Robot Controller project includes:

  • An extensible framework to represent multibody rigid robotic systems.
  • An event driven state machine to develop custom applications (see here).
  • An implementation of CANopen Socket to provide an interface between CAN enabled embedded Linux system and CANopen-based motor drivers/sensors.
  • Documentation (this page and associated ones and code Doxygen).
  • Functional application examples.

Project Overview

The code is structured into 3 levels:

  1. The CANopen Communications Level: Provides the CAN-level communications, providing the mechanisms for the sending and receiving of PDO and SDO messages
  2. The Robot Level: Defines the components of the Robot to be controlled, including the joints, associated drives, and input devices
  3. The Application Layer: Defines the high level logic for the device, based on the implementation of a State Machine.

Whilst the code can be modified at any level, this structure is designed to provide a degree of modularity. The CANopen Communications level should not need to be changed. The Robot level should only change with respect if the robot to be controlled changes. This is loosely enforced by the source code folder structure - the files which should not need modification are placed in the src/core folder, and the remainder are placed in the src/apps and src/hardware folders. Note that in addition to the CANopen Communication code, the src/core folder also includes base classes which are derived from in the src/apps and src/hardware folders.

Getting started with CORC

See the detailed document here

Next Steps

Building a custom application with a custom state machine

See this detailed explanation for instructions to customise an application or derive your own.

Logging system (spdlog)

CORC relies on spdlog for both general logging (terminal and in file) and for data logging. See here for more info on using the logging system.

ROS Support

See here for instructions on how to build and run a CORC app with ROS support.

Network communication

See here for instructions on using libFLNL for communication.

CAN-USB adapters

See this page for notes on tested USB-CAN adapters.

Generating the code documentation

To generate the Doxygen documentation of the code you can simply run doxygen Doxyfile in the root folder. This will generate an HTML documentation in the doc/html folder.

Developer Information

Contributors

The following individuals have made contributions to CORC:

  • William Campbell
  • Vincent Crocher
  • Emek Barış Küçüktabak
  • Justin Fong
  • Yue Wen
  • Tim Haswell
  • Xinliang Guo
  • Benjamin von Snarski

Please contact fong.j[at]unimelb.edu.au with questions or suggestions for continuing development, or if you wish to be more involved in the planning/organisation of CORC.

License

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

canopenrobotcontroller's People

Contributors

vcrocher avatar emekbaris avatar justincmfong avatar ywen3 avatar shortmr avatar willbotics avatar xinlianggunimelb avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.