• Stars
    star
    113
  • Rank 310,115 (Top 7 %)
  • Language
    C++
  • Created over 7 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Several controllers to move Ridgeback mobile-robot and UR5 robotic-arm.

Ridgeback+Ur5 Controller [DEVEL]

Build Status

This repository provides several contollers for the Ridgeback mobile-robot with Ur5 robotic-arm.

  • admittance_control: This package implements an admittance controller on the ridgeback+UR5 platform (see below for the control architecture).
  • ur5_cartesian_velocity_control: This package provides a cartesian velocity controller (ros control) for the UR5 arm.
  • obstacle_avoidance: This package provides a simple obstacle-avoidance for the platform. It looks for the nearest obstacle using the laser sensors and remove the velocity components in that direction.
  • cpr_bringup: This package provides a series of launch files and ROS settings in order to start-up the real-robot as well as the simulator.
  • cpr_mocap_tracking: This package enables the robot to track an object (using mocap system) in its own frame of references (automatic calibration is included).
  • cartesian_state_msgs: It contains the defintion of message type "PoseTwist" (combination of the standard ros/geometry_msgs pose and twist).

Compliation and build

Clone the repository intor your catkin source directory

$ cd ~/catkin_ws/src
$ git clone [email protected]:epfl-lasa/ridgeback_ur5_controller.git

Get the source dependencies using wstool

$ wstool init
$ wstool merge ridgeback_ur5_controller/dependencies.rosinstall
$ wstool up

Get the package dependencies using rosdep

$ rosdep install -y --from-paths src --ignore-src --rosdistro indigo

You also need the following ros packages

$ sudo apt-get install ros-indigo-ridgeback-*
$ sudo apt-get install ros-indigo-universal-robot

if you are getting error for broken packages (most probably due to a wrong version of gazebo), you can use 'aptitude' instead of 'apt-get' which propose a solution and resolve the conflict.

Finally complie

$ cd ~/catkin_ws
$ catkin_make
$ source devel/setup.bash
$ catkin_make
  • you might need the source the bash file and compie again if the first compliation could not find some of in house dependencies.

For simulator, you can use gazebo7

$ sudo apt-get install ros-indigo-gazebo7-*

You might need to follow these instructions.



Running the controller

To bring up the robot in simulation run

roslaunch cpr_bringup cpr_bringup.launch
roslaunch admittance_control admittance_controller.launch

For the real robot launch on the CPR main PC run

roslaunch cpr_bringup cpr_bringup.launch sim:=false
roslaunch admittance_control admittance_controller_real.launch

Expected behaviors

The behavior of different components are demonstrated here:

Control Architecture

Kinematics and transformations

Here is a short list of important frames and their usage.

frame id Usage
world Odometry and navigation
ur5_arm_base_link Arm pose and twist
base_link Platform pose and twist
robotiq_force_torque_frame_id External force applied to the end-effector

Adamittance dynamics

The following figure shows the controller architecture for the admittance control on the robot.

alt text

The two equations in the center describe the admittance dynamics which compute the desired accelaration for the arm and the platform. These accelerations are integrated in time to acheive the desired velocities for the robot. The low-level velocity controller fullfills these velocities. In the case of platform, the computed velocities can be modified accroding to obstacle avoidance node.

The admittance parameters (shown in purple) are as follows:

Variable Parameter
Ma Desired mass of the arm
Da Desired damping of the arm
Dc Desired damping of the coupling
Kc Desired Stiffness of the coupling
Mp Desired mass of the platform
Dp Desired damping of the platform

These parameters are load from a yaml through the launch file.

External force

The external is initially measured by the force/torque sensor in its own frame reference. In admittance controller this force is transformed to "ur5_arm_base_link" where the control of arm takes place. To avoid reacting to small forces a deadzone is considered. Moreover, a low-pass filter is used to smooth the measurements. The parameters of the deadzone and the filter can be set from the launch file.

