c++ 创建文件夹_vscode开发ROS1(3)-创建第一个ROS项目

e5277825262d45cde6dae167d527d26a.png

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

创建根目录

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

a8d1af899b49522bd19e0e4d2b123a67.png

配置ros空间

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

22464f0cbb728056f7409be07caa719f.png


注意: (正常来说,vscode 安装 ros插件就会自动生成)
如果此处不自动生成c_cpp_properties.json文件, 可手动生成, 按Ctrl + Shift + P,输入c/c++: edit configurations(JSON), 即可.


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

1584c079dca3fbab281ab538316599d9.png


3, 使用快捷键Ctrl + Shift + T , 弹出系统终端,配置当前ROS工程的环境变量,输入:

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确认。

823236d39a3463f885cd13935f5a3092.png


包创建完成,如下图。

d5db027eb1c9f1bdbc9669d9a8d25733.png

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文件。

edd26ff8a422d898bf2904d4ec9ed772.png

运行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节点。

17a8c3a4ae7575a4a1d4cede01818281.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值