Skip to content

ROS Workshop Day #5: Mobility Plus Manipulation

License

Notifications You must be signed in to change notification settings

ros-workshop/mobility-plus-manipulation

Repository files navigation

Mobility Plus Manipulation

Overview

Over the last week you've learned how to use ROS to integrate sensors, perform localisation and build maps while navigating in a Gazebo simulation and perceiving and manipulating objects with April Tags. In this session you'll integrate these packages and algorithms to create a simulated robot that can perform mobile manipulation.

In robotics research, mobile manipulation is a broad set of problems where a mobile robot performs synergistic navigation and interaction with the environment. Here we'll work on a restricted problem— mobility plus manipulation— where the robot alternates between navigation and manipulation modes (i.e. it parks before moving its arm).

Goal: Navigate between a set of waypoints and collect objects of interest:

Alt Text

Prerequisites

In order to implement the mobile manipulation functionality, you will need the manipulation and slam_navigation repositories in working order. Don't worry if you didn't get a final outcome for manipulation. You will also need the ABB repository downloaded into your workspace. After you git clone the repository, make sure you switch to the kinetic-devel branch, which also builds on Noetic.

Task Description

You'll be using the Husky with ABB arm mounted on it in order to achieve mobile manipulation. You have two tasks:

  • Create Launch files for running everything required.
  • Modify this script to execute the mobile manipulation task.

How this all comes together

Manipulation

This session uses different simulated hardware from yesterday. Instead of the UR5, we will be using an ABB IRB120 arm mounted on a Husky robot.

You will not need any of the manipulation functionality as it is already implemented here. You are more than welcome to change that functionality if you want. However, you will need the dependencies installed in for that repo.

Spawn Additional Cubes

Find the file that will spawn multiple stands and apriltags

Initialise AMCL and move_base

This is following the Day #2 SLAM tutorial here.

Will be using amcl this time:

roslaunch mobility-plus-manipulation move_base_map_server_amcl.launch

Begin implementing the functionality

Action

Create a launch file to do the following:

mobility-plus-manipulation/husky_abb.launch

mobility-plus-manipulation/move_base_map_server_amcl.launch

husky_abb_moveit_config/moveit_planning_execution_gazebo.launch

⚠️ Note: You will need to run the following command manually before you run the launch file mobility-plus-manipulation husky_abb.launch;

roscd mobility-plus-manipulation/scripts
source husky_abb_description.bash

This command makes sure the abb gets included with the robot description in the URDF. Do not dedicate any brain power to determining why this file is needed and what it does.

You should see something like this:

Alt Text

Action

Create another launch file with the following


 <node name="planner" pkg="mobility-plus-manipulation" type="planner.py" output="screen" />
 <node name="transform_tag_frame" pkg="husky_abb_manipulation" type="transform_tag_frame"/>
 <node name="husky_abb_grab_object_node" pkg="husky_abb_manipulation" type="husky_abb_grab_object_node" output="screen"/>

and a parameter call move_before_grasp set to true. Launch the file.

Modify the planner

Action modify the planner.py script to obtain the desired functionality. You will need to have slam_navigation configured properly Optionally, set move_before_grasp to true and see what it does.

Known issues The physics in Gazebo might break down after picking up one or two cubes.

Stretch Goal

Description

Robotic tasks often require complex state machines where robots observe and execute actions depending on its current state (think Markovian assumption), if not for all states. ROS provides a state-machine system for this very purpose called Smach, which you can use for handling state-machines in your system.

Goal

Work through the Smach tutorials and see how you can use it to perform the sequence of mobility and manipulation tasks above.