MATLAB Answers

0

Simulink + ROS + Arduino code generation

Asked by Multiplexer on 4 Dec 2017
Latest activity Commented on by Madhu Govindarajan on 5 Dec 2018
Hello,
I'm working with Simulink on my main computer and ROS Kinetic running on separate computer under Ubuntu 16. There is also an arduino Uno board.
Now i know that i can use Simulink to deploy standalone nodes on ROS computer. I can also install Arduino IDE on ROS computer and program Arduino connected to it to use ROS serial to publish/subscribe to messages.
But can i somehow use Simulink to deploy code to Arduino so it can communicate with ros?

  1 Comment

The Simulink ROS code deployment relies on target machine to have: - Linux - ROS installed - catkin_make installed
As these are not available on Arduino, you will have to work with Raspberry Pi (which has a Linux operating system).
You can use the same steps for code deployment from Simulink ROS when connected to a Raspberry Pi, but as the Pi needs to be configured (i.e., ROS installed) we have a image available for Raspi, read more here:
https://www.mathworks.com/help/supportpkg/raspberrypi/examples/getting-started-with-robot-operating-system-ros-on-raspberry-pi-r.html

Sign in to comment.

2 Answers

Answer by MathWorks Robotics Team on 5 Dec 2017

The Simulink ROS code deployment relies on target machine to have: - Linux - ROS installed - catkin_make installed
As these are not available on Arduino, you will have to work with Raspberry Pi (which has a Linux operating system).
You can use the same steps for code deployment from Simulink ROS when connected to a Raspberry Pi, but as the Pi needs to be configured (i.e., ROS installed) we have a image available for Raspi, read more here:
https://www.mathworks.com/help/supportpkg/raspberrypi/examples/getting-started-with-robot-operating-system-ros-on-raspberry-pi-r.html

  1 Comment

With ROS deployed on Raspberry Pi, will I be able to use "Raspberry Pi Support from Simulink" blocks for GPIO/PWM/I2C/SPI simultaneously with "Robotics System Toolbox" blocks for ROS publish/subscribe to say have a node read ADC and publish it to topic?

Sign in to comment.


Answer by SMEAC
on 29 Nov 2018

It can actually be achieved using rosserial_arduino, a ROS package. It does require a little bit of modification to get working, but for this reason I have uploaded a demonstration model, showing a publisher, two subscribers working together with a stateflow block and working in external mode:
Regards
Gavin

  1 Comment

This is really cool. It will be great if you can record a simple video showing these in action so that it is easy for users to understand what to expect.
You can embed YouTube video links on the description so that users can see all of it in one page.

Sign in to comment.