<> <> == Supported Hardware == It is the goal of the ROS-Industrial program to provide ROS interfaces to many different kinds of industrial equipment, including PLCs, Robot Controllers, Servos, Human Machine Interfaces, IO Networks, etc. As these interfaces become available, they will be documented here. === Industrial Robots === The table below summarizes level of support for various robot interfaces. All interfaces make use of commercially available options (although the required options may be available at additional cost). Because each vendor exposes different functional interfaces, the capability of each can differ. This is noted where significant limitations are present. For more detailed information please see the associated stack/package documentation. ==== Definitions ==== {{{#!wiki version electric fuerte groovy hydro ||Position Streaming||Joint positions are streamed to the controller. Move velocity is fixed by the controller. (This method is often the easiest to set up because much of the controller interpolation is maintained)|| ||Trajectory Downloading||A full trajectory of joint positions is downloaded to the controller. The trajectory includes velocity constraints which are adhered to by the controller|| ||Trajectory Streaming||This is very similar to Position Streaming, except that trajectory velocity constraints are adhered to by the controller|| ||Torque Control||Direct torque commands are sent to the controller. This is a real-time interface (not yet supported within ROS)|| ||Arm Nav. Pkg||Robot specific geometry must be defined in an assoicatiated arm navigation package. This information is used for path planning purposes and collision checking. While these are created for each robot model, they must be recreated for entire robot cells (This is not difficult, see this [[Industrial/Tutorials/Create_a_Arm_Nav_Pkg_for_an_Industrial_Robot|tutorial]])>>|| }}} {{{#!wiki version indigo_and_newer ||Position Streaming||Joint positions are streamed to the controller. Move velocity is fixed by the controller. (This method is often the easiest to set up because much of the controller interpolation is maintained)|| ||Trajectory Downloading||A full trajectory of joint positions is downloaded to the controller. The trajectory includes velocity constraints which are adhered to by the controller|| ||Trajectory Streaming||This is very similar to Position Streaming, except that trajectory velocity constraints are adhered to by the controller|| ||Torque Control||Direct torque commands are sent to the controller. This is a real-time interface (not yet supported within ROS)|| ||!MoveIt Pkg||Robot specific geometry must be defined in an associated manipulator package. This information is used for path planning purposes and collision checking. While these are created for each robot model, they must be recreated for entire robot cells (This is not difficult, see this [[Industrial/Tutorials/Create_a_MoveIt_Pkg_for_an_Industrial_Robot|tutorial]])|| }}} ==== Supported Hardware Table ==== {{{#!wiki version electric fuerte ||Vendor||Controller(s)||Position<
>Streaming||Trajectory<
>Downloading||Trajectory<
>Streaming||Torque<
>Control||Manipulator||Arm Nav.<
>Pkg|| ||<|3>[[motoman|Motoman]]||<|3>DX100||<|3>YES <>||<|3>NO||<|3>NO||<|3>NO||SIA10D||YES|| ||SIA20D||YES|| ||Other DX 100<
>Compatible||NO <>|| ||[[adept|Adept]]||CX, CS||YES <>||NO||NO||NO||Viper 650||YES|| }}} {{{#!wiki version groovy ||Vendor||Controller(s)||~-Position<
>Streaming-~||~-Trajectory<
>Downloading-~||~-Trajectory<
>Streaming-~||~-Torque<
>Control-~||Manipulator||Arm Nav.||!MoveIt<
>Pkg|| ||<|2 rowstyle="background-color: #D6EBFF; vertical-align:top" style="text-align:left">[[abb|ABB]]||<|2 style="text-align:left">IRC5||<|2>NO||<|2>YES||<|2>NO||<|2>NO||IRB-2400||YES||NO|| ||IRB-5400||YES||NO|| ||[[adept|Adept]]||CX, CS||YES <>||NO||NO||NO||Viper 650||YES||NO|| ||[[fanuc|Fanuc]]||<|6 style="text-align:left">R-30iA||<|6>YES<>||<|6>NO||<|6>NO||<|6>NO||LR Mate 200iC(/5H)||NO||YES <>|| ||M-10iA||YES||YES <>|| ||M-16iB/20||YES||YES <>|| ||M-20iA(/10L)||NO||YES <>|| ||M-430iA/(2F, 2P)||YES||YES <>|| ||Other||NO <>||NO <>|| ||[[motoman|Motoman]]||<|3 style="text-align:left">DX100||<|3>YES <>||<|3>NO||<|3>NO||<|3>NO||SIA10D||YES||NO|| ||SIA20D||YES||NO|| ||Other||NO <>||NO <>|| ||[[universal_robot|Universal Robot]]||UR 5||YES <>||NO||NO||NO||UR 5||YES||YES|| }}} {{{#!wiki version hydro ||Vendor||Controller(s)||~-Position<
>Streaming-~||~-Trajectory<
>Downloading-~||~-Trajectory<
>Streaming-~||~-Torque<
>Control-~||Manipulator||Arm Nav.||!MoveIt<
>Pkg|| ||<|2 rowstyle="background-color: #D6EBFF; vertical-align:top" style="text-align:left">[[abb|ABB]]||<|2 style="text-align:left">IRC5||<|2>NO||<|2>YES||<|2>NO||<|2>NO||IRB-2400||YES||NO|| ||IRB-5400||YES||NO|| ||[[adept|Adept]]||CX, CS||YES <>||NO||NO||NO||Viper 650||YES||NO|| ||[[fanuc|Fanuc]]||<|8 style="text-align:left">R-30iA / R-30iB||<|8>YES<>||<|8>NO||<|8>NO||<|8>NO||LR Mate 200iC (all)||NO||YES|| ||LR Mate 200iD||NO||YES <>|| ||M-10iA||NO||YES|| ||M-16iB/20||YES||YES|| ||M-20iA(/10L)||NO||YES|| ||M-430iA/(2F, 2P)||YES||YES|| ||M-900iA/260L <>||NO||NO|| ||Other||NO <>||NO <>|| ||[[motoman|Motoman]]||<|2 style="text-align:left">DX100||<|2>YES <>||<|2>NO||<|2>NO <>||<|2>NO||SIA10D/F||YES||NO|| ||SIA20D/F||YES||NO|| ||FS100||<|2>NO||<|2>NO||<|2>YES||<|2>NO||MH5F||NO||YES|| ||Other||NO <>||NO <>|| ||[[universal_robot|Universal Robot]]||<|2 style="text-align:left">CB2/CB3 <>||<|2>YES <>||<|2>NO||<|2>NO||<|2>NO||UR 5||NO||YES|| ||UR 10||NO||YES|| }}} {{{#!wiki version indigo_and_newer ||Vendor||Controller(s)||~-Position<
>Streaming-~||~-Trajectory<
>Downloading-~||~-Trajectory<
>Streaming-~||~-Torque<
>Control-~||~-IO<
>Control-~||Manipulator||!MoveIt<
>Pkg|| ||<|2 rowstyle="background-color: #D6EBFF; vertical-align:top" style="text-align:left">[[abb|ABB]]||<|2 style="text-align:left">IRC5||<|2>NO||<|2>YES||<|2>NO||<|2>NO||<|2>NO||IRB-2400||YES|| ||IRB-5400||NO|| ||[[adept|Adept]]||CX, CS||YES <>||NO||NO||NO||NO||Viper 650||NO|| ||[[fanuc|Fanuc]]||<|8 style="text-align:left">R-30iA / R-30iB||<|8>YES<>||<|8>NO||<|8>NO||<|8>NO||<|8>NO||LR Mate 200iC (all)||YES|| ||LR Mate 200iD||YES <>|| ||M-10iA||YES|| ||M-16iB/20||YES|| ||M-20iA(/10L)||YES|| ||M-430iA/(2F, 2P)||YES|| ||M-900iA/260L <>||NO|| ||Other||NO <>|| ||[[motoman|Motoman]]||DX100||NO||NO||YES||NO||YES<>||SIA10D/F||NO|| ||FS100||NO||NO||YES||NO||YES<>||SIA20D/F||YES|| ||DX200||NO||NO||YES||NO||YES<>||MH5F||YES|| ||YRC1000||<|2>NO||<|2>NO||<|2>YES||<|2>NO||YES<>||SDA10F||YES|| || ||Other||NO <>|| ||[[universal_robot|Universal Robot]]||<|2 style="text-align:left">CB2/CB3 <>||<|2>YES <>||<|2>NO||<|2>NO||<|2>NO||<|2>YES <>||UR 5||YES|| ||UR 10||YES|| }}} === Grippers === {{{#!wiki version electric No industrial-specific gripper drivers are provided in the Electric release. Gripper control can be manually implemented using raw EtherCAT I/O as described below. }}} {{{#!wiki version fuerte No industrial-specific gripper drivers are provided in the Fuerte release. Gripper control can be manually implemented using raw EtherCAT I/O as described below. }}} {{{#!wiki version groovy hydro indigo_and_newer While most grippers are quite simple and can be addressed using standard [[#IO Networks|IO Networks]], some are more complex. Complex grippers, which benefit from ROS [[object_manipulation|grasp planning]] capability, require hardware specific drivers. ==== Definitions ==== ||Grasp Hand<
>Posture Action||The <> is an [[actionlib|action]] interface that is used by higher level [[object_manipulation|grasp planning]] software. Grippers that support this interface can be easily integrated into the grasp planning pipeline.|| ==== Supported Hardware Table ==== ||Vendor||Model(s)||Grasp Hand<
>Posture Action|| ||[[robotiq|Robotiq]]||S-Model||NO|| }}} === IO Networks === Networked input/output are commonly found in industrial applications. Support for these specialized networks within ROS-Industrial does not exist. However, outside stacks are available. We recommend the [[http://ros.org/wiki/soem|Simple Open EtherCAT Master]] stack. See [[Industrial/Tutorials/Simple_EtherCAT_Network_IO|implementation notes]]. {{{#!wiki version indigo_and_newer In the Motoman stack, limited support for controlling basic I/O has been implemented. This can be used for general gripper control. However, this custom control message is not compatible with standard industrial Fieldbus protocols. Additional hardware may be required for Fieldbus protocols. }}} == Notes ==