Create Workspace Skeleton Run ROS using plain: roscore mkdir catkin_ws && cd catkin_ws cmake_minimum_required(VERSION 2.8.3) wstool init src project(package_name) Alternatively, roslaunch will run its own roscore automatically if it can’t find catkin_make find_package(catkin REQUIRED) source devel/setup.bash catkin_package() one: roslaunch my_package package_launchfile.launch Add Repo to Workspace Package Dependencies Suppress this behaviour with the --wait flag. roscd; cd ../src To use headers or libraries in a package, or to use a package’s exported wstool set repo_name \ CMake macros, express a build-time dependency: Nodes, Topics, Messages --git http://github.com/org/repo_name.git \ find_package(catkin REQUIRED COMPONENTS roscpp) rosnode list --version=kinetic-devel rostopic list wstool up Tell dependent packages what headers or libraries to pull in when your rostopic echo cmd_vel
Resolve Dependencies in Workspace package is declared as a catkin component: rostopic hz cmd_vel
rostopic info cmd_vel catkin_package( sudo rosdep init # only once rosmsg show geometry_msgs/Twist INCLUDE_DIRS include rosdep update rosdep install --from-paths src --ignore-src \ LIBRARIES ${PROJECT_NAME} Remote Connection --rosdistro=${ROS_DISTRO} -y CATKIN_DEPENDS roscpp) Master’s ROS environment: • ROS_IP or ROS_HOSTNAME set to this machine’s network address. PACKAGES Note that any packages listed as CATKIN_DEPENDS dependencies must also be declared as a <run_depend> in package.xml. • ROS_MASTER_URI set to URI containing that IP or hostname.
Create a Package Your environment:
Messages, Services catkin_create_pkg package_name [dependencies ...] • ROS_IP or ROS_HOSTNAME set to your machine’s network address. These go after find_package(), but before catkin_package(). • ROS_MASTER_URI set to the URI from the master. Package Folders Example:
include/package_name C++ header files
find_package(catkin REQUIRED COMPONENTS message_generation To debug, check ping from each side to the other, run roswtf on each side. std_msgs)
src Source files.
add_message_files(FILES MyMessage.msg) ROS Console add_service_files(FILES MyService.msg) Python libraries in generate_messages(DEPENDENCIES std_msgs) Adjust using rqt_logger_level and monitor via rqt_console. To enable debug subdirectories catkin_package(CATKIN_DEPENDS message_runtime std_msgs)ww output across sessions, edit the $HOME/.ros/config/rosconsole.config and add a line for your package: scripts Python nodes and scripts log4j.logger.ros.package_name=DEBUG Build Libraries, Executables msg, srv, action Message, Service, and And then add the following to your session: Action definitions Goes after the catkin_package() call. add_library(${PROJECT_NAME} src/main) export ROSCONSOLE_CONFIG_FILE=$HOME/.ros/config/rosconsole.config