Skip to content
Cédric Godin edited this page Jan 16, 2020 · 13 revisions

Welcome to the SecurBot wiki!

SecurBot Logo

This wiki contains informations and tutorials to help with understanding and using SecurBot. You can check the code documentation on github.io for the lastest release and the development documentation can be checked by cloning the repo and looking in the docs folder of the dev branch.

What is SecurBot ?

SecurBot is a project developped by a team of 8 students in electrical engineering from the Universite de Sherbrooke. The goal of this project is to use the different technologies developped by the IntRoLab research team to create an autonomous security robot. We used a Kobuki and a Pioneer 2 fitted with a Roboclaw motor driver for the mobile base, but any robot compatible with the ROS navigation stack should work. The following video shows what can currently be done with it :

PROMO VIDEO

The Securbot project can be split into 5 parts, the ROS packages used on the robots, the frontend web application done with Vue.js, the easyrtc backend server, the custom hardware (pcb) and the mechanical structure.


ROS Packages

For the robots, we are using ROS to run the code and the different tools used. We used ROS Melodic, but Kinetic should also work. Here's a quick run down of the various packages, all under the ros_pkg folder.

  • dock: package that is used to dock the robot on its charging station. It uses Apriltag to find the station, generate a parabolic trajectory to it and publishes GeometryTwist to the robot base to follow it.
  • electron_webrtc: bundles an Electron web app that communicate with the frontend trough webrtc and with the robot's ROS network trough ROS Node.js.
  • event_sensors: mainly for future expension. Is meant to contain nodes that read the robot environnement sensors and publish the values to ROS. Only publish wifi signal level for now.
  • event_detection_pkg: core of the security features. Is used to start up the Darknet based image recognition pipeline, filter the output and publishes security events to the database API.
  • image_capture: utility package to pipe a ROS image topic to a Linux v4l device. Along with v4l2 loopback virtual devices, it allows to open ROS image topics from Electron.
  • map_image: utility package to generate a video feed of the map by subscribing to the various topics such as grid map, laser scan and planner goals.
  • securbot_hbba_cfg: package that contains the HBBA configuration files used to run the robot. It generates a launchfile when the workspace is built that start up the robot.
  • securbot_pkg: mischelanous nodes and main robot base config. It contains bring up, navigation stack configuration and various utilies to convert between message formats and manage patrols.

Frontend

The frontend is been develop using the Vue.js framework with bootstrap toolbox and so is web base. The interface is there to offer an easy way for operators to connect to any robot in services and perform some actions on them. The actions that an operator will be capable of doing with on a robot is listed below :

  • Monitor the health and status
  • Take control and see what the robot can see
  • Program a schedule patrol path with specific actions for every "stops"
  • Localise the robot
  • Visualise the robot event log More actions might be added as thing goes on. To do those actions, the web interface will have 3 pages, the teleop page, the patrol planner page and the event page. A navigation bar is present at the top that allows navigation between the pages and a dropdown menu for easy connection to the robots.

Teleop Page

The current teleop page looks like this :

alt text

The pages contains 2 video boxes and a joystick equipped with a switch. The bigger video box (the one on the left) will host the camera stream of the robot and the small one its map. The switch can be interacted with only when connected to a robot, if activated it enables the joystick data stream to the robot for teleoperation through the interface.

Patrol Planner Page

The current patrol planner looks like this :

alt text

This page contains a video box that will host the robot map and 2 table equipped with buttons. On this page and when connected to a robot that has a map, the map can be clicked to add a waypoint on it with a yaw on the map. When a waypoint is added, it will appear in the upper table on the left which list all the waypoint on the map in order and offers a button to delete specific unwanted waypoints. Clicking the send button will send the list to the robot as a patrol for it to execute. Clicking the reset button will clear the list and the map. The second table list the saved patrol. When waypoints are present in the list of the upper table, entering a name and clicking save will put in memory the list and clicking the green check box button will load the list in the upper table and add the waypoint to the map. Saved patrol can also be deleted using the red trash button.

Note : Multiple features talked in this description are still being develop and implemented on this page, see the current state page for more info.

Event Page

Even though present and accessible (empty page), the development of the event page will be done at a later time.

The event page will be pretty straight forward in its usage. The page will offer a way to look at a robot event log and filter the log for specific events. It will also offer a view of the current health of the robot and some information about its state.


Backend


Custom PCBs

WARNING : Even though some designs are done and boards has been made for testing, they are not currently available in either the master branch nor the dev one since they haven't been completely tested at this time and modifications are very possible. Since we don't want to distribute something that could be dangerous, he are holding on the release of the designs. PULLING THE DESIGNS FROM THEIR BRANCH AND PRODUCING A BOARD IS INADVISABLE AND THE TEAM DO NOT CONDONE THIS. Please way for an official release of the design to use them.

The plan is to produce 3 custom pcbs for the project and make those design open-source. The first pcb is the power board, the second is the battery board and the third is the charging station board.

Power Board

The power board will have 2 inputs, a 19V coming from a power bar (only present if the robot is charging) and a ~14.8V coming from the batteries. Using multiple regulators, the board will use those input to produce multiple output with different voltages and currents. The goal of this board is the power what will be on the robot (sensors, motors, etc).

Battery Board

This board will be hosting the batteries and will be in charge of the management system of the batteries. The 19V and the ~14.8V used by the power board will be coming from it and it will also power the on-board computer of the robot. Using a micro-controller this board will also be checking the health of the batteries and act as an interface between the charging station and the robot.

Charging Station Board

The charging board will be use to charge the batteries on board of the robot when it is dock into the charging station. Security systems will be put in place to avoid dangerous uses of the station and, using a micro-controller, it will also communicates with the on-board controller to get the charging state and add an other layer of safety. The charging station board will be connect to a power bar (the 19V mentionned previously) that is connected to a wall outlet. We will be using a preexisting power bar that is already certified so we don't have to run into all the process to certified a custom design (not counting the amount of money needed to do this).


Mechanical Structure

Only a preliminary design of the structure has been done, a real design will be coming later.

For the mechanical structure, we will produce a shell for the robot that will be protecting it against exterior factor and humans. The shell will also be hosting the sensors. The current vision is for the structure to be the height of a person siting on a chair (~1.3m), be robust enough to maintain everything in place without too much wiggling on the sensors while not being to heavy (the robot needs to be able to support and move with it) and be somewhat modular (only little change change in design to adapt the shell to different robot).


Here are some convenient links (also available in the sidebar) :

What you should know

ROS packages

Frontend (Vue.js application)

Backend (EasyRTC server and docker)