GithubHelp home page GithubHelp logo

hcrlab / kuri_wandering_robot Goto Github PK

View Code? Open in Web Editor NEW
10.0 4.0 0.0 914 KB

License: BSD 3-Clause "New" or "Revised" License

Shell 1.08% CMake 7.01% Dockerfile 1.63% Python 56.23% C++ 34.04%

kuri_wandering_robot's Introduction

Kuri Wandering Robot

This repository contains the code associated with the below paper. Please cite the paper if you use the code.

Nanavati, A., Walker, N., Taber, L., Mavrogiannis, C., Takayama, L., Cakmak, M., & Srinivasa, S. (2022, March). Not All Who Wander Are Lost: A Localization-Free System for In-the-Wild Mobile Robot Deployments. In Proceedings of the 2022 ACM/IEEE International Conference on Human-Robot Interaction.

The code is broadly divided into three components: motion (wandering_behavior), remote user interaction (slackbot), and the executive node that integrates the two (kuri_wandering_robot).

Getting Started

Hardware Requirements

  • A Kuri robot. The decision-making and and interaction components are robot agnostic (as of now), but the navigation component is robot-specific.
  • A remote computer, configured to enable a Flask app to run on it on ports 8193 and 8194 (instructions under "Slackbot" below). This computer should always be on, to recieve user responses to Slack messages.

Running Code On-Board the Robot: Dockerfiles

Both the wandering_behavior and the kuri_wandering_robot directories use Docker containers to isolate ROS versions and ensure the appropriate dependencies are installed. The appropriate Dockerfiles are included in the directories. To install Docker on Kuri, first configure the amd64 Docker PPA following the latest instructions. Then run:

sudo apt-get update
sudo apt-get install docker-ce

Images take a lot of space, so move /var/lib/docker to Kuri's microSD card and symlink the data back into place:

sudo service docker stop
sudo umount /var/lib/docker
sudo mv /var/lib/docker /mayfield/data/docker
sudo ln -s /mayfield/data/docker /var/lib/docker
sudo service docker start

To build a docker image, cd to the appropriate docker directory and run:

sudo docker build -t my-image .

To run a docker image, from any location run:

sudo docker run --rm --network host -v /home/mayfield/workspaces/my_workspace:/workspace -it my-image

Note that Kuri still needs its default code running outside the docker image, to communicate with its motors/sensors. Therefore, you should have one workspace that you compile outside the docker image (in ROS Indigo) with the default kuri code (melodic-devel branch). You should have another workspace that you compile within the docker image (in ROS Melodic) with this repository. Then, to run any code within a docker image on Kuri, outside the docker image run the default kuri launchfile, and inside the docker image run this code. More details can be found in the readme in the kuri_wandering_robot directory.

NOTE: For running the overall system, use the Dockerfile in kuri_wandering_robot. The Dockerfile in wandering_behavior should chiefly be used to run that node in isolation.

Slackbot

Refer to the readme in the slackbot directory. This code must run on a remote computer, so that it is guaranteed to be always on.

Wandering Behavior

Refer to the readme in the wandering_behavior directory.

Kuri Wandering Robot

This node is the executive node; it brings together the slackbot and navigation, and decision-making aspects of this system. Refer to the readme in the kuri_wandering_robot directory.

Deployment Code: Robot Photographer

As is mentioned in the paper, for the four-day deployment we extended this system to a robot photographer. That version of the code can be found in this commit.

kuri_wandering_robot's People

Contributors

amalnanavati avatar lee3206 avatar nickswalker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  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.