Close
0%
0%

CVRA's Robotics CAN Ecosystem

An open-source panoply of UAVCAN connected boards to enable smart sensors and actuators for modular robotics development

Similar projects worth following
At CVRA, we build robots to participate in the Eurobot competition every year. The tasks change for each edition, and we have 6 months to build our mobile robots that need to solve tasks involving object collection, sorting, and construction.

Until 2014, we used FPGAs in our robots, but this centralized system was very limiting. In 2015, we started developing a reusable set of modular boards. All boards would connect to a master board via UAVCAN.

Over the years, we built many boards, expanding our ecosystem of CAN connected boards that now contains:
- Motor boards to control a single DC motor in voltage, torque, velocity, or position.
- IO boards for generic digital I/O and RC servo control
- Sensor boards for color and short distance measurement
- Beacon boards for global positioning

All open-source under permissive licenses (MIT / CC-BY)

All of our boards were drawn using KiCad and are released under the CC-BY 4.0 license.
Our software is released under MIT license, additionally we have ChibiOS RTOS/HAL (GPLv3 license) and UAVCAN (MIT license) as core dependencies.
The CAN bootloader is released under BSD 2-clause license.

Motor board

The motor board is a small board (31x16mm) with a dedicated STM32F3 microcontroller that is at the core of all our robots since 2015.
We have been using it to control DC motors, motor pumps, and RC servos.
Here are its main features:

  •  CAN interface with communication over UAVCAN for parameter/gain setting, setpoint sending, and feedback streaming.
  • CAN bootloader for easy firmware update over the bus.
  • Control a single DC motor with current sensing, allowing cascaded PID control (torque, velocity, and position).
  • H-bridge to drive the motor bidirectionally that supports driving a motor with up to 16.8V @ 6.6A continuously.
  • Quadrature encoder interface for motor (5V tolerant).
  • Secondary quadrature encoder interface (5V tolerant) (eg. for separate odometry wheels).
  • Analog input for RC-servo control.
  • Digital input for indexing, allows us to determine a reference location on a given axis that can be used for absolute positioning.
  • Runs on 3 or 4 cell LiPo/LiFe batteries.
  • SWD connector for flashing and debugging, with UART exposed on the same connector.
  • Costs < 35 USD in components.

Links

  • Hardware including KiCad files, the schematics in PDF, and gerber files.
  • Software using ChibiOS RTOS/HAL, and UAVCAN for communication.

IO board

The IO board is a 23x15mm board with a dedicated STM32F3 microcontroller and the following features:

  • CAN interface with communication over UAVCAN for IO control (read / write).
  • CAN bootloader for easy firmware update over the bus.
  • 11 GPIOs exposing:
    • Digital outputs, including timer channels for PWM,
    • Digital inputs, including timer channels for pulse counting,
    • Analog inputs (ADC).
  • Communication busses such as I²C and SPI.
  • Molex Picoblade connectors for wiring CAN in daisy chain.- SWD connector for flashing and debugging, with UART exposed on the same connector.
  • Costs < 10 USD in components.

Current application software allows a general purpose usage exposing basic I/O control over UAVCAN: PWM output and digital inputs.

Links

  • Hardware including KiCad files, the schematics in PDF, and gerber files.
  • Software using ChibiOS RTOS/HAL, and UAVCAN for communication.

Sensor board

The sensor board is a 23x17mm with a dedicated STM32F3 microcontroller and the following features:

  • CAN interface over which sensor data are streamed over UAVCAN.
  • CAN bootloader for easy firmware update over the bus.
  • Distance time-of-flight sensor (VL6180X) can measure distances from 10mm to 100mm with 1mm resolution.
  • RGB Color sensor (TCS34725) with external illumination using a white LED
  • Molex Picoblade connection for wiring CAN in daisy chain.
  • SWD connector for flashing and debugging, with UART exposed on the same connector.
  • 2x M2 holes for mounting
  • Costs < 25 USD in components.

Current application software only supports the distance sensor.
Color sensor support is work in progress.

Links

  • Hardware including KiCad files, the schematics in PDF, and gerber files.
  • Software using ChibiOS RTOS/HAL, and UAVCAN for communication.

Beacon board

The Beacon board is a 42x30mm with a dedicated STM32F4 microcontroller and the following features:

  • CAN interface with communication over UAVCAN.
  • CAN bootloader for easy firmware update over the bus.
  • An Ultra-Wide Band (UWB) module from Decawave for communication and beacon to beacon distance measurement
  • Molex Picoblade connectors for wiring CAN in daisy chain.
  • Micro USB connector for debugging and flashing via DFU.
  • SWD connector for flashing...
Read more »

motor-board.pdf

Motor board schematics

Adobe Portable Document Format - 79.10 kB - 06/04/2018 at 10:50

Preview

io-board.pdf

IO board schematics

Adobe Portable Document Format - 55.57 kB - 06/04/2018 at 10:50

Preview

sensor-board.pdf

Sensor board schematics

Adobe Portable Document Format - 62.23 kB - 06/04/2018 at 10:50

Preview

beacon-board.pdf

Beacon board schematics

Adobe Portable Document Format - 111.24 kB - 06/04/2018 at 10:50

Preview

can-usb-adapter.pdf

CAN USB adapter schematics

Adobe Portable Document Format - 76.29 kB - 06/04/2018 at 10:50

Preview

  • Twin bots win second place

    Salah Missri06/04/2018 at 11:26 0 comments

    April 2018.

    This year, we built twin robots: Order and Chaos, using our modular ecosystem of CAN boards.
    Each robot contained 18 boards (1 beacon, 1 adapter, 1 sensor, 3 IO, 12 motor).

    We won the second place at the Swiss national competition (SwissEurobot).
    Read our full blog post for more details.

  • Let's make this bot smarter!

    Salah Missri06/04/2018 at 11:20 0 comments

    March 2018.

    First use case of our new sensor board: we put one at the end of each arm.
    The arm of the robot is used this year to build towers. These are made of 60mm cubes of different colors. We use this board to verify if cubes are picked up properly, and if the tower is build according to the plan.

  • We need more sensors

    Salah Missri06/04/2018 at 11:15 0 comments

    March 2018.

    A new member to the family: sensor boards.
    These are going to be useful for short distance measurement and RGB color detection.

    We made a small batch of 5 boards to start, and got to use our new modified toaster oven with a pre-programmed reflow profile.

  • Time for expansion

    Salah Missri06/04/2018 at 11:08 0 comments

    April 2016.

    This year's new addition is an IO board. It's cheap, small, and connected, what else?

    Don't they look great fresh out of the oven?

  • First robots with motor boards

    Salah Missri06/04/2018 at 11:01 0 comments

    June 2015.

    Wiring of the robots went well, although we had a lot of motors to wire.
    If you didn't trust us when we told you the board fits on the back of an RC servo, here is a picture of the main robot's arm featuring three grippers each driven by a hobby RC servo modified using our motor boards.

    Our new modular robot concept won the jury award at the Swiss national competition.

  • Motor boards manufacturing

    Salah Missri06/04/2018 at 10:57 0 comments

    April 2015.

    The firmware is all done, or at least good enough for now.
    Four of our members spent 20 hours over a weekend to assemble the remaining 55 boards.

    We split tasks with one person testing boards, and the three others applying the solder paste on the boards using a stencil and placing the components on the board.
    We turned this space into a Shenzhen factory.

    We made a board holder out of plaster so we could easily solder boards in batches of five in our toaster oven.

    And here they are, fresh out of the oven, 55 motor boards soldered and tested.

    Don't stare too much or you might get hypnotized!

    All 60 boards are done. Time to build robots!

  • Motor board design is done

    Salah Missri06/04/2018 at 10:53 0 comments

    January 2015.

    The board design is done!
    It passed review, and we ordered 100 PCBs and components for assembling 60 boards. We only need about 40 boards for our two robots, but we need spares too, better safe than sorry.

    The final version is 30.8mm by 16.0mm and fits on the back of a big hobby RC servo.

    Schematics, gerber files, and KiCad files are all available on Github.

View all 7 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates