1、建立一个工作空间:
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ catkin_init_workspace
编译:
$ cd ~/catkin_ws/
$ catkin_make
$ source devel/setup.bash
这里可以通过以下命令:
$ echo $ROS_PACKAGE_PATH
验证source是否成功,如果成功应该有新建的文件路径。
2、创建一个功能包:
$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp
#beginner_tutorials为功能包名,std_msgs rospy roscpp 为三个依赖,std_msgs为ROS自定义的一些基本数据格式,rospy为依赖于python,roscpp为依赖于C++.
$ cd ~/catkin_ws
$ catkin_make
3、建立一个talker以及listener:
$ cd ~/catkin_ws/src/beginner_tutorials/src
在catkin_ws/src/beginner_tutorials/src目录下建立两个cpp文件,复制下列代码:
talker:
#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);
/**
* A count of how many messages we have sent. This is used to create
* a unique string for each message.
*/
int count = 0;
while (ros::ok())
{
std_msgs::String msg;
std::stringstream ss;
ss << "hello world " << count;
msg.data = ss.str();
ROS_INFO("%s", msg.data.c_str());
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++count;
}
return 0;
}
listener:
#include "ros/ros.h"
#include "std_msgs/String.h"
/**
* This tutorial demonstrates simple receipt of messages over the ROS system.
*/
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;
}
编辑cmakelist文件:
cd ~/catkin_ws/src/beginner_tutorials/src
gedit CMakeLists.txt
在文件中加入:
include_directories(include ${catkin_INCLUDE_DIRS})
add_executable(talker src/talker.cpp)
target_link_libraries(talker ${catkin_LIBRARIES})
add_dependencies(talker beginner_tutorials_generate_messages_cpp)
add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener beginner_tutorials_generate_messages_cpp)
注:这里的add_dependencies加入可能会报错,这是因为这里添加的依赖项并没有用到同时也不存在,所以cmake时会出现警告,可以忽略或者直接将add_dependencies这两行先注释掉。
$ cd ~/catkin_ws
$ catkin_make
4、测试
$ roscore
新开一个终端:
$ cd ~/catkin_ws
$ source ./devel/setup.bash
#这里是使路径生效,如果不执行ros将找不到该路径下的文件
$ rosrun beginner_tutorials talker
再新开一个终端:
$ cd ~/catkin_ws
$ source ./devel/setup.bash
$ rosrun beginner_tutorials listener
如果不想每次开启时都source的话,可以:
$ gedit ~/.bashrc
在bashrc文件最下面加入:
source /home/computer_name/catkin_ws/devel/setup.bash
#这里computer_name为自己的电脑名称。
保存退出后再执行:
source ~/.bashrc
之后再执行上述talker或者listener就不用执行前两行命令了。
参考:https://www.cnblogs.com/flyingjun/p/8796459.html