Skip to content

Demonstrates the structure of ROS projects that work with AWS RoboMaker by creating a robot spinning in an empty world.

License

Notifications You must be signed in to change notification settings

pec017/robomaker-helloworld

 
 

Repository files navigation

AWS RoboMaker Sample Application - Hello World

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.

Requirements

  • ROS Kinetic / ROS Melodic - Other versions may work, however they have not been tested
  • Colcon - Used for building and bundling the application.

Build

Install requirements

Follow links above for instructions on installing required software.

Pre-build commands

sudo apt-get update
rosdep update

Robot

cd robot_ws
vcs import < .rosinstall
rosdep install --from-paths src --ignore-src -r -y
colcon build

Simulation

cd simulation_ws
vcs import < .rosinstall
rosdep install --from-paths src --ignore-src -r -y
colcon build

Run

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

Run with a WorldForge world

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>  

Using this sample with RoboMaker

You first need to install colcon-ros-bundle. Python 3.5 or above is required.

pip3 install -U setuptools
pip3 install colcon-ros-bundle

After colcon-ros-bundle is installed you need to build your robot or simulation, then you can bundle with:

# Bundling Robot Application
cd robot_ws
source install/local_setup.sh
colcon bundle

# Bundling Simulation Application
cd simulation_ws
source install/local_setup.sh
colcon bundle

This produces the artifacts robot_ws/bundle/output.tar and simulation_ws/bundle/output.tar respectively. You'll need to upload these to an s3 bucket, then you can use these files to create a robot application, create a simulation application, and create a simulation job in RoboMaker.

ROS Nodes launched by this Sample

Nodes created by this sample

/rotate

ROS Topics used by this Sample

/clock
/cmd_vel

License

MIT-0 - See LICENSE for further information

How to Contribute

Create issues and pull requests against this Repository on Github

About

Demonstrates the structure of ROS projects that work with AWS RoboMaker by creating a robot spinning in an empty world.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • CMake 42.7%
  • Python 26.5%
  • Shell 17.2%
  • Makefile 13.6%