创建第一个ROS项目
- 创建根目录
- 配置ros空间
- 创建一个ROS包
- 1.创建包。
- 2.创建发布者。
- 3.创建订阅者。
- 配置CMakeLists.txt
- 编译整个ROS工程
- 运行talker和listener
- 获取源码
此方法暂时只支持Ubuntu16.04,其它版本可能不支持,请注意分别!!!
创建根目录
点击"文件"–>“打开文件夹”–>”创建文件夹",磁盘上选择一个路径A(此处A代表你的保存文件夹的路径),输入文件夹名称,例如:test,点击确定。此时在左侧资源管理器中,会自动生成一个".vscode"文件夹,会自动生成"c_cpp_properties.json" 和”setting.json“两个文件。
配置ros空间
1, 点击创建"src"文件夹
注意: (正常来说,vscode 安装 ros插件就会自动生成)
如果此处不自动生成c_cpp_properties.json文件, 可手动生成, 按Ctrl + Shift + P,输入c/c++: edit configurations(JSON)
, 即可.
2, 点击"终端"–>“新建终端”,在终端中输入"catkin_make",系统会自动在test文件夹下创建 “build”, "devel"文件夹和其他配置文件。
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确认。
包创建完成,如下图。
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文件。
运行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节点。