Check out my first novel, midnight's simulacra!
ROS: Difference between revisions
(6 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
[http://wiki.ros.org/Documentation ROS] is a network-capable software platform for robotics, capable of managing processes (nodes), and exchanging information between them. | [http://wiki.ros.org/Documentation ROS] is a network-capable software platform for robotics, capable of managing processes (nodes), and exchanging information between them. Releases are named, with the current 12th release being Melodic Morenia (typically referred to as Melodic, released 2018-05-23). | ||
==ROS on [[Debian]]== | |||
ROS Melodic supports Debian 9 ("stretch") with binary packages. Installation instructions can be found [http://wiki.ros.org/Installation/Debian here]. Debian Unstable requires building from [http://wiki.ros.org/Installation/Source source]. | |||
==Concepts== | ==Concepts== | ||
Line 12: | Line 15: | ||
* [http://wiki.ros.org/Topics Topic]: a named bus on which messages of a single type are published | * [http://wiki.ros.org/Topics Topic]: a named bus on which messages of a single type are published | ||
** A topic can be latched, meaning that new subscribers get the last message published | ** A topic can be latched, meaning that new subscribers get the last message published | ||
* [http://wiki.ros.org/Services Service]: a named procedure, implemented by some Node | * [http://wiki.ros.org/Services Service]: a named synchronous procedure, implemented by some Node | ||
** Connections can be persistent according to the client's choice | ** Connections can be persistent according to the client's choice | ||
* [http://wiki.ros.org/Parameter%20Server Parameter]: a key in the global configuration dictionary | * [http://wiki.ros.org/Parameter%20Server Parameter]: a key in the global configuration dictionary | ||
** XMLRPC data types | ** XMLRPC data types | ||
* [http://wiki.ros.org/Bags Bag]: a recorded/pregenerated set of messages that can be replayed | |||
==Names== | ==Names== | ||
Line 24: | Line 28: | ||
* ~private (the node's name replaces the tilde) | * ~private (the node's name replaces the tilde) | ||
Names can furthermore be [http://wiki.ros.org/Remapping%20Arguments remapped] when a node is started by e.g. rosrun. | Names can furthermore be [http://wiki.ros.org/Remapping%20Arguments remapped] when a node is started by e.g. <code>rosrun</code>. | ||
* Special case: launch node into namespace with <code>__ns</code> | * Special case: launch node into namespace with <code>__ns</code> | ||
* Special case: change node name with variable <code>__name</code> | * Special case: change node name with variable <code>__name</code> | ||
** To launch barnode with the name barnode3: | ** To launch barnode with the name barnode3: <code>roslaunch foopkg barnode __name:=barnode3</code> | ||
==Executables== | ==Executables== | ||
Line 35: | Line 39: | ||
* [http://wiki.ros.org/rosnode rosnode]: manage running nodes | * [http://wiki.ros.org/rosnode rosnode]: manage running nodes | ||
** <code>rosnode list</code> lists running nodes | ** <code>rosnode list</code> lists running nodes | ||
** <code> | ** <code>rosnode info</code> displays information about a running node | ||
* [http://wiki.ros.org/rostopic rostopic]: interact with topics using YAML | * [http://wiki.ros.org/rostopic rostopic]: interact with topics using YAML | ||
** <code>rostopic list</code> will list active topics on a running rosmaster | ** <code>rostopic list</code> will list active topics on a running rosmaster | ||
Line 42: | Line 46: | ||
* [http://wiki.ros.org/rosmsg rosmsg]: display information about message types | * [http://wiki.ros.org/rosmsg rosmsg]: display information about message types | ||
* [http://wiki.ros.org/rosmsg#rossrv rossrv]: display information about services | * [http://wiki.ros.org/rosmsg#rossrv rossrv]: display information about services | ||
* [http://wiki.ros.org/rospack rospack]: display information about packages | |||
* rosversion: display version of available packages | |||
* [http://wiki.ros.org/rosbag rosbag]: replay and inspect bags |
Latest revision as of 19:22, 12 February 2020
ROS is a network-capable software platform for robotics, capable of managing processes (nodes), and exchanging information between them. Releases are named, with the current 12th release being Melodic Morenia (typically referred to as Melodic, released 2018-05-23).
ROS on Debian
ROS Melodic supports Debian 9 ("stretch") with binary packages. Installation instructions can be found here. Debian Unstable requires building from source.
Concepts
- Package: defined by a directory containing a file package.xml (REP-0127)
- msg/MyMessageType.msg defines messages for the package, published to topics
- srv/MyServiceType.srv defines services for the package, supporting request/reply semantics
- Node: a named process that performs computation
- A running node has a type and a graph resource name
- A node is typically launched standalone using rosrun
- If a node is started with the name of an existing node, the existing node is stopped
- Master: implemented by the rosmaster package, usually started via
roscore
- Topic: a named bus on which messages of a single type are published
- A topic can be latched, meaning that new subscribers get the last message published
- Service: a named synchronous procedure, implemented by some Node
- Connections can be persistent according to the client's choice
- Parameter: a key in the global configuration dictionary
- XMLRPC data types
- Bag: a recorded/pregenerated set of messages that can be replayed
Names
Names aka graph resource names are unique for each topic, parameter, node, and service in the ros graph. It is a shared namespace; a topic cannot share a name with a node. The ROS_NAMESPACE environment variable can be used to scope the ros graph namespace. Names can be:
- relative,
- /global, and
- ~private (the node's name replaces the tilde)
Names can furthermore be remapped when a node is started by e.g. rosrun
.
- Special case: launch node into namespace with
__ns
- Special case: change node name with variable
__name
- To launch barnode with the name barnode3:
roslaunch foopkg barnode __name:=barnode3
- To launch barnode with the name barnode3:
Executables
- rosrun: launch an executable from a package
- roslaunch: starts collections of nodes specified in a launch XML file
- roscore: roslaunch to start core ros functionality
- rosnode: manage running nodes
rosnode list
lists running nodesrosnode info
displays information about a running node
- rostopic: interact with topics using YAML
rostopic list
will list active topics on a running rosmasterrostopic echo
echoes messages from the topic
- rosservice: interact with services using YAML
- rosmsg: display information about message types
- rossrv: display information about services
- rospack: display information about packages
- rosversion: display version of available packages
- rosbag: replay and inspect bags