0% found this document useful (0 votes)
211 views1 page

ROS Cheat Sheet Hydro

The document provides information on ROS workspaces, packages, nodes, topics, and messages. It covers creating workspaces and packages, managing dependencies, building packages, and releasing packages. It also discusses running ROS, connecting nodes remotely, and debugging tools.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
211 views1 page

ROS Cheat Sheet Hydro

The document provides information on ROS workspaces, packages, nodes, topics, and messages. It covers creating workspaces and packages, managing dependencies, building packages, and releasing packages. It also discusses running ROS, connecting nodes remotely, and debugging tools.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

ROS CHEAT SHEET HYDRO v1.

01
WORKSPACES

CMakeLists.txt

RUNNING SYSTEM

Create Workspace

Skeleton

mkdir catkin_ws && cd catkin_ws


wstool init src
catkin_make
source devel/setup.bash

cmake_minimum_required(VERSION 2.8.3)
project(package_name)
find_package(catkin REQUIRED)
catkin_package()

Run ROS using plain:


roscore

Add Repo to Workspace

Package Dependencies

roscd; cd ../src
wstool set repo_name \
--git http://github.com/org/repo_name.git \
--version=hydro-devel
wstool up

To use headers or libraries in a package, or to use a packages exported


CMake macros, express a build-time dependency:

Resolve Dependencies in Workspace

find_package(catkin REQUIRED COMPONENTS roscpp)


Tell dependent packages what headers or libraries to pull in when your
package is declared as a catkin component:

sudo rosdep init # only once


rosdep update
rosdep install --from-paths src --ignore-src \
--rosdistro=hydro -y

catkin_package(
INCLUDE_DIRS include
LIBRARIES ${PROJECT_NAME}
CATKIN_DEPENDS roscpp)

PACKAGES

Note that any packages listed as CATKIN_DEPENDS dependencies must also


be declared as a <run_depend> in package.xml.

Create a Package
catkin_create_pkg package_name [dependencies ...]

Package Folders
include/package_name

C++ header files

src

Source files.
Python libraries in
subdirectories

scripts

Python nodes and scripts

msg, srv, action

Message, Service, and


Action definitions

Release Repo Packages


catkin_generate_changelog
# review & commit changelogs
catkin_prepare_release
bloom-release --track hydro --ros-distro hydro repo_name

Reminders

Testable logic

Publish diagnostics

Desktop dependencies in a separate package

Messages, Services
These go after find_package(), but before catkin_package().
Example:
find_package(catkin REQUIRED COMPONENTS message_generation
std_msgs)
add_message_files(FILES MyMessage.msg)
add_service_files(FILES MyService.msg)
generate_messages(DEPENDENCIES std_msgs)
catkin_package(CATKIN_DEPENDS message_runtime std_msgs)ww

Build Libraries, Executables


Goes after the catkin_package() call.
add_library(${PROJECT_NAME} src/main)
add_executable(${PROJECT_NAME}_node src/main)
target_link_libraries(
${PROJECT_NAME}_node ${catkin_LIBRARIES})

Alternatively, roslaunch will run its own roscore automatically if it cant find
one:
roslaunch my_package package_launchfile.launch
Suppress this behaviour with the --wait flag.

Nodes, Topics, Messages


rosnode list
rostopic list
rostopic echo cmd_vel
rostopic hz cmd_vel
rostopic info cmd_vel
rosmsg show geometry_msgs/Twist

Remote Connection
Masters ROS environment:
ROS_IP or ROS_HOSTNAME set to this machines network address.
ROS_MASTER_URI set to URI containing that IP or hostname.
Your environment:
ROS_IP or ROS_HOSTNAME set to your machines network address.
ROS_MASTER_URI set to the URI from the master.
To debug, check ping from each side to the other, run roswtf on each side.

ROS Console
Adjust using rqt_logger_level and monitor via rqt_console. To enable debug
output across sessions, edit the $HOME/.ros/config/rosconsole.config
and add a line for your package:
log4j.logger.ros.package_name=DEBUG
And then add the following to your session:
export ROSCONSOLE_CONFIG_FILE=$HOME/.ros/config/rosconsole.config
Use the roslaunch --screen flag to force all node output to the screen, as if
each declared <node> had the output="screen" attribute.

Installation
install(TARGETS ${PROJECT_NAME}
DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION})
install(TARGETS ${PROJECT_NAME}_node
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
install(PROGRAMS scripts/myscript
DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION})
install(DIRECTORY launch
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION})

www.clearpathrobotics.com/ros-cheat-sheet
2014 Clearpath Robotics, Inc. All Rights Reserved.

You might also like