跳转到内容
新建笔记

ROS 测试记录

(1)打开ROS的prompt窗口,运行roscore;

(2)新ROS prompt,

终端窗口
mkdir catkin_ws\src
cd catkin_ws
catkin_make
cd src
catkin_create_pkg beginner_tutorials std_msgs roscpp
cd ..
catkin_make
# beginner_tutorials下新增talker.cpp、listener.cpp,并修改eginner_tutorials的CmakeLists.txt
cd catkin_ws
catkin_make
devel\setup.bash #每次修改都要重新设置环境变量
# 再新开两个窗口,分别
cd catkin_ws
devel\setup.bash
# 然后,分别对应执行
rosrun beginner_tutorials talker
rosrun beginner_tutorials listener
talker.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"
#include <sstream>
int main(int argc, char **argv) {
ros::init(argc, argv, "talker");
ros::NodeHandle n;
ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
ros::Rate loop_rate(10);
while (ros::ok()) {
std_msgs::String msg;
std::stringstream ss;
ss << "Hello World " << ros::Time::now();
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
return 0;
}
listener.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"
void chatterCallback(const std_msgs::String::ConstPtr& msg) {
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char **argv) {
ros::init(argc, argv, "listener");
ros::NodeHandle n;
ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
ros::spin();
return 0;
}
# beginner_tutorials 的CMakeLists.txt
cmake_minimum_required(VERSION 3.0.2)
project(beginner_tutorials)
## Compile as C++11, supported in ROS Kinetic and newer
add_compile_options(-std=c++11)
## Find catkin macros and libraries
find_package(catkin REQUIRED COMPONENTS
roscpp
std_msgs
)
###################################
## catkin specific configuration ##
###################################
catkin_package(
CATKIN_DEPENDS roscpp std_msgs
)
###########
## Build ##
###########
## Specify additional locations of header files
include_directories(
${catkin_INCLUDE_DIRS}
)
## Declare a C++ executable for talker and listener nodes
add_executable(talker src/talker.cpp)
add_executable(listener src/listener.cpp)
## Add cmake target dependencies of the executables
add_dependencies(talker ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
add_dependencies(listener ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})
## Specify libraries to link a library or executable target against
target_link_libraries(talker ${catkin_LIBRARIES})
target_link_libraries(listener ${catkin_LIBRARIES})
#############
## Install ##
#############
## Install executables
install(TARGETS talker listener
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)