Higher-level control (Motion planning )

Through a higher level controller, the position of the equilibrium can be can be changed to acheive a desired behavior. Also, Fc can be used for control purposes; e.g., to compensate for the mass of an object carried by the arm.

IMAGE ALT TEXT HERE

More Repositories

1

iiwa_ros

ROS Meta-package for controlling KUKA IIWA
C++
138
star
2

ML_toolbox

A Machine learning toolbox containing algorithms for non-linear dimensionality reduction, clustering, classification and regression along with examples and tutorials which accompany the Master level "Advanced Machine Learning" and "Machine Learning Programming" courses taught at EPFL by Prof. Aude Billard
MATLAB
95
star
3

icra19-lfd-tutorial-exercises

Set of exercises accompanying the ICRA 2019 Tutorial on Dynamical System based Learning from Demonstration: https://epfl-lasa.github.io/TutorialICRA2019.io/
MATLAB
61
star
4

kuka-lwr-ros

ROS KUKA robot control (simulation & physical)
C++
58
star
5

dynamic_obstacle_avoidance_linear

This package contains a dynamic obstacle avoidance algorithm for concave and convex obstacles as developped in [1].
Python
54
star
6

icra-lfd-tutorial

This repository contains code and information for the computer exercises for the tutorial on Learning from Demonstration at ICRA 2016.
MATLAB
44
star
7

changepoint-detection

Online Change-point Detection Algorithm for Multi-Variate Data: Applications on Human/Robot Demonstrations.
Jupyter Notebook
41
star
8

record_ros

callback wrapper for rosbag record
C++
37
star
9

control-libraries

A collection of library modules to facilitate the creation of full control loop algorithms, including state representation, motion planning, kinematics, dynamics and control.
C++
27
star
10

mobile-throwing

[IROS 2022] A Solution to Adaptive Mobile Manipulator Throwing
Python
26
star
11

rds

RDS is a reactive controller for convex non-holonomic robots to avoid collisions with moving obstacles.
C++
22
star
12

robot-toolkit

The robot simulator and interface of LASA
C++
21
star
13

Neural-JSDF

MATLAB
20
star
14

net-ft-ros

Force torque sensor
C++
20
star
15

OptimalModulationDS

Python
17
star
16

iam_dual_arm_control

This repository contains codes to generate coordinated motion and forces to control a robotic dual arm system (here two iiwa robots)
C++
15
star
17

ds_motion_generator

This package provide ros-nodified version of DS motion generators.
C++
15
star
18

crowdbot-evaluation-tools

Repository for crowd tracking and robot performance evaluation in experiments
Jupyter Notebook
14
star
19

dynamic_obstacle_avoidance_cpp

C++ code for the obstacle avoidance
C++
14
star
20

Joint-Space-SCA

C++
13
star
21

gaussian-process-regression

Simple library with a basic no-frills implementation of GPR using Eigen. Basic support for multidimensional outputs.
C++
13
star
22

IRL_DS_obstacle_avoidance

Code of the Hasler project between LASA and CNBI
MATLAB
13
star
23

kuka-lpvds-tasks

This package contains motion planning code for LPV-DS tasks from Nadia's CoRL (2018) paper using the DS-impedance controller for the KUKA LWR 4+ robot in simulation (gazebo) and real robot.
C++
13
star
24

task_adaptation

C++
13
star
25

kuka-rviz-simulation

This package runs a simulation of the KUKA LWR robot in the LASA lab (EPFL) with the position/velocity-resolved control interface.
C++
11
star
26

human-robot-collider

We let two agents approach each other, collide and generate contact impulses in the simulation engine Bullet (via pybullet).
Python
10
star
27

obstacleAvoidance_Cpp

Implementation of the Obstacle Avoidance algorithm in C++
C++
9
star
28

sliding-ds-control

Jupyter Notebook
9
star
29

