Skip to content

sweetie-bot-project/sweetie_bot

Repository files navigation

Sweetie Bot software repository

This repository contains software framework for the Sweetie Bot robot.

Note: We are hosting all our code on gitlab.com. We also have a github mirror, but we do not accept pull requests there, plese use primary source. Also see CONTRIBUTING page for details.

Build status master branch
ros-noetic-sweetie-bot-base pipeline status
ros-noetic-sweetie-bot pipeline status

Overview

Sweetie Bot control software is based on Robot Operating System (ROS). Also, it uses OROCOS middleware to implement real-time motion control subsystem. See sweetie_bot_deploy and rt_control for more details (namespaces, nodes, configuration parameters).

Sweetie Bot software support two modes: real and virtual.

  1. In a virtual mode it runs completely on the host computer. The real robot is not needed. You can program robot behaviors in a virtual environment (3d model).
  2. In a real mode it controls the real robot. One part of software runs the host computer and another part works the on-board computer.

Current version of Sweetie Bot control software provides following functionality:

  1. Joint level control using joint_state_publisher.
  2. The control in Cartesian space (for the limbs and the body) using pose markers and MoveIt! integration.
  3. Movements creation (See TrjectoryEditor)
  4. High-level control based on FlexBe hybrid finite state machines via external repository sweetie_bot_flexbe_behaviors.

Repository content

This repository contains all necessary software components to run the Sweetie Bot robots except for movements, sounds and actual behaviors which are stored in separate repositories (sweetie_bot_proto2_movements, sweetie_bot_sounds and sweetie_bot_flexbe_behaviors.

  • config directory contains robot configuration and deployment scripts
    • sweetie_bot_deploy --- robot-independent OROCOS deployment scripts and ROS launch files.
    • sweetie_bot_proto2_deploy --- robot-specific parameters and launch files for Proto2 Sweetie Bot robot.
    • sweetie_bot_proto2_description --- URDF model of Proto2 (git submodule).
    • sweetie_bot_proto2_moveit_config --- MoveIt! configuration for Proto2.
  • rt_control --- OROCOS-based motion control subsystem (git submodule).
  • hardware --- hardware-depended components.
    • sweetie_bot_eyes --- eyes visualization.
  • behavior --- high-level control subsystem (not implemented yet).
  • hmi --- operator interface components, intended to be running on the host computer.

Installation

The following instruction describes the installation process from binary packages. If you want to compile the whole project yourself see DEVELOPERS page.

System requirements

Check your system before install:

  • OS: Ubuntu Focal (20.04) or Debian Buster. For Windows and Mac users we recommend virtual machine with linux installed in it. Windows users can try WSL but it is less supported method.
  • CPU: x86-64 2 GHz dual core processor or better
  • RAM: 4 GB system memory
  • GPU: Almost any modern GPU with OpenGL 2.1 hardware acceleration support
  • HDD: 3 GB of free hard drive space
  • WAN: Internet access

Install apt repositories with the all necessary dependencies

There are three ways to install control software from a binary packages:

  1. Automatic script (recommended)

Run the script in your terminal, it will automatically install apt repositories with the all necessary dependencies:

wget -qO - https://apt.sweetie.bot/install.bash | sudo bash

Install software packages

sudo apt install ros-noetic-sweetie-bot
  1. Add apt repositories manually

Alternatively you can install the ROS Noetic repository as listed in official 'ROS instruction' and Sweetie Bot repository.

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo sh -c 'echo deb http://apt.sweetie.bot $(lsb_release -sc) main > /etc/apt/sources.list.d/sweetie-bot.list'

Next you have to set up your keys:

curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
wget -qO - https://apt.sweetie.bot/repository.key | sudo apt-key add -

Upgrade and install software packages

sudo apt update && sudo apt upgrade
sudo apt install ros-noetic-sweetie-bot
  1. Download packages manually

Alternatively you can download deb packages manually.

First of all refer 'ROS Installation instruction' manual to add official ROS repositary.

Download zip from here. Click on first green check mark ✓ and choose your OS, click "Download" at the next page. Unpack zip file and install both .deb packages included.

unzip sweetie-bot-focal-amd64.zip
sudo dpkg -i sweetie-bot-*.deb
sudo apt install -f

Setup workspace

User editable part of sweetie bot software must be installed to the home directory of current user.

Install sweetie_bot_sounds, sweetie_bot_proto2_movements and sweetie_bot_flexbe_behaviors:

mkdir -p ~/ros/sweetie_bot/src
cd ~/ros/sweetie_bot/src
git clone https://gitlab.com/sweetie-bot/sweetie_bot_sounds.git
git clone https://gitlab.com/sweetie-bot/sweetie_bot_proto2_movements.git

Build workspace

cd ~/ros/sweetie_bot
source /opt/ros/sweetie_bot/setup.bash
catkin_make

Note: Run this to supress priority warnings Forcing priority (20):

echo -e "@realtime   -  rtprio     99\n@realtime   -  memlock    unlimited" | sudo tee /etc/security/limits.d/99-realtime.conf
sudo groupadd realtime
sudo usermod -a -G realtime $USER

Usage

Set ROS environment once in the every terminal before you start any of the following commands:

source ~/ros/sweetie_bot/devel/setup.bash

To start basic control framework:

roslaunch sweetie_bot_deploy joint_space_control.launch

Following command starts MoveIt! move_group and FlexBe subsystem:

roslaunch sweetie_bot_deploy flexbe_control.launch run_flexbe_gui:=true run_moveit:=true

For more details see sweetie_bot_deploy package.