ROS学习记录3——创建一个节点

1.创建一个功能包

首先,创建一个文件夹作为我们的“工作空间”,然后在工作空间内新建一个src文件夹:
在这里插入图片描述
接着我们在我们的工作空间的目录下,运行以下代码:

catkin_make

然后在工作空间里会出现:builddevel.catkin_workspace这三个文件。/src里会出现CMakeLists.txt这个文件。
以下是一段题外话:
我不知道为什么很多博客都将/src作为工作空间,并且在运行catkin_make之前会在/src里运行catkin_init_workspace,实际上,运行catkin_make的时候,会默认多执行一句等同于catkin_init_workspace的代码,而且.catkin_workspace无论是那种方法,都是生成在/src里,所以我不知道到底/src是工作空间,还是其父文件夹是工作空间,反正我的理解是后者。
直接使用catkin_make
在这里插入图片描述initmake
在这里插入图片描述
我又去Wiki上看了看,根目录的确是工作空间,那个src是资源空间:
在这里插入图片描述
题外话结束
接下来就是在/src运行代码,创建一个功能包:
看看代码结构:catkin_create_pkg 包名 依赖包1 依赖包2 依赖包…
我们使用ROS就可以极大地利用其提供的依赖包。

catkin_create_pkg test std_msgs roscpp rospy

然后我们得到以下结果:
在这里插入图片描述它提示我们修改package.xml里的值,但是这个文件是维护者标签,相当于包的说明,开源类型等等等,我们调试的时候可以不用修改,最后再修改即可。至于如何修改标签,我们可以在这篇文章中查到详细的方法:ROS入门教程-1.1.3 创建ROS程序包—8.自定义 package.xml

2.编写一个节点

然后我们在/src/test/src里编写我们的代码,比如:hello.cpp:

#include"ros/ros.h"

int main(int argc,char **argv)
{
   ros::init(argc,argv,"hello");
   ros::NodeHandle n;
   ros::Rate loop_rate(10);
   while(ros::ok())
   {
      ROS_INFO("Hello World!");
      ros::spinOnce();
      loop_rate.sleep();
   }
   return 0;
}

为了我们能够让包找到hello这个节点,我们需要编辑其信息:

修改包内的CMakeLists.txt
在这里插入图片描述取消掉catkin_package()的部分注释:
在这里插入图片描述

并在后面添加以下代码:

add_executable(hello src/hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})

具体它们是看嘛的,可以看文件里的注释:
在这里插入图片描述
在这里插入图片描述
如果添加过于靠前,可能导致找不到包,最规范的还是改在注释那部分附近

保存后,我推荐将我们这个工作空间添加到我们系统环境里,不然每次我们编译或运行都要额外写一句代码,让它能找到我们的工作空间:
在主目录下编辑.bashrc文件:sudo gedit .bashrc,在文件末尾添加我们devel/setup.bash这个文件:
在这里插入图片描述
保存后 ,新打开一个终端 source一下:

我们去工作空间编译:catkin_make
这样就编译好了:
在这里插入图片描述试试效果:
emmm,我ROS环境出了点问题,等我重新弄弄再写,理论上到这一步就ok了
好了,成功!

  • 8
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

康娜喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值