bimanual-task-motion-planning

LASA research repo for bimanual task planning.
C++
9
star
30

crowd_tracker_lidar3d

Cracks crowds using a 3d lidar.
Jupyter Notebook
9
star
31

passive-ds-control

A package implementing various controllers for first order DS tasks
C++
9
star
32

cpr_load_support

This package is going to provide a controller for the ClearPath mobile robot to approach a load (carrying by the human) and support it and potentially take it from the human and move it around (to a desired location)
C++
9
star
33

fast-pedestrian-tracker

ROS package to detect and track pedestrians from planar laserscans of their legs.
C++
8
star
34

Object-Trajectory-Prediction

C++
8
star
35

iCub-Assistant

Source code for ICRA 2020 paper "A Dynamical System Approach for Adaptive Grasping, Navigation and Co-Manipulation with Humanoid Robots"
C++
8
star
36

load-share-estimation

Estimate the load share of an object supported by the robot (accounting for dynamics), using force/torque sensor data.
C++
7
star
37

inverse-kinematics-examples

C++
7
star
38

coupled-dynamical-systems

Coupled Dynamical Systems Execution for Position (master) - Orientation (slave) of end-effector encoded with Gaussian Mixture Models.
C
7
star
39

bimanual-dynamical-system

Virtual Object Dynamical System for Dual-Arm Coordination, controller and execution class.
C++
7
star
40

franka-lightweight-interface

C++
6
star
41

SAHR_bifurcation

Repo with MATLAB and cpp code for encoding and switching between attractors and limit cycles via DS with bifurcation
C
6
star
42

adaptive_polishing

C++
6
star
43

sg_differentiation

A package implementing Savitzky-Golay smoothing and differentiation. May be useful to estimate e.g. velocity and acceleration from position measurements.
C++
6
star
44

PI2_GMM

Learning motions from demonstrations and rewards with time-invariant dynamical systems based policies
MATLAB
6
star
45

robot_controllers

This repo contains "low" and "high" level controllers for control
C++
6
star
46

RSS2018Tutorial

A set of exercises related to the tutorial given in RSS2018
5
star
47

object-impedance-control

Object-level impedance control
C++
5
star
48

biped-walking-controller

Reactive omnidirectional walking controller for biped humanoid robot iCub
C++
5
star
49

wiki

Best practices, conventions, manuals and instructions for researchers at the LASA
5
star
50

wheel_chair_model

Gazebo model of wheelchair
Python
5
star
51

JT-DS-Learning

Augmented Joint-space Task-oriented Dynamical Systems
TeX
5
star
52

kuka-lagsds-tasks

This package contains motion planning code for LAGS-DS tasks from Nadia's IJRR (2019) paper using the DS-impedance controller for the KUKA LWR 4+ robot in simulation (gazebo) and real robot.
C++
5
star
53

wheelchair-ds-motion

DS-based motion planning for the quickie-salsa wheelchair simulated in Gazebo.
Python
4
star
54

MLDemos

MLDemos software
C++
4
star
55

sahr_benchmark

Code for "Benchmark for Bimanual Robotic Manipulation of Semi-deformable Objects"
Python
4
star
56

kuka-lwr-ros-examples

Examples for the kuka-lwr-ros package
C++
4
star
57

gazebo_set_joint_position_plugin

Gazebo model plugin to set joints position on a robot (useful when replaying a rosbag for instance)
C++
4
star
58

demo-voice-control

Super simple python script that uses pocketsphinx for voice control with ROS for easy kineshetic teaching. Demo script is for recording demonstrations and open/close gripper.
Python
4
star
59

ICub_Optimization

C
3
star
60

icub-ds-walking

DS-based motion planning for the iCub using the reactive omnidirectional walking controller and DS learned from demonstrations.
C++
3
star
61

surgeon_recording

Python
3
star
62

icub-sdfast

