首先确定已经正确安装好ros,再进行以下操作
1、创建工作环境
mkdir -p ~/catkin_ws/src
cd catkin_ws/src
catkin_create_pkg agitr
2、配置工作目录
sudo gedit ~/.bashrc
在最后一行添加
export ROS_PACKAGE_PATH=~/catkin_ws:$ROS_PACKAGE_PATH
3、
cd…
catkin_make
source devel/setup.bash
echo $ROS_PACKAGE_PATH
4、创建一个包
cd catkin_ws/src
catkin_create_pkg cici
创建完成后,在这cici下创建src
mkdir src
src下创建hello.cpp
touch hello.cpp
sudo gedit hello.cpp
#include
int main(int argc,char **argv){
ros::init(argc,argv,"hello_ros");
ros::NodeHandle nh;
ROS_INFO_STREAM("hello,ROS!");
}
5、回到上一级,修改CMakeLists.txt
sudo gedit CMakeLists.txt
cmake_minimum_required(VERSION 2.8.3)
project(agitr)
#添加需要的依赖库 roscpp
find_package(catkin REQUIRED COMPONENTS roscpp)
include_directories(
${catkin_INCLUDE_DIRS}
)
#声明想要的可执行文件的文件名,以及所需要的源列表,如果有多个源列表,空格列在此处
add_executable(hello src/hello.cpp)
#告诉Cmake当链接此可执行文件时需要链接哪些库
target_link_libraries(hello ${catkin_LIBRARIES})
6、修改package.xml文件
在
7、退回到catkin_ws工作区并编译
cd ~/catkin_ws
catkin_make
source devel/setup.bash
8、打开另外一个终端启动
roscore
9、在之前的终端或者新开一个终端
cd ~/catkin_ws
$ source ./devel/setup.bash
rosrun cici hello
1、切换到catkin_ws/src/cici/src/
2、新建talker.cpp
#include "ros/ros.h"
#include "std_msgs/String.h"
#include
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);
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;
}
3、新建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;
}
4、修改cici下的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)
6、回到catkin_ws,执行
catkin_make
roscore
在另外一个终端执行
cd ~/catkin_ws
$ source ./devel/setup.bash
rosrun cici talker
再打开一个终端
cd ~/catkin_ws
$ source ./devel/setup.bash
rosrun cici listener