Coder Social home page Coder Social logo

zmichaels11 / roscon19_security_workshop Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ros-swg/roscon19_security_workshop

0.0 1.0 0.0 18.91 MB

Security Workshop | ROSCon 2019

Home Page: https://ros-swg.github.io/ROSCon19_Security_Workshop

roscon19_security_workshop's Introduction

SROS2 Tutorial

In this tutorial, we'll walk through the setup and demonstrate the use of SROS2 using the Turtlebot3 platform from Robotis.

Installation and Setup

Read the INSTALL.md for setup instructions to configure your Turtlebot image.

Provisioning Security artifacts

To gather the necessary security artifacts for using Secure DDS, i.e. the signed permission files, identity certificates and Certificate Authorities (CA), clone the demo keystore onto your workstaion and turtlebot.

cd ~/
git clone https://github.com/ruffsl/keymint_ws.git --branch sros2_demo --single-branch

You can also germinate new keys using a new CAs as well. To quickly do this, we can use the Kemint CLI tool within a docker container on your workstation to update the local keystore. Not that you will need to re-sync the necessary public CA certs and updated key with turtlebot, say via ssh or rsync.

export KEYMINT_WS=$HOME/keymint_ws
mkdir $KEYMINT_WS
docker run -it --rm \
    --workdir=$KEYMINT_WS \
    --volume=$KEYMINT_WS:$KEYMINT_WS:rw \
    --user=`id -u $USER` \
    keymint/keymint_tools

keymint keystore init # initializes new CAs
for f in src/*
do
  keymint keystore build_pkg $f
done
exit

Running SROS2

To use ROS2 to secure the existing turtlebot demo, we'll set the necessary environmental variables on both the workstation and the turtlebot before launching the turtlebot bringup on the pi and rviz on the wrokstation

On both systems

source $HOME/ws/turtlebot3/install/setup.bash
export ROS_DOMAIN_ID=0
export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
export ROS_SECURITY_ROOT_DIRECTORY=$HOME/keymint_ws/install
export ROS_SECURITY_ENABLE=true
export ROS_SECURITY_STRATEGY=Enforce

On the turtlebot Note we silence stdout due to a current issue with FastRTPS warnings

ros2 launch turtlebot3_bringup turtlebot3_remote.launch.py > /dev/null 2>&1

One the workstation

rviz2

To switch back and disable security, simple update ROS_SECURITY_ENABLE:

export ROS_SECURITY_ENABLE=false

Keymint and ComArmor

For more information on Keymint and ComArmor, the supplemental development tools used to simplify the keystore setup, checkout the projects here:

roscon19_security_workshop's People

Contributors

ruffsl avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.