iCub files for SDFast library. Can generate the dynamic model of the iCub to solve the dynamics equation of motion.
C
3
star
63

docker_images

Docker images used at LASA
C++
3
star
64

sahr_spring_assembly_dataset

The 7-dof human upper limb kinematic model. Including both arms and hands. Mainly used for kinematics analysis and motion visualization.
3
star
65

ds_based_contact_tasks

C++
3
star
66

modulo

Modulo is an extension layer to ROS2 that adds interoperability support for epfl-lasa/control-libraries and provides a modular framework for application composition through custom component classes in both C++ and Python.
C++
3
star
67

navioc

Navigation by Inverse Optimal Control
MATLAB
2
star
68

foot_surgical_robot

C++
2
star
69

Icub_Gazebo

C++
2
star
70

optitrack-lasa

Library for reading Motion Capture Data.
C++
2
star
71

robot-voice-control

Control robots using your voice.
Python
2
star
72

locally-modulated-ds

Implementation of LMDS ("Incremental Motion Learning with Locally Modulated Dynamical Systems" ,Kronander, Khansari and Billard, Robotics and Autonomous Systems, 2015)
C++
2
star
73

force_based_ds_modulation

C++
2
star
74

A-SVM

Source Codes for Augmented-Support Vector Machine
MATLAB
2
star
75

throwing_motion_gen_ros

This package contains ds based motion generator for throwing task. The algorithm generate motion such that the robot end-effector will pass through the release position with the desired release velocity
C++
2
star
76

robokind_r25_ros_wrapper

ROS Java Wrapper for the R25 humanoid robot
Java
2
star
77

mathlib

MathLib is a Math library developed at LASA library at EPFL.
C++
2
star
78

ds_admittance_control

This package provides Dynamical System-based Admittance control for compliant human-robot interaction
C++
2
star
79

grasp-data-capture

C++
1
star
80

fast-gmm

C++
1
star
81

robot-kinematics

C++
1
star
82

ensemble_ioc

A module implementing ensemble inverse optimal control and relevant examples
Python
1
star
83

FalconRos

Mid-level control of Falcon (Novit haptic device) through ROS interface
C++
1
star
84

lwr_robot

Model of the Kuka LWR 4 robot for gazebo/rviz. Star
CMake
1
star
85

rospyconsole

A python interpreter to communicate with a rosnode and create a console through ros topics.
Python
1
star
86

docker_setup

This repository contains examples and scripts to help build docker images
Shell
1
star
87

Task_Allocation

C++
1
star
88

JT-DS-lib

C++ libarary for executing JT-DS
C++
1
star
89

mouse_perturbation_robot

C++
1
star
90

crash-tests-service-robots

Service Robots Crash Testing with Pedestrians: Child and Adult Dummies
MATLAB
1
star
91

Robot-kinematic

This will be an equivalent of https://github.com/epfl-lasa/robot-kinematics in Python!
Python
1
star
92

lift_help_predictor

Python
1
star
93

SAHR_database

Data recording from the SAHR project.
MATLAB
1
star
94

hitting_sim

Dynamical Systems and Controllers used in hitting experiments
Python
1
star
95

fri-library-ros

The KUKA FRI library and a nice wrapper for it. We use these in lwr_interface
C++
1
star
96

dataset_unscrewing_experiment

Summary of experimental data of the unscrewing experiment, for the purpose of studying the effects of task condition on the human hand pose selection strategy in bimanaul fine manipulation tasks.
MATLAB
1
star
97

TutorialICRA2019.io

This tutorial will introduce students the techniques which are used to program robots through human demonstration. You can find the webpage in the following link:
CSS
1
star
98

stable_lds

Estimate a stable linear dynamical system from data
MATLAB
1
star
99

GetLinkWorldPose

Gazebo Plugin to get any 6D frame of a robot link and write it to a yarp-port, used with iCub.
C++
1
star
100

simulator-backend

Python
1
star