第一个ros程序

首先确定已经正确安装好ros,再进行以下操作

一、ros 实现 helloworld

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
第一个ros程序_第1张图片
创建完成后,在这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文件
catkin后面添加两句即可

roscpp
roscpp

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
在这里插入图片描述

二、ros下listener.cpp与talker.cpp

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

第一个ros程序_第2张图片
7、打开新的终端

roscore

在另外一个终端执行

 cd ~/catkin_ws  
$ source ./devel/setup.bash 
rosrun cici talker

再打开一个终端

 cd ~/catkin_ws  
$ source ./devel/setup.bash 
rosrun cici listener

第一个ros程序_第3张图片

你可能感兴趣的:(嵌入式)