Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

ClamArm Architecture

How the ClamArm robotic arm manipulator works
by

Dave Coleman

on 21 February 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of ClamArm Architecture

joint_state_aggregator clam_controller (ros package) (ros node) clam_arm_action_server (ros node) config (folder) clam_controller_configuration.yaml
motor id, min/max position
clam_trajectory_controller.yaml
associated with planning groups
joint controller groupings
goal position tolerance
dynamixel_ports.yaml
usb to serial ports
baud rate, update rate
motor id ranges
diagnositcs launch (folder) clam_controller.launch
joint_state_aggregator.lanch robot_state_publisher (ros node) scripts (folder) gripper_open.py
pose_cobra.py
set_all_velocity.py
etc listens to every joint controller's /state message
and combines into one /joint_states message Inputs joint angles of robot
Outputs 3D poses of robot links
Uses kinematic tree model or robot
State is what all other system components use dynamixel_hardware_interface (ros package) controller_manager (ros node) msg (folder) JointState.msg
MotorState.msg
MotorStateList.msg srv (folder) ListControllers.srv
RestartController.srv
SetComplianceMargin.srv
SetComplianceSlope.srv
SetTorqueLimit.srv
SetVelocity.srv
StartController.srv
StopController.srv
TorqueEnable.srv controller_spawner (ros node) scripts (folder) change_id.py
controller_spawner.py
info_dump.py
set_servo_config.py only runs long enough to send
a service request to the controller
manager to create a new
controller uses ROS's pluginlib interface
to launch threaded controllers
for each single or multi-joint plugins shoulder_pan
controller gripper_roll
controller l_gripper_aft
controller shoulder_pitch
controller elbow_roll
controller elbow_pitch
controller wrist_roll
controller wrist_pitch
controller clam_trajectory_controller Listens to /command
Broadcasts to /state (trajectory controller) Listens to /follow_joint_trajectory_goal
Broadcasts /follow_joint_trajectory_result Broadcasts on its own:
/motor_states/port_rs485
/motor_states/port_ttl
/diagnostics gearbox (ros package) Gearbox provides a collection of usable peer-reviewed robotics-related libraries. Gearbox is not an integration framework. It provides a set of implementations, without insisting on a standard API, for use by any number of existing frameworks. Gearbox includes cross-platform libraries to communicate over TCP, UDP, and serial, and implements the communication protocols of many popular sensors. clam_bringup (ros package) launch (folder) clam_lowlevel.launch
clam_block_manipulation.launch
clam_experimental.launch
clam_highlevel.launch
clam_interactive_markers.launch
clam_pick_and_place.launch
clam_simulation.launch
clam_vision.launch header:
seq: 2162
stamp:
secs: 1335919478
nsecs: 660699252
frame_id: ''

name: ['shoulder_pan_joint', 'gripper_roll_joint', 'l_gripper_aft_joint', 'shoulder_pitch_joint', 'elbow_roll_joint', 'elbow_pitch_joint', 'wrist_roll_joint', 'wrist_pitch_joint']

position: [-0.0409061543436171, -0.0051132692929521375, -0.02556634646476069, 1.8336516047030404, 0.015339807878856412, -0.2454369260617026, -0.010226538585904275, -0.14317154020265985]

velocity: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.023140103151888233, 0.0]

