An extension to connect Scratch 3 to ROS enabled platforms!
Supports:
- publishing and subscribing topics
- calling services
- getting and setting rosparam variables
This extension packs with utility blocks for creating and manipulating JSON objects, which are integrated to Scratch variables and used to represent ROS messages.
When communicating with the ROS interface, message types are mostly infered by the topic or service name, being occluded from the user. This way the user do not need to worry that much about types, allowing easier and more intuitive usage of this extension.
This also means, however, that this extension doesn't do well in advertising new topics or serving services. Maybe these will be supported in future releases, but for now Scratch interface is designed to act as a ROS client, publishing to topics and called nodes already advertised by some other node, which should be responsible to handle the message from Scratch and do all of the robotics stuff.
- Install ROS and the following dependencies. This project was tested on ROS kinetic, but should run well in other distributions as well.
# Install main dependencies
sudo apt install ros-kinetic-rosbridge-server
# Install examples dependencies
sudo apt install ros-kinetic-turtlesim ros-kinetic-actionlib-tutorials
-
Open a terminal and fire up the following command
roslaunch rosbridge_server rosbridge_websocket.launch
- Add the
ROS Extension
from the bottom left button and inputlocalhost
as the master URI
Examples can be found at the examples directory. To run the examples:
- On a terminal, launch
roslaunch rosbridge_server rosbridge_websocket.launch
- Access http://scratch3-ros.jsk.imi.i.u-tokyo.ac.jp and load the example file
- Click on the warning sign near the ROS blocks menu to connect with rosbridge. Use
localhost
as the master URI. - Check comments for other required nodes
- Click the green flag to start!
Details of provided blocks can be found at BLOCKS.md.
Git clone the repositories below and follow instructions at https://github.com/LLK/scratch-gui/wiki/Getting-Started
- https://github.com/Affonso-Gui/scratch3-ros-gui
- https://github.com/Affonso-Gui/scratch3-ros-vm
- https://github.com/Affonso-Gui/scratch3-ros-parser
You can include Scratch3-ROS on your Scratch project and create custom block libraries for your own robot. An example is given in the fetch_extension
branch: