This demonstrates the structure of a ROS project that works with RoboMaker by creating a robot spinning in an empty world.
RoboMaker sample applications include third-party software licensed under open-source licenses and is provided for demonstration purposes only. Incorporation or use of RoboMaker sample applications in connection with your production workloads or a commercial products or devices may affect your legal rights or obligations under the applicable open-source licenses. Source code information can be found here.
The following will be installed:
- Colcon - Used for building and bundling the application.
- vcstool - Used to pull in sample app dependencies that are only available from source, not from apt or pip.
- rosdep - rosdep is a command-line tool for installing system dependencies of ROS packages.
- ROS Melodic - Other versions may work, however they have not been tested. ROS installation will be skipped if a ROS distro is already installed.
source scripts/setup.sh
- Robot Application
cd robot_ws
colcon build
- Simulation Application
cd simulation_ws
colcon build
The TURTLEBOT3_MODEL
environment variable is optional when running both robot and simulation application. Default value is waffle_pi
. Valid values are burger
, waffle
, and waffle_pi
. Set it by
export TURTLEBOT3_MODEL=<robot-model>
Launch the application with the following commands:
-
Running Robot Application on a Robot
source robot_ws/install/local_setup.sh roslaunch hello_world_robot deploy_rotate.launch
-
Running Robot Application in a Simulation
source robot_ws/install/local_setup.sh roslaunch hello_world_robot rotate.launch
-
Running Simulation Application
source simulation_ws/install/local_setup.sh roslaunch hello_world_simulation empty_world.launch
Note that when running robot applications on a robot, use_sim_time
should be set to false
(which is the default value in deploy_rotate.launch.py
). When running robot applications along with simulation applications, use_sim_time
should be set to true
for both applications (which is the default value in both rotate.launch.py
and empty_word.launch.py
).
When running simulation applications, run command with gui:=true
to run gazebo client for visualization
After exporting a world from WorldForge, we can unzip the content and move under simulation_ws package:
unzip exported_world.zip
mv aws_robomaker_worldforge_pkgs simulation_ws/src/
Build it again
cd simulation_ws
colcon build
Launch the application with the following commands:
source simulation_ws/install/local_setup.sh
roslaunch hello_world_simulation worldforge_world.launch
By default, WorldForge packages will load the exported world. To override, specify the environment variable WORLD_ID
.
# use worldId found in "src/aws_robomaker_worldforge_worlds/worlds"
# e.g, generation_05wq8sybdcn2_world_1
export WORLD_ID=<worldId>
You first need to install Docker and VCS Import Tool (if you use VCS Import Tool). Python 3.5 or above is required.
pip3 install vcstool
After Docker and VCS Import Tool is installed you need to build your robot or simulation docker images:
# Import dependencies defined in .rosinstall to each source directory using vcs import
vcs import robot_ws < robot_ws/.rosinstall
vcs import simulation_ws < simulation_ws/.rosinstall
# Building Robot Application Docker Image
DOCKER_BUILDKIT=1 docker build . \
--build-arg ROS_DISTRO=melodic \
--build-arg LOCAL_WS_DIR=./robot_ws \
--build-arg APP_NAME=helloworld-robot-app \
-t robomaker-helloworld-robot-app
# Building Simulation Application Docker Image
DOCKER_BUILDKIT=1 docker build . \
--build-arg GAZEBO_VERSION=gazebo-9 \
--build-arg ROS_DISTRO=melodic \
--build-arg LOCAL_WS_DIR=./simulation_ws \
--build-arg APP_NAME=helloworld-sim-app \
-t robomaker-helloworld-sim-app
This produces the Docker Images robomaker-helloworld-robot-app
and robomaker-helloworld-sim-app
respectively which you can view by running:
# Listing your Docker Images
docker images
You'll need to upload these images to Amazon ECR, then you can use these files to create a robot application, create a simulation application, and create a simulation job in RoboMaker. Visit the preparing-ros-application-and-simulation-containers-for-aws-robomaker blog post to find the steps to upload these docker images to Amazon ECR.
/rotate
/clock
/cmd_vel
MIT-0 - See LICENSE for further information
Create issues and pull requests against this Repository on Github