Top Banner
Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato [email protected] Karsten Knese [email protected]
28

Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

May 07, 2018

Download

Documents

nguyendien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Using ROS2 for Vision-Based Manipulation with Industrial Robots

Adam [email protected]

Karsten [email protected]

Page 2: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details
Page 3: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details
Page 4: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

DDSAuto-Discovery

ROS1 Bridge

ament_resource_index

Lifecycle Nodes

Cross Platform

Namespacing

Cross Language

Intra ProcessCommunication

Parameters

Multi-NodeProcesses

Composition

Security

QoS

Page 5: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

DDSAuto-Discovery

ROS1 Bridge

ament_resource_index

Lifecycle Nodes

Cross Platform

Namespacing

Cross Language

Intra ProcessCommunication

Parameters

Multi-NodeProcesses

Composition

Security

QoS

Page 7: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

The big picture

Joint State Controller

// publish joint statesupdate()

Joint Trajectory Controller

// listen to traj msg// set joint statesupdate()

Robot HAL

while(true){ read_joints() controller_manager.update()

write_joints()}

More details from Jackie Kay and Adolfo Rodriguez Tsouroukdissian at ROScon 2015https://roscon.ros.org/2015/presentations/RealtimeROS2.pdf

Page 8: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Controller ManagerControllerManager::load_controller(package_name, class_name, controller_name){ auto library_path = get_ament_resource(package_name, class_name);

auto loader = std::make_shared<class_loader::ClassLoader>(library_path);

auto controller =

loader->createInstance<controller_interface::ControllerInterface>(class_name);

controller->init(controller_name);

executor_->add_node(controller->get_node_base_interface());}

int main(int argc, char ** argv){ cm.load_controller( “ros_controllers”, “ros_controllers::JointTrajectoryController”, “trajectory_controller/left”);

cm.load_controller( “ros_controllers”, “ros_controllers::JointTrajectoryController”, “trajectory_controller/right”);

}

HAL

Controller

https://github.com/ros2/ros2/wiki/Composition

Page 9: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Ament Resource Index<ros2_ws/install>

`-- share

| `-- ... # Other, non-plugin related, stuff

|-- ament_index

|-- resource_index

|-- packages

| `-- controller_manager

| `-- ...

|-- controllers

| `-- ros_controllers # containing controller info

$ cat /ros2_ws/install/share/ament_index/resource_index/controllers/ros_controllersros_controllers::JointStateController;bin/default_controllers.dllros_controllers::JointTrajectoryController;bin/libdefault_controllers.dll

https://github.com/ament/ament_cmake/blob/master/ament_cmake_core/doc/resource_index.md

HAL

Controller

Page 10: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Lifecycle Controller Nodes

http://design.ros2.org/articles/node_lifecycle.html

class ControllerInterface : public LifecycleNodeInterface{ virtual rcl_lifecycle_transition_key_t on_configure(const State & previous_state); virtual rcl_lifecycle_transition_key_t on_activate(const State & previous_state); virtual rcl_lifecycle_transition_key_t on_deactivate(const State & previous_state); virtual rcl_lifecycle_transition_key_t on_cleanup(const State & previous_state);

virtual rcl_lifecycle_transition_key_t on_shutdown(const State & previous_state); virtual rcl_lifecycle_transition_key_t on_error(const State & previous_state);};

HAL

Controller

Page 11: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Lifecycle Controller Nodes

https://github.com/ros2/ros2/wiki/Managed-Nodes

class MyController : public ControllerInterface{ // do lifecycle controller stuff on_activate()...};

$ ros2 service list/my_controller/change_state/my_controller/get_available_states/my_controller/get_available_transitions/my_controller/get_state

$ ros2 service call /my_controller/get_state lifecycle_msgs/GetStatelifecycle_msgs.srv.GetState_Response(current_state=lifecycle_msgs.msg.State(id=1, label='unconfigured'))

HAL

Controller

Page 13: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

The Picky Robot: Motivation● Show that ROS2's core features are in place● Do some integration but also add some new functionality

Page 14: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Let's build a Pickand Place demo!

Page 15: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Object Detector (LINEMOD)

Astra Depth Camera

Astra Camera Driver

Architecture

Page 16: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Shared Memory for Intraprocess Communication

https://github.com/ros2/ros2/wiki/Intra-Process-Communication

Page 17: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

IntraprocessCommunication

Object Detector (LINEMOD)

Astra Depth Camera

Astra Camera Driver

Architecture

Page 18: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

IntraprocessCommunication

UR5 RobotObject

Detector (LINEMOD)

Astra Depth Camera

Astra Camera Driver

Robot Interface

Architecture

6DOF Pose

Page 19: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

ROS 2 launch file (Python)

IntraprocessCommunication

UR5 RobotObject

Detector (LINEMOD)

Astra Depth Camera

Astra Camera Driver

Robot Interface

Architecture

Page 20: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

ROS 2 launch file (Python)

IntraprocessCommunication

UR5 RobotObject

Detector (LINEMOD)

ROS2 bridgeRViz

Astra Depth Camera

Astra Camera Driver

Robot Interface

Architecture

Page 21: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

ROS 2 launch file (Python)

IntraprocessCommunication

UR5 RobotObject

Detector (LINEMOD)

ROS2 bridgeRViz

Astra Depth Camera

Astra Camera Driver

Robot Interface

Architecture

Docker Container

Page 22: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

http://www.trossenrobotics.com/Shared/images/PImages/widegripper/rg-wide-gripper-a.jpg

Page 23: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Xhttp://www.trossenrobotics.com/Shared/images/PImages/widegripper/rg-wide-gripper-a.jpg

Page 24: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

https://vimeo.com/228848126

Video

Page 25: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

DDSAuto-Discovery

ROS1 Bridge

ament_resource_index

Lifecycle Nodes

Cross Platform

Namespacing

Cross Language

Intra ProcessCommunication

Parameters

Multi-NodeProcesses

Composition

Security

QoS

Page 26: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

DDSAuto-Discovery

ROS1 Bridge

ament_resource_index

Lifecycle Nodes

Cross Platform

Namespacing

Cross Language

Intra ProcessCommunication

Parameters

Multi-NodeProcesses

Composition

Security

QoS

Page 27: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Special Thanks to ...

Calvin Ngan - Karsten's Bosch summer intern

Mikael Arguedas - Adam's Open Robotics summer mentor

Page 28: Using ROS2 for Vision-Based Manipulation with Industrial ... 2017 ROS2 Vision... · Using ROS2 for Vision-Based Manipulation with Industrial Robots Adam Allevato ... More details

Thank you!

Adam [email protected]

Karsten [email protected]

Code available:● https://github.com/kukanani/picky_robot● https://github.com/ros-controls/ros2_control● https://github.com/ros-controls/ros2_controllers