diff --git a/Dockerfile b/Dockerfile index 850ab0f..2431905 100644 --- a/Dockerfile +++ b/Dockerfile @@ -55,4 +55,10 @@ WORKDIR $ROS_WS RUN . /opt/ros/$ROS_DISTRO/install/setup.sh && \ colcon build --symlink-install \ --cmake-args \ - -DCMAKE_BUILD_TYPE=Release \ No newline at end of file + -DCMAKE_BUILD_TYPE=Release + +# https://docs.docker.com/engine/reference/builder/#stopsignal +# https://hynek.me/articles/docker-signals/ +STOPSIGNAL SIGINT +# run ros package launch file +# CMD ["ros2", "launch", "nanosaur_bringup", "bringup.launch.py"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..58fe2e4 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,42 @@ +# Copyright (C) 2022, Raffaello Bonghi +# All rights reserved +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +version: "3.9" +services: + perception: + image: nanosaur/edge_impulse:latest + network_mode: ${DOCKER_NETWORK:-host} + restart: always + privileged: true + depends_on: + - "core" + environment: + - ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-0} + - RMW_IMPLEMENTATION=${NANOSAUR_RMW:-rmw_cyclonedds_cpp} + labels: + - "com.centurylinklabs.watchtower.scope=nanosaur" + volumes: + # if you want change the nanosaur configuration + # Read https://github.com/rnanosaur/nanosaur/wiki/configuration \ No newline at end of file diff --git a/ei_nanosaur.sh b/ei_nanosaur.sh new file mode 100755 index 0000000..31164df --- /dev/null +++ b/ei_nanosaur.sh @@ -0,0 +1,82 @@ +#!/bin/bash +# Copyright (C) 2022, Raffaello Bonghi +# All rights reserved +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +bold=`tput bold` +red=`tput setaf 1` +green=`tput setaf 2` +yellow=`tput setaf 3` +blue=`tput setaf 4` +reset=`tput sgr0` + +usage() +{ + if [ "$1" != "" ]; then + echo "${red}$1${reset}" >&2 + fi + + local name=$(basename ${0}) + echo "$name Edge impulse on nanosaur." >&2 + echo "${bold}Commands:${reset}" >&2 + echo " $name help This help" >&2 + echo " $name run Run nanosaur ei in debug mode" >&2 + echo " $name build Build docker" >&2 +} + +main() +{ + # Check if run in sudo + if [[ `id -u` -eq 0 ]] ; then + echo "${red}Please don't run as root${reset}" >&2 + exit 1 + fi + local option=$1 + if [ -z "$option" ] ; then + usage + exit 0 + fi + # Load all arguments except the first one + local arguments=${@:2} + + # Options + if [ $option = "help" ] || [ $option = "-h" ]; then + usage + exit 0 + elif [ $option = "run" ] ; then + docker run -it --rm nanosaur/edge_impulse:latest bash + exit 0 + elif [ $option = "build" ] ; then + # cover $arguments + echo "${green}Build Edge Impulse nanosaur docker ${reset}" + docker build -t nanosaur/edge_impulse:latest . + exit 0 + fi + + usage "[ERROR] Unknown option: $option" >&2 + exit 1 +} +main $@ +exit 0 +# EOF diff --git a/nanosaur_ei/CMakeLists.txt b/nanosaur_ei/CMakeLists.txt new file mode 100644 index 0000000..f2f7566 --- /dev/null +++ b/nanosaur_ei/CMakeLists.txt @@ -0,0 +1,21 @@ +cmake_minimum_required(VERSION 3.5) + +project(nanosaur_ei) + +################################################################################ +# Find ament packages and libraries for ament and system dependencies +################################################################################ +find_package(ament_cmake REQUIRED) + +################################################################################ +# Install +################################################################################ +install( + DIRECTORY launch + DESTINATION share/${PROJECT_NAME} +) + +################################################################################ +# Macro for ament package +################################################################################ +ament_package() \ No newline at end of file diff --git a/nanosaur_ei/launch/edge_impulse.launch.py b/nanosaur_ei/launch/edge_impulse.launch.py new file mode 100644 index 0000000..b9d018d --- /dev/null +++ b/nanosaur_ei/launch/edge_impulse.launch.py @@ -0,0 +1,25 @@ +# Copyright (C) 2022, Raffaello Bonghi +# All rights reserved +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, +# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, +# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +