From 7fa7b75ea706fb077397fb2dc66d04e9a9afea25 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Thu, 12 May 2016 18:21:03 -0700 Subject: [PATCH 1/5] Adding demo for sros using docker --- docker/README.md | 11 +++++++ docker/sdemo/Dockerfile | 58 +++++++++++++++++++++++++++++++++ docker/sdemo/docker-compose.yml | 31 ++++++++++++++++++ docker/sdemo/ros_entrypoint.sh | 7 ++++ 4 files changed, 107 insertions(+) create mode 100644 docker/README.md create mode 100644 docker/sdemo/Dockerfile create mode 100644 docker/sdemo/docker-compose.yml create mode 100755 docker/sdemo/ros_entrypoint.sh diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 0000000000..6facdb97cd --- /dev/null +++ b/docker/README.md @@ -0,0 +1,11 @@ +# Dependences +* Docker + * https://docs.docker.com/linux/step_one/ +* Compose + * https://docs.docker.com/compose/install/ + +# Running Demo +``` bash +cd /ros_comm/docker/sdemo +docker-compose up +``` diff --git a/docker/sdemo/Dockerfile b/docker/sdemo/Dockerfile new file mode 100644 index 0000000000..e288d17a37 --- /dev/null +++ b/docker/sdemo/Dockerfile @@ -0,0 +1,58 @@ +FROM ubuntu:xenial + +# setup environment +RUN locale-gen en_US.UTF-8 +ENV LANG en_US.UTF-8 + +# setup keys +RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 421C365BD9FF1F717815A3895523BAEEB01FA116 + +# setup sources.list +RUN echo "deb http://packages.ros.org/ros/ubuntu xenial main" > /etc/apt/sources.list.d/ros-latest.list + +# install bootstrap tools +RUN apt-get update && apt-get install --no-install-recommends -y \ + python-rosdep \ + python-rosinstall \ + python-vcstools \ + && rm -rf /var/lib/apt/lists/* + +# tempfix for https://github.com/ros-infrastructure/rosdep/pull/454 +RUN apt-get update && apt-get install --no-install-recommends -y \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* + +# bootstrap rosdep +RUN rosdep init \ + && rosdep update + +# install build/run tools +# installing sudo and not removing apt cache for rosdep install later on +RUN apt-get update && apt-get install --no-install-recommends -y \ + build-essential \ + byobu \ + openssh-server \ + python-catkin-tools \ + python-wstool \ + wget \ + sudo + +# build ros packages +ENV ROS_DISTRO kinetic +ENV WORKSPACE /root/sros +WORKDIR $WORKSPACE +RUN wget https://gist.github.com/codebot/874494b34f5d02af2b24a5a312847b9c/raw -O kinetic-sros.rosinstall \ + && wstool init src kinetic-sros.rosinstall -j8 \ + && rosdep install -y --from-paths src --ignore-src --rosdistro kinetic \ + && catkin config --install \ + && catkin build + +RUN ssh-keygen -t rsa -f /root/.ssh/id_rsa -P "" + # && service ssh start \ + # && ssh-copy-id localhost + +# setup entrypoint +COPY ./ros_entrypoint.sh / + +ENTRYPOINT ["/ros_entrypoint.sh"] +CMD ["bash"] diff --git a/docker/sdemo/docker-compose.yml b/docker/sdemo/docker-compose.yml new file mode 100644 index 0000000000..35450545a9 --- /dev/null +++ b/docker/sdemo/docker-compose.yml @@ -0,0 +1,31 @@ +version: '2' + +services: + master: + build: . + environment: + - "ROS_HOSTNAME=master.sdemo_default" + - "ROS_SECURITY=ssl" + command: srosmaster + + talker: + build: . + environment: + - "ROS_HOSTNAME=talker.sdemo_default" + - "ROS_MASTER_URI=http://master.sdemo_default:11311" + - "ROS_SECURITY=ssl" + command: rosrun rospy_tutorials talker + + listener: + build: . + environment: + - "ROS_HOSTNAME=listener.sdemo_default" + - "ROS_MASTER_URI=http://master.sdemo_default:11311" + - "ROS_SECURITY=ssl" + command: rosrun rospy_tutorials listener + + # resolvable: + # image: mgood/resolvable + # volumes: + # - /var/run/docker.sock:/tmp/docker.sock + # - /etc/resolv.conf:/tmp/resolv.conf diff --git a/docker/sdemo/ros_entrypoint.sh b/docker/sdemo/ros_entrypoint.sh new file mode 100755 index 0000000000..37a522f419 --- /dev/null +++ b/docker/sdemo/ros_entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -e + +# setup ros environment +# source "/opt/ros/$ROS_DISTRO/setup.bash" +source $WORKSPACE/install/setup.bash +exec "$@" From 480f68fddff96ce2aa075a98c7a895924078fdc5 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 13 May 2016 17:23:33 -0700 Subject: [PATCH 2/5] Adding simple rosoutpy package --- tools/rosoutpy/CMakeLists.txt | 18 ++++++++++++++++++ tools/rosoutpy/README | 3 +++ tools/rosoutpy/launch/rosoutpy.launch | 3 +++ tools/rosoutpy/package.xml | 17 +++++++++++++++++ tools/rosoutpy/scripts/rosoutpy | 1 + tools/rosoutpy/scripts/rosoutpy.py | 22 ++++++++++++++++++++++ 6 files changed, 64 insertions(+) create mode 100644 tools/rosoutpy/CMakeLists.txt create mode 100644 tools/rosoutpy/README create mode 100644 tools/rosoutpy/launch/rosoutpy.launch create mode 100644 tools/rosoutpy/package.xml create mode 120000 tools/rosoutpy/scripts/rosoutpy create mode 100755 tools/rosoutpy/scripts/rosoutpy.py diff --git a/tools/rosoutpy/CMakeLists.txt b/tools/rosoutpy/CMakeLists.txt new file mode 100644 index 0000000000..18d321f9ba --- /dev/null +++ b/tools/rosoutpy/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 2.8.3) +project(rosoutpy) + +catkin_package(CATKIN_DEPENDS rospy rosgraph_msgs) + +catkin_install_python(PROGRAMS + scripts/rosoutpy + scripts/rosoutpy.py + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/scripts +) +install(FILES + launch/rosoutpy.launch + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/launch +) +install(FILES + README + DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}/ +) diff --git a/tools/rosoutpy/README b/tools/rosoutpy/README new file mode 100644 index 0000000000..750632f5ea --- /dev/null +++ b/tools/rosoutpy/README @@ -0,0 +1,3 @@ +# rosoutpy +A minimal rosout implementation in python +(no logging currently) diff --git a/tools/rosoutpy/launch/rosoutpy.launch b/tools/rosoutpy/launch/rosoutpy.launch new file mode 100644 index 0000000000..616d56f5ea --- /dev/null +++ b/tools/rosoutpy/launch/rosoutpy.launch @@ -0,0 +1,3 @@ + + + diff --git a/tools/rosoutpy/package.xml b/tools/rosoutpy/package.xml new file mode 100644 index 0000000000..2fc3f5e9e3 --- /dev/null +++ b/tools/rosoutpy/package.xml @@ -0,0 +1,17 @@ + + + rosoutpy + 0.0.1 + + A minimal rosout implementation in python + + Ruffin White + BSD + + Ruffin White + + catkin + + rospy + rosgraph_msgs + diff --git a/tools/rosoutpy/scripts/rosoutpy b/tools/rosoutpy/scripts/rosoutpy new file mode 120000 index 0000000000..58c29e9646 --- /dev/null +++ b/tools/rosoutpy/scripts/rosoutpy @@ -0,0 +1 @@ +rosoutpy.py \ No newline at end of file diff --git a/tools/rosoutpy/scripts/rosoutpy.py b/tools/rosoutpy/scripts/rosoutpy.py new file mode 100755 index 0000000000..bbdd5b9e28 --- /dev/null +++ b/tools/rosoutpy/scripts/rosoutpy.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python + +import rospy +import rosgraph_msgs + +class Rosout: + 'The rosout node subscribes to /rosout, logs the messages to file, and re-broadcasts the messages to /rosout_agg' + def __init__(self): + rospy.init_node('rosoutpy') + self.pub = rospy.Publisher("/rosout_agg", rosgraph_msgs.msg.Log, queue_size=0) + self.sub = rospy.Subscriber("/rosout", rosgraph_msgs.msg.Log, self.rosoutCallback, queue_size=1) + + def rosoutCallback(self, msg): + self.pub.publish(msg) + + # Main function. +if __name__ == '__main__': + try: + rosout = Rosout() + rospy.spin() + except rospy.ROSInterruptException: + pass From 45eb466d15ea0bcaedf9ce7433cfc9f45af65093 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 13 May 2016 17:26:20 -0700 Subject: [PATCH 3/5] Swapping rosoutpy for rosout (cpp) to test currrent sros python mods --- tools/roslaunch/resources/roscore.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/roslaunch/resources/roscore.xml b/tools/roslaunch/resources/roscore.xml index acde063660..0694918551 100644 --- a/tools/roslaunch/resources/roscore.xml +++ b/tools/roslaunch/resources/roscore.xml @@ -8,6 +8,7 @@ - + + From f243dd6105b5a109a01226032116ddfc875ae0cb Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 13 May 2016 18:01:44 -0700 Subject: [PATCH 4/5] Fix rosoutpy cmake --- tools/rosoutpy/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/rosoutpy/CMakeLists.txt b/tools/rosoutpy/CMakeLists.txt index 18d321f9ba..1b8de39c22 100644 --- a/tools/rosoutpy/CMakeLists.txt +++ b/tools/rosoutpy/CMakeLists.txt @@ -1,6 +1,8 @@ cmake_minimum_required(VERSION 2.8.3) project(rosoutpy) +find_package(catkin REQUIRED) + catkin_package(CATKIN_DEPENDS rospy rosgraph_msgs) catkin_install_python(PROGRAMS From bdb2b81e0919e9d3e155fe659bb2888063a668e7 Mon Sep 17 00:00:00 2001 From: ruffsl Date: Fri, 13 May 2016 18:20:06 -0700 Subject: [PATCH 5/5] Creating simpler test case with single container using docker compose --- docker/sdemo/docker-compose.old.yml | 31 +++++++++++++++++++++++++++++ docker/sdemo/docker-compose.yml | 19 +----------------- 2 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 docker/sdemo/docker-compose.old.yml diff --git a/docker/sdemo/docker-compose.old.yml b/docker/sdemo/docker-compose.old.yml new file mode 100644 index 0000000000..35450545a9 --- /dev/null +++ b/docker/sdemo/docker-compose.old.yml @@ -0,0 +1,31 @@ +version: '2' + +services: + master: + build: . + environment: + - "ROS_HOSTNAME=master.sdemo_default" + - "ROS_SECURITY=ssl" + command: srosmaster + + talker: + build: . + environment: + - "ROS_HOSTNAME=talker.sdemo_default" + - "ROS_MASTER_URI=http://master.sdemo_default:11311" + - "ROS_SECURITY=ssl" + command: rosrun rospy_tutorials talker + + listener: + build: . + environment: + - "ROS_HOSTNAME=listener.sdemo_default" + - "ROS_MASTER_URI=http://master.sdemo_default:11311" + - "ROS_SECURITY=ssl" + command: rosrun rospy_tutorials listener + + # resolvable: + # image: mgood/resolvable + # volumes: + # - /var/run/docker.sock:/tmp/docker.sock + # - /etc/resolv.conf:/tmp/resolv.conf diff --git a/docker/sdemo/docker-compose.yml b/docker/sdemo/docker-compose.yml index 35450545a9..60a2347a36 100644 --- a/docker/sdemo/docker-compose.yml +++ b/docker/sdemo/docker-compose.yml @@ -4,25 +4,8 @@ services: master: build: . environment: - - "ROS_HOSTNAME=master.sdemo_default" - "ROS_SECURITY=ssl" - command: srosmaster - - talker: - build: . - environment: - - "ROS_HOSTNAME=talker.sdemo_default" - - "ROS_MASTER_URI=http://master.sdemo_default:11311" - - "ROS_SECURITY=ssl" - command: rosrun rospy_tutorials talker - - listener: - build: . - environment: - - "ROS_HOSTNAME=listener.sdemo_default" - - "ROS_MASTER_URI=http://master.sdemo_default:11311" - - "ROS_SECURITY=ssl" - command: rosrun rospy_tutorials listener + command: bash -c "sroscore & rosrun rospy_tutorials listener & rosrun rospy_tutorials talker" # resolvable: # image: mgood/resolvable