ROS学习笔记——roscpp

这篇博客是ROS初学者的学习笔记,主要关注roscpp编程。内容包括topic、service和parameter演示,详细解释了如何创建package、msg、srv文件,以及对应的cpp源代码。博主参考了大学慕课的《机器人操作系统入门》教程,并提供了相关代码的GitHub链接。遇到的问题如版本不兼容已给出解决方案,同时也介绍了msg和srv文件的处理方法。
摘要由CSDN通过智能技术生成

PS:采用的视频教程是大学慕课的《机器人操作系统入门》 https://www.icourse163.org/learn/ISCAS-1002580008#/learn/announce, 由于使用的是Ubuntu 18.04,使用的ROS版本为 Melodic 和视频所用的ROS kinetic版本有所出入,产生以下问题:1.使用模块不在,解决方法 用 git clone 克隆;2.加载robot_sim_demo只有地板,没有模型和小车,解决办法 由于gazebo9版本不兼容这个demo的模型,所以要么换低版本gazebo,要么换模型。

ROS中相关函数的使用方法可以见网站:https://docs.ros.org/api/roscpp/html/
以下记录下roscpp中相关的程序,以便自查自用。所有代码均可以从github找到。
https://github.com/DroidAITech/ROS-Academy-for-Beginners

  • topic_demo
    功能描述:两个node,一个发布模拟的GPS消息(格式为自定义,包括坐标和工作状态),另一个接收并处理该信息(处理方式为计算到原点距离)。
    个人笔记:这个topic可以用来处理传感器传入的数据
    步骤:
  1. package
  2. msg
  3. talker.cpp
  4. listener.cpp
  5. CMakeList.txt & package.xml
package
cd ~/catkin_ws/src
catkin_crate_pkg topic_demo roscpp rospy std_msgs

个人笔记:其中catkin_ws是工作空间;第二行指令是创建一个包,后面是依赖包

msg
cd topic_demo
mkdir msg
cd msg
vim gps.msg

gps.msg的内容如下:

float32 x
float32 y
string state

个人笔记:msg文件不能直接使用,要经过catkin_make编译之后,会在 ~/catkin_ws/devel/include/topic_demo 中生成一个 gps.h文件,然后在c++中include这个头文件就可以使用了,使用方法为:topic_demo::gps msg;

talker.cpp
//ROS头文件
#include <ros/ros.h>
//自定义msg产生的头文件
#include <topic_demo/gps.h>

int main(int argc, char **argv)
{
  //用于解析ROS参数,第三个参数为本节点名
  ros::init(argc, argv, "talker");

  //实例化句柄,初始化node
  ros::NodeHandle nh;
  
  //创建publisher 
  ros::Publisher pub = nh.advertise<topic_demo::gps>("gps_info", 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值