A Dash of ROS turtlesim
Two Minute Intro
The default launch file included in this package,
tutorial.launch brings up a
turtlesim environment and starts
shape_server node. As mentioned in the documentation for
turtle_actionlib, the node is designed to control the simulated turtlebot so that it traces out a polygon of a specified radius with the desired number of edges.
The launch file also starts a Dash webserver on the port 8080. On navigating to that URL, you should see a web page like so:
There are 3 elements to the page that you can play with:
- The input boxes set the number of edges and the radius of the polygon that the turtlebot should trace out in the simulated environment. Hitting the
Trace Shapebutton sends those parameters to the
shape_serverif the values are valid.
- The shape server's status is shown below the inputs. This is simply the status of the ROS
- The graph plots the last 30 seconds (approximately) of the turtlebot's pose and velocity in the simulator.
Here is an example of the page as the turtlebot is executing a
sudo apt install ros-melodic-turtle-actionlib
- Install the pip dependencies (in a virtualenv if need be):
pip install -r requirements.txt
- Create a catkin workspace and include this package in it. Build the workspace.
To test your installation, source the newly created workspace and run:
roslaunch turtlesim_dash_tutorial tutorial.launch
dash server on the port 8080; navigate to http://localhost:8080 in order to view it.
The expected action server for tracing a polygon with the desired shape and number of edges with the simulated turtlebot.
The pose of the turtle being controlled as reported by the turtlesim node.
Some of the things that would be welcome additions in making this tutorial more complete:
- [ ] Add unit tests for each of the callbacks in
- [ ] Update the dashboard to use ROS params and services in order to better configure how the dashboard connects to turtlesim and the shape_server
- [ ] Update the web UI to control the ROS params and services
- [ ] Add the ability to control multiple simulated turtle bots