effort: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -0.004887585532746823, 0.0] /joint_states joint_state_publisher (ros node) Processes the mimic tag in urdf to publish "fake" joints for passive gripper links
source_list = joint_states
has optional gu tf (ros node) Publishes 3D poses of robot links using kinematic tree model of robot
Coordinate frame relation buffered in tree structure with respect to time
Allows user to transform points, vectors btw any 2 coordinate frames at any point int ime. header:
seq: 0
stamp:
secs: 1335920868
nsecs: 720690689
frame_id: /wrist_roll_link
child_frame_id: /wrist_pitch_link
transform:
translation:
x: 0.0
y: 0.0
z: 0.0001
rotation:
x: -0.0505755952539
y: 0.705295294579
z: 0.0505755281505
w: 0.705296230362
- rviz (ros node) A 3d visualization environment for robots using ROS.
Inputs:
robot_state_publisher
robot_description (xml)
clam_marker_server/update
/camera/rgb/points clam_moveit_config (ros package) config (folder) clam.srdf
clam_execution_controllers.yaml
joint_limits.yaml
kinematics.yaml
ompl_planning.yaml launch (folder) clam_moveit_controller_manager.launch
clam_moveit_sensor_manager.launch
move_group.launch
moveit.rviz
moveit_rviz.launch
ompl_planning_pipeline.launch
planning_context.launch
planning_pipeline.launch
run_benchmark_server_ompl.launch
sensor_manager.launch
setup_assistant.launch
trajectory_execution.launch
warehouse.launch
warehouse_settings.launch ClamArm Repository MoveIt moveit_ros_move_group (ros package) move_group (ros node) moveit_core (ros package) calibrate_kinect_checkerboard clam_vision (ros package) (ros node) launch (folder) calibrate_with_grid.launch
clam_vision_freenect.launch
clam_vision_openni.launch manual_square_calibrate (ros node) openni (ros node) static_transform_publisher (ros node) 0.325766 0.07044 0.773049
0.0065139 0.732488 0.0329268 0.707349
/base_link /camera_link 100 moveit_ros_visualization (ros package) pluginlib block_perception_server clam_block_manipulation (ros package) (ros node) launch (folder) block_manipulation_servers.launch
block_manipulation_rviz.launch
block_demo.launch Detect the blocks and their poses' block_logic_server (ros node) Decides which detected block to
move where and in what order.
The high-level reasoning server. pick_place_server (ros node) block_manipulation_demo (ros node) Connects the three action servers Software Architecture Using ROS Dave Coleman
david.t.coleman@colorado.edu Reset arm to home position
Open and close end effector with variable torque
Shutdown: go to sleep position clam_moveit_plugins (ros package) clam_moveit_controller_manager (pluginlib) dynamixel_hardware_interface/StartController
dynamixel_hardware_interface/StopController
dynamixel_hardware_interface/ListControllers clam_msgs (ros package) action (folder) BlockLogic.action
ClamArm.action
PickPlace.action
BlockDetection.action clam_description (ros package) urdf (folder) clam.urdf
clam.xacro stl (folder) ./elbow_pitch_link_simple.STL
./wrist_pitch_link.STL
./shoulder_pitch_link.STL
./tabletop_link_simple.STL
./r_gripper_pincher.STL
./tabletop_link.STL
./l_gripper_aft_link.STL
./base_link.STL
./gripper_finger_link.STL
./shoulder_pitch_link_simple.STL
./r_gripper_fwd_link.STL
./gripper_roll_link.STL
./base_link_simple.STL
./l_gripper_fwd_link.STL
./wrist_pitch_link_simple.STL
./l_gripper_pincher.STL
./elbow_roll_link_simple.STL
etc... cad (folder) Solidworks Files Interface between our custom hardware and a generic controller for MoveIt Motion Planning Rviz Plugin Main pipeline of MoveIt motion
planning architecture collision_detection
collision_detection_fcl
collision_distance_field
constraint_samplers
controller_manager
distance_field
dynamics_solver
kinematic_constraints
kinematics_base
kinematics_cache
kinematics_constraint_aware
kinematics_metrics
planning_interface
planning_request_adapter
robot_model
robot_state
robot_trajectory
sensor_manager
trajectory_processing moveit_setup_assistant (ros package) setup_assistant (ros node) moveit_msgs (ros package) action (folder) Place.action
MoveGroup.action
Pickup.action msg (folder) RobotState.msg
PlanningOptions.msg
VisibilityConstraint.msg
JointConstraint.msg
ConstraintEvalResult.msg
CostSource.msg
MultiDOFJointState.msg
RobotTrajectory.msg
LinkScale.msg
BenchmarkPipelineResponse.msg
PositionConstraint.msg
OrientedBoundingBox.msg
TrajectoryConstraints.msg
BenchmarkPluginResponse.msg
ObjectColor.msg
DisplayRobotState.msg
WorkspaceParameters.msg
PlanningSceneWorld.msg
OrientationConstraint.msg
JointLimits.msg
etc... srv (folder) GetKinematicSolverInfo.srv
LoadMap.srv
GetPositionFK.srv
QueryPlannerInterfaces.srv
ComputePlanningPluginsBenchmark.srv
GetPositionIK.srv
GetStateValidity.srv
SaveMap.srv
ExecuteKnownTrajectory.srv
GetMotionPlan.srv
GetConstraintAwarePositionIK.srv
ComputePlanningPipelineBenchmark.srv
GetCartesianPath.srv
ConstructConstraintApproximation.srv moveit_planners (ros package) moveit_ompl_planners_core (ros package) moveit_ompl_planners_ros_plugin (ros package) Open Motion
Planning Library Interface to ROS chomp_motion_planner (ros package) chomp_interface_ros (ros package) Covariant Hamiltonian Optimization and Motion Planning Interface to ROS sbpl_interface (ros package) sbpl_interface_ros (ros package) Search-Based Planning Algorithms Interface to ROS pluginlib Planning Scene Rviz Plugin pluginlib Robot State Rviz
Plugin pluginlib Rviz Plugin Render Tools moveit_ros_manipulation (ros package) pick_place (ros node) Pipeline for manipulation tasks moveit_ros_perception (ros package) robot_self_filter (ros node) occupancy_map_monitor (ros node) moveit_ros_planning (ros package) constraint_sampler_manager_loader (ros node) kdl_kinematics_plugin (ros node) kinematics_plugin_loader (ros node) kinematics_reachability (ros node) plan_execution (ros node) planning_pipeline (ros node) planning_request_adapter_plugins (ros node) planning_scene_monitor (ros node) planning_scene_monitor_tools (ros node) rdf_loader (ros node) robot_model_loader (ros node) trajectory_execution_manger (ros node) moveit_ros_warehouse (ros package) warehouse (ros node) moveit_ros_interface (ros package) move_group_interface (ros node) planning_scene_interface (ros node) robot_interaction (ros node) PCL Point Cloud Library OpenCV Computer Vision PassThrough Filter of z index
SACSegmentation of plane using RANSAC Algorithm
Euclidean cluster extraction using KdTree Convert to gray scale
Blur image
Canny edge detection
Contour line detection
Hough transform line classification
Custom angle averaging algorithm Pre-grasp position Grasp position Grasping Place position Release
Full transcript