参考网址:
1,编写publisher节点
节点是一种连接ROS网络的ROS术语,下面是建立的publisher("talker")节点,他可以持续发送信息
$ roscd beginner_tutorials ---转到要编写的package路径下
$ touch src/talker.cpp ---创建src/talker.cpp文件
$ emacs src.talker.cpp ---如果大家安装了emacs,则用emacs编辑,如果没有,则用gedit编辑
打开emacs输入:
这里排版排不好,源代码参考:https://code.ros.org/svn/ros/stacks/ros_tutorials/trunk/roscpp_tutorials/talker/talker.cpp
2,编写subscriber节点
$ touch src/listener.cpp
$ emacs src/listener.cpp
输入:
这里排版排不好,源代码参考
3,编译节点
$ rosed beginner_tutorialsCMakeLists.txt
修改成如下:
cmake_minimum_required(VERSION 2.4.6)
include($ENV{ROS_ROOT}/core/rosbuild/rosbuild.cmake)
# Set the build type. Options are:
# Coverage : w/ debug symbols, w/o optimization, w/ code-coverage
# Debug : w/ debug symbols, w/o optimization
# Release : w/o debug symbols, w/ optimization
# RelWithDebInfo : w/ debug symbols, w/ optimization
# MinSizeRel : w/o debug symbols, w/ optimization, stripped binaries
#set(ROS_BUILD_TYPE RelWithDebInfo)
rosbuild_init()
#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)
#set the default path for built libraries to the "lib" directory
set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib)
#uncomment if you have defined messages
#rosbuild_genmsg()
#uncomment if you have defined services
#rosbuild_gensrv()
#common commands for building c++ executables and libraries
#rosbuild_add_library(${PROJECT_NAME} src/example.cpp)
#target_link_libraries(${PROJECT_NAME} another_library)
#rosbuild_add_boost_directories()
#rosbuild_link_boost(${PROJECT_NAME} thread)
#rosbuild_add_executable(example examples/example.cpp)
#target_link_libraries(example ${PROJECT_NAME})
并在最底层添加:
rosbuild_add_executable(talker src/talker.cpp)
rosbuild_add_executable(listener src/listener.cpp)
这两句表示增加两个执行者:talker和listener,并添加到bin路径中
最后:
$ make
至此,我们编写了一个很简单的自己的talker和listener