[Documentation] [TitleIndex] [WordIndex

Only released in EOL distros:  

srs_public: cob_spacenav_teleop | srs_arm_navigation_tests | srs_assisted_arm_navigation | srs_assisted_arm_navigation_msgs | srs_assisted_arm_navigation_ui | srs_assisted_detection | srs_assisted_grasping | srs_assisted_grasping_msgs | srs_assisted_grasping_ui | srs_body_detector | srs_decision_making | srs_decision_making_interface | srs_env_model | srs_env_model_msgs | srs_env_model_percp | srs_env_model_ui | srs_env_model_utils | srs_environments | srs_grasping | srs_human_sensing | srs_interaction_primitives | srs_knowledge | srs_leg_detector | srs_likelihood_calculation | srs_msgs | srs_object_verification | srs_pellet | srs_people_tracking_filter | srs_scenarios | srs_states | srs_symbolic_grounding | srs_training | srs_ui_but | srs_user_tests

Package Summary

Arm navigation package provided by dcgm-robotics@FIT group: - assisted arm manipulation for RViz using Interactive Markers and Warehouse Viewer - manual grasping plugin for RViz The package is partially derived from the pr2_arm_navigation package. It modifies components developed for PR2 robot so that you can use it with COB. Moreover, the package also provides several services that simplifies usage of the COB arm navigation.

srs_public: cob_spacenav_teleop | srs_arm_navigation_tests | srs_assisted_arm_navigation | srs_assisted_arm_navigation_msgs | srs_assisted_arm_navigation_ui | srs_assisted_detection | srs_assisted_grasping | srs_assisted_grasping_msgs | srs_assisted_grasping_ui | srs_body_detector | srs_decision_making | srs_decision_making_interface | srs_env_model | srs_env_model_msgs | srs_env_model_percp | srs_env_model_ui | srs_env_model_utils | srs_environments | srs_grasping | srs_human_sensing | srs_interaction_primitives | srs_knowledge | srs_leg_detector | srs_likelihood_calculation | srs_msgs | srs_object_verification | srs_pellet | srs_people_tracking_filter | srs_scenarios | srs_states | srs_symbolic_grounding | srs_training | srs_ui_but | srs_user_tests

Package Summary

An interactive arm motion planning. Developed for SRS project and Care-O-Bot robot, reusable for any robot supporting arm_navigation stack.

srs_public: cob_spacenav_teleop | srs_arm_navigation_tests | srs_assisted_arm_navigation | srs_assisted_arm_navigation_msgs | srs_assisted_arm_navigation_ui | srs_assisted_detection | srs_assisted_grasping | srs_assisted_grasping_msgs | srs_assisted_grasping_ui | srs_body_detector | srs_decision_making | srs_decision_making_interface | srs_env_model | srs_env_model_msgs | srs_env_model_percp | srs_env_model_ui | srs_env_model_utils | srs_environments | srs_grasping | srs_human_sensing | srs_interaction_primitives | srs_knowledge | srs_leg_detector | srs_likelihood_calculation | srs_msgs | srs_object_verification | srs_pellet | srs_people_tracking_filter | srs_scenarios | srs_states | srs_symbolic_grounding | srs_training | srs_ui_but | srs_user_tests

Package Summary

An interactive arm motion planning. Developed for SRS project and Care-O-Bot robot, reusable for any robot supporting arm_navigation stack.

Overview

Assisted arm navigation package offers similar functionality as the Warehouse Viewer - an interactive (collision free) arm motion planning. It has been designed for Care-O-Bot within the SRS project, but can be easily modified for any robot running the arm_navigation stack. It enables a user to start the arm planning through RVIZ plugin with a simple interface. The goal position of the end effector can be set by a 6 DOF Interactive Marker or by using SpaceNavigator device. For collision free trajectory planning a collision map produced by Environment Model is used.

Current version has been tested only with ROS Electric.

Assisted arm navigation is divided into following packages:

For example of how this functionality can be integrated into more complex system, please take a look on srs_arm_navigation_tests, where is the integration into SRS structure in form of SMACH generic states implemented.

Screenshots

This is how it looks in RVIZ when user starts arm planning. There is 6 DOF interactive marker, marker representing arm (green) and marker for the object to be grasped.

Assisted arm navigation started.

Collision with environment or with the object is clearly indicated as well as the situation when desired goal position is out of reach.

Gripper in a collision.

Position is not reachable.

When the trajectory is planned, user can play its animation several times and decide if it's reasonable and safe.

Animation of planned trajectory.

User interface consists of few controls and contains description of the task for user (if using action interface to give tasks to user).

User interface of Assisted arm navigation.

More detailed user interface documentation can be found on its own page.

ROS API

Assisted arm navigation node communicates with user interface using set of services. There are also some services for adding collision objects etc. The most important is action interface which can be used to ask user to perform some task.

Actionlib interface

Action Subscribed Topics

/but_arm_manip/manual_arm_manip_action/goal (srs_assisted_arm_navigation_msgs/ManualArmManipActionGoal)

/but_arm_manip/manual_arm_manip_action/cancel (actionlib_msgs/GoalID)

Action Published Topics

/but_arm_manip/manual_arm_manip_action/feedback (srs_assisted_arm_navigation_msgs/ManualArmManipActionFeedback)

move_base/status (actionlib_msgs/GoalStatusArray) /but_arm_manip/manual_arm_manip_action/result (srs_assisted_arm_navigation_msgs/ManualArmManipActionResult)

Topics, services, parameters

Subscribed Topics

/spacenav/joy (sensor_msgs/Joy) /spacenav/offset (geometry_msgs/Vector3) /spacenav/rot_offset (geometry_msgs/Vector3)

Published Topics

/but_arm_manip/state (srs_assisted_arm_navigation_msgs/AssistedArmNavigationState)

Services

/but_arm_manip/arm_nav_new (srs_assisted_arm_navigation_msgs/ArmNavNew) /but_arm_manip/arm_nav_plan (srs_assisted_arm_navigation_msgs/ArmNavPlan) /but_arm_manip/arm_nav_play (srs_assisted_arm_navigation_msgs/ArmNavPlay) /but_arm_manip/arm_nav_execute (srs_assisted_arm_navigation_msgs/ArmNavExecute) /but_arm_manip/arm_nav_reset (srs_assisted_arm_navigation_msgs/ArmNavReset) /but_arm_manip/arm_nav_success (srs_assisted_arm_navigation_msgs/ArmNavSuccess) /but_arm_manip/arm_nav_failed (srs_assisted_arm_navigation_msgs/ArmNavFailed) /but_arm_manip/arm_nav_refresh (srs_assisted_arm_navigation_msgs/ArmNavRefresh) /but_arm_manip/arm_nav_coll_obj (srs_assisted_arm_navigation_msgs/ArmNavCollObj) /but_arm_manip/arm_rem_coll_obj (srs_assisted_arm_navigation_msgs/ArmNavRemoveCollObjects) /but_arm_manip/arm_nav_set_attached (srs_assisted_arm_navigation_msgs/ArmNavSetAttached) /but_arm_manip/arm_nav_move_palm_link (srs_assisted_arm_navigation_msgs/ArmNavMovePalmLink) /but_arm_manip/arm_nav_move_palm_link_rel (srs_assisted_arm_navigation_msgs/ArmNavMovePalmLinkRel) /but_arm_manip/arm_nav_switch_aco (srs_assisted_arm_navigation_msgs/ArmNavSwitchACO) /but_arm_manip/arm_nav_repeat (srs_assisted_arm_navigation_msgs/ArmNavRepeat) /but_arm_manip/arm_nav_step (srs_assisted_arm_navigation_msgs/ArmNavStep) /but_arm_manip/arm_nav_stop (srs_assisted_arm_navigation_msgs/ArmNavStop)

Parameters

~arm_planning/arm_planning/inflate_bb (double, default: "1.0") ~arm_planning/world_frame (string, default: "map") ~arm_planning/end_eff_link (string, default: "sdh_palm_link") ~arm_planning/joint_controls (bool, default: "false") ~arm_planning/make_collision_objects_selectable (bool, default: "false") ~arm_planning/aco/link (string, default: "arm_7_link") ~arm_planning/aco/default_state (bool, default: "false") ~spacenav/enable_spacenav (bool, default: "true") ~spacenav/use_rviz_cam (bool, default: "true") ~spacenav/rviz_cam_link (string, default: "rviz_cam") ~spacenav/max_val (double, default: "350.0") ~spacenav/min_val_th (double, default: "0.05") ~spacenav/step (double, default: "0.1") ~arm_links (list of strings, default: "cob3-3 arm links") ~set_planning_scene_diff_name (string, default: "environment_server/set_planning_scene_diff") ~left_ik_name (string, default: "cob3_arm_kinematics/get_constraint_aware_ik") ~planner_1_service_name (string, default: "ompl_planning/plan_kinematic_path") ~trajectory_filter_1_service_name (string, default: "trajectory_filter_server/filter_trajectory_with_constraints") ~vis_topic_name (string, default: "planning_scene_visualizer_markers") ~left_ik_link (string, default: "arm_7_link") ~left_arm_group (string, default: "arm") ~execute_left_trajectory (string, default: "arm_controller/follow_joint_trajectory")

Installation

rosmake srs_assisted_arm_navigation

Usage

First, please take a look on how to install and use user interface for assisted arm manipulation.

For starting COB simulation, actionlib server use this:

roslaunch srs_assisted_arm_navigation but_arm_nav_sim.launch

and then next command to start user interface (RVIZ):

roslaunch srs_assisted_arm_navigation_ui rviz.launch

There is an example of a rospy script which can be used to "trigger" manipulation task. Run it and operator should be asked for action by messagebox from RVIZ plugin.

   1 #!/usr/bin/env python
   2 import roslib; roslib.load_manifest('your_package')
   3 import rospy
   4 import actionlib
   5 
   6 from srs_assisted_arm_navigation_msgs.msg import *
   7 
   8 def main():
   9     
  10   rospy.init_node('arm_manip_action_test')
  11   rospy.loginfo("Node for testing actionlib server")
  12  
  13   client = actionlib.SimpleActionClient('/but_arm_manip/manual_arm_manip_action',ManualArmManipAction)
  14   
  15   rospy.loginfo("Waiting for server...")
  16   client.wait_for_server()
  17   goal = ManualArmManipGoal()
  18   
  19   goal.allow_repeat = False
  20   goal.action = "Move arm to arbitrary position"
  21   goal.object_name = ""
  22   
  23   client.send_goal(goal)
  24 
  25   client.wait_for_result()
  26   rospy.loginfo("I have result!! :-)")
  27   
  28   result = client.get_result()
  29   
  30   if result.success:
  31     rospy.loginfo("Success!")
  32     
  33   if result.failed:
  34     rospy.loginfo("Failed :-(")
  35   
  36   rospy.loginfo("Time elapsed: %ss",result.time_elapsed.to_sec())
  37   
  38 if __name__ == '__main__':
  39   main()

For instructions on how to test SRS scenarios, please see srs_arm_navigation_tests.

How to adapt it for your robot


2019-10-12 13:09