创建第一个ROS项目

  • 创建根目录
  • 配置ros空间
  • 创建一个ROS包
  • 1.创建包。
  • 2.创建发布者。
  • 3.创建订阅者。
  • 配置CMakeLists.txt
  • 编译整个ROS工程
  • 运行talker和listener
  • 获取源码



此方法暂时只支持Ubuntu16.04,其它版本可能不支持,请注意分别!!!

创建根目录

点击"文件"–>“打开文件夹”–>”创建文件夹",磁盘上选择一个路径A(此处A代表你的保存文件夹的路径),输入文件夹名称,例如:test,点击确定。此时在左侧资源管理器中,会自动生成一个".vscode"文件夹,会自动生成"c_cpp_properties.json" 和”setting.json“两个文件。

vscode 项目文件夹结构 python_c++

配置ros空间

1, 点击创建"src"文件夹

vscode 项目文件夹结构 python_#include_02


注意: (正常来说,vscode 安装 ros插件就会自动生成)

如果此处不自动生成c_cpp_properties.json文件, 可手动生成, 按Ctrl + Shift + P,输入c/c++: edit configurations(JSON), 即可.

2, 点击"终端"–>“新建终端”,在终端中输入"catkin_make",系统会自动在test文件夹下创建 “build”, "devel"文件夹和其他配置文件。

vscode 项目文件夹结构 python_#include_03


3, 使用快捷键Ctrl + Shift + T

echo "source A/test/devel/setup.bash">>~/.bashrc   #此处A代表你的保存文件夹的路径
source ~/.bashrc

4, 检测配置是否成功,输入下面的指令,按回车,成功会显示我们创建的这个ROS工作路径, 如果不成功,请仔细检查输入的指令。

echo $ROS_PACKAGE_PATH

创建一个ROS包

1.创建包。

右键点击"src"文件夹,右键弹出选项中,点击"Create Catkin Package",输入包的名称ros_test,按Enter确认,输入包的依赖“std_msgs roscpp”,空格隔开,按Enter确认。

vscode 项目文件夹结构 python_c++_04


包创建完成,如下图。

vscode 项目文件夹结构 python_#include_05

2.创建发布者。

点击ros_test目录下的src文件夹,“右键”–>“新建文件”,输入talker.cpp,双击打开,粘贴以下代码。

#include <iostream>
#include "ros/ros.h"
#include "std_msgs/String.h"
int main(int argc, char **argv)
{
    //ros节点初始化 "talker"节点名称,在ROS里同一时间不允许出现两个
    ros::init(argc,argv,"talker");
    //创建节点句柄
    ros::NodeHandle h;
    //创建一个publisher, topic:chatter,消息类型std_msgs::String
    ros::Publisher chatter_pub = h.advertise<std_msgs::String>("chatter",1000); // "chatter"话题名称,消息缓存
    //设置单循环的频率
    ros::Rate looprate(10);

    while (ros::ok())
    {
        std_msgs::String msg;
        std::stringstream ss;
        ss<<"hello world";
        msg.data = ss.str();
        //发布消息
        ROS_INFO("%s",msg.data.c_str());
        chatter_pub.publish(msg);
        //等待回调函数
        ros::spinOnce();
        //按照之前设定的进行循环
        looprate.sleep();
    }
    
}

3.创建订阅者。

点击ros_test目录下的src文件夹,“右键”–>“新建文件”,输入listener.cpp,双击打开,粘贴以下代码。

#include <iostream>
#include "ros/ros.h"
#include "std_msgs/String.h"
void chatterCallBack(const std_msgs::String::ConstPtr &msg)
{
    ROS_INFO("I get: [%s}",msg->data.c_str());
}
int main(int argc, char **argv)
{
    //ros节点初始化 "listener"节点名称,在ROS里同一时间不允许出现两个
    ros::init(argc,argv,"listener");
    //创建节点句柄
    ros::NodeHandle h;
    //创建一个subscriber, topic:chatter,消息类型std_msgs::String, 接收到消息,响应chatterCallBack
    ros::Subscriber listener_sub = h.subscribe<std_msgs::String>("chatter",1000,chatterCallBack);
    
    //循环等待回调函数
    ros::spin();
    return 0;
}

配置CMakeLists.txt

在ros_test目录下,双击"CMakeLists.txt",在文件末尾添加:

add_executable(talker src/talker.cpp) #可执行文件
target_link_libraries(talker ${catkin_LIBRARIES})#链接库
add_dependencies(talker ${PROJECT_NAME}_generate_messages_cpp) #设置依赖

add_executable(listener src/listener.cpp)
target_link_libraries(listener ${catkin_LIBRARIES})
add_dependencies(listener ${PROJECT_NAME}_generate_messages_cpp)

编译整个ROS工程

点击"终端"–>“新建终端”,在终端中输入"catkin_make",如果cpp文件中不存在错误,编译结果如下,如果发生错误,请仔细检测cpp文件和CMakeLists.txt文件。

vscode 项目文件夹结构 python_#include_06

运行talker和listener

1, 使用快捷键Ctrl + Shift + T 弹出系统终端,输入roscore,启用整个ROS总节点。

2, 使用快捷键Ctrl + Shift + T 弹出系统终端,输入rosrun ros_test talker,启用talker节点。

3, 使用快捷键Ctrl + Shift + T 弹出系统终端,输入rosrun ros_test listener,启用listener节点。

vscode 项目文件夹结构 python_c++_07