Skip to content

Control a robot through a web interface with visual feedback (CentraleSupélec 2019)

Notifications You must be signed in to change notification settings

AB036/remote_robot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Remote robot

Python Python Django ROS

Control your robot remotely!

Contents

Install

You'll need:

  • Python 3.6+ for the webserver
  • Python 2.7 for ROS
  • Install ROS kinetic

ROS runs on GNU/Linux, but other systems may be supported (more info here). We recommend using the Ubuntu 16.04 (Xenial) release.

To download the project, you can use git

git clone https://github.com/AB036/remote_robot

or download it from Github.

Server

Web server

First, prepare the environment of the web server:

cd remote_robot_web
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python3 manage.py migrate

ROS server

Now let's prepare the ROS part of the server. Open a new terminal and prepare the ROS environment:

mkdir -p ~/catkin_ws/src
cd catkin_ws/
catkin_make
source devel/setup.bash

The path of your catkin workspace might change depending on your ROS installation.

Put the content of remote_robot_ros/ into catkin_ws/src/ and install the libraries:

cd catkin_ws/src/remote_robot/
pip install -r requirements.txt

Then make the file ros_server.py executable with:

cd catkin_ws/src/remote_robot/scripts/
chmod +x ros_server.py

Launch catkin_make from your catkin workspace.

cd ~/catkin_ws
catkin_make

User guide

Server

Web server

Open a new terminal and cd into the project. Start the development server:

cd remote_robot_web
python manage.py runserver	

The app will be available at http://localhost:8000.

By default, the thread to manage local communication between the web server and the ROS part won't start in development. To activate it, use:

python manage.py runserver --noreload	

ROS server

Open a new terminal and start the ROS core:

source ~/catkin_ws/devel/setup.bash
roscore

Once again, the path of your catkin workspace might change depending on your ROS installation.

Now open a new terminal and start the ROS node:

source ~/catkin_ws/devel/setup.bash
rosrun remote_robot ros_server.py

The robot

Connecting the robot

Just connect your robot to the server by adding the server to the file /etc/hosts and configuring the following environment variable:

export ROS_MASTER_URI=http://<ip_server>:<port>

Now you can start:

  • Subscribing to commands on the node commands
  • Publishing the video stream on the node video_frame.

Using our package (Raspberry - Python 2.7)

If you wish to use our package for the robot, you'll need a Raspberry with Python 2.7.

Prepare the ROS environment:

mkdir -p ./catkin_ws/src
cd catkin_ws/
catkin_make
source devel/setup.bash

Put the content of rasp/Code in catkin_ws/src/giopek/ and install the libraries:

cd catkin_ws/src/giopek/
pip install -r requirements.txt

Then make the file ros_package_raspberry.py executable with:

cd catkin_ws/src/giopek/scripts/
chmod +x ros_package_raspberry.py

Connect to the server and launch the node:

cd catkin_ws/
catkin_make
source devel/setup.bash
rosrun giopek ros_package_raspberry.py

Virtual robot

If you wish to test the project and you don't have a robot, we built a virtual robot that simulates a real one. You just have to make the file executable and run it

cd catkin_ws/src/remote_robot/scripts/
chmod +x virtualbot.py
cd catkin_ws/
catkin_make
source devel/setup.bash
rosrun ros_remote_robot_server virtualbot.py

Features

Here's what you can do with Remote Robot:

  • View safely from your computer what your robot sees.
  • Control the robot to explore the environment.
  • Chat with your friends about the livestream.

Techniques

Here are the techniques we used to build Remote Robot:

  • Object Oriented Programming (OOP) in Python.
  • Client-server architecture.
  • Web application development using Django.
  • HTML/CSS/JS web development.
  • Embedded programming in Python on Raspberry Pi.
  • Communication with a robot using ROS framework.
  • Real time communication of 2 programs using different version of Python with sockets.
  • Collaborative development using GitHub, Pull Requests and Trello.

Test commands

Testing the command management received by Django and the socket communication between the ROS node and the Django server:

cd remote_robot_web/
python manage.py test control_board

To test the ROS server part, use the test.py script.

You need to make it executable first (the exact path depends on your installation)

cd catkin_ws/src/remote_robot/scripts/
chmod +x test.py

Then run the test script and the ros_server script in two different terminals

source ~/catkin_ws/devel/setup.bash
rosrun remote_robot test.py
source ~/catkin_ws/devel/setup.bash
rosrun remote_robot ros_server.py

Contributing

  • Create a branch, e.g. feature/new-feature or fix/very-nasty-bug.
  • Add commits.
  • When ready, push to remote: git push -u origin feature/new-feature.
  • Open a Pull Request: document the changes and provide any useful additional context.
  • Ask someone to review your code.
  • When ready: merge it.

About

Control a robot through a web interface with visual feedback (CentraleSupélec 2019)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •