废话不多说,我们开始吧!!!
我使用的Ubuntu 18.04的系统,所以安装的是最新的ROS版本。
以下是ROS版本和Ubuntu系统版本的对照。

  1. 安装ROS

  2. 1 配置Ubuntu软件库
    先配置Ubuntu存储库以允许 “restricted,” “universe,” and “multiverse.”
    1.2设置sources.list
    先将电脑设置为接受来自packages.ros.org的软件,然后执行命令:

    sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
    1.3设置密钥
    sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
    这里如果遇到连接到密钥服务器的问题,可以尝试在前面的命令中替换hkp://pgp.mit.edu:80 或 hkp://keyserver.ubuntu.com:80。
    ②执行安装命令
    先更新软件包:

    apt-get update```
    123456789
      桌面完整版安装:`sudo apt-get install ros-melodic-desktop-full`2. 编写程序2.1创建工作环境创建工作目录:mkdir -p catkin_ws/src2.2创建第一个软件包在工作目录下的src文件夹下创建一个名为beginner_tutorials的程序包:这个程序包依赖于std_msgs、rospy、roscpp.``` javascriptcatkin_create_pkg beginner_tutorials std_msgs rospy roscpp

  3. 3编写cpp文件
    在程序包的src目录创建一个talker.cpp文件以及listener.cpp文件。
    //talker.cpp

12345678910111213141516171819202122232425262728293031
#include "ros/ros.h"#include "std_msgs/String.h"#include <sstream>int main(int argc, char **argv){  //初始化ROS,名称重映射(唯一),必须为base name,不含/  ros::init(argc, argv, "talker");   // 为进程的节点创建一个句柄,第一个创建的NodeHandle初始化节点  ros::NodeHandle n;  // 告诉主机要在chatter topic上发布一个std_msgs消息  // 主机会订阅所有chatter topic节点,参数表示发布队列的大小(先进先出)  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);  ros::Rate loop_rate(10);  // 自循环频率  int count = 0;  while (ros::ok())  {    std_msgs::String msg;    std::stringstream ss;    ss << "hello world " << count;    msg.data = ss.str();    // 输出,用来替代prinf/cout    ROS_INFO("%s", msg.data.c_str());     chatter_pub.publish(msg);

    ros::spinOnce();    // 休眠,来使发布频率为10Hz    loop_rate.sleep();    ++count;  }  return 0;}

//listener.cpp

123456789101112131415161718
#include "ros/ros.h"#include "std_msgs/String.h"// 回调函数void chatterCallback(const std_msgs::String::ConstPtr& msg){  ROS_INFO("I heard: [%s]", msg->data.c_str());}

int main(int argc, char **argv){

  ros::init(argc, argv, "listener");  ros::NodeHandle n;  // 告诉master需要订阅chatter topic消息  ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);  ros::spin(); // 自循环  return 0;}

2.4修改Cmakelist配置
在该文件加入各项依赖关系:

1234567
add_executable(talker src/talker.cpp)target_link_libraries(talker ${catkin_LIBRARIES})add_dependencies(talker beginner_tutorials_generate_messages_cpp)

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

  1. 编译并运行程序
    依次执行下面的操作:
    Cd ~/catkin_ws
    Catkin_make (编译完成后,生成的可执行文件会放在
    /home/demons/catkin_ws/devel/lib/beginner_tutorials下)
    ③ 执行roscore 这个命令是你在运行所有ROS程序前首先要运行的命令

    ④ 打开一个新的Terminal cd ~/catkin_ws并执行:source ./devel/setup.bash (这个地方执行这句话是让ROS能够找到你想要执行的可执行文件,因为第二步执行完成后,生成的可执行文件并不在/home/demons/catkin_ws/src/beginner_tutorials/src/下,这个时候执行第五步就会报错: [rosrun]Couldn’t find executable named talker below /home//catkin_ws/src/beginner_tutorials.
    每次运行程序前先执行一次这句话)
    rosrun beginner_tutorials talk (命令格式是 rosrun [package_name] [node_name])

    ⑥ 再打开一个terminal cd ~/catkin_ws 再执行
    rosrun beginner_tutorials listener

ROS入门-ROS的安装及编写简单的节点talker和listener相关推荐

  1. Android学习路线_入门篇(一)编写简单的APP

    Android学习入门的目标就是能够编写出一个完整的APP,有可交互的界面,有基本的功能,有本地的数据库,有与后台的数据交换.在本文我们会了解到如何在AndroidStudio中新建.运行.打包一个A ...

  2. ROS入门跟着我就够了(二)上 ROS通信机制

    由于这一章东西比较多,我分了上下两篇,下部分可以在< ROS 入门跟着我就够了>专辑中查看 ROS 中的基本通信机制主要有如下三种实现策略: 话题通信(发布订阅模式)服务通信(请求响应模式 ...

  3. ROS入门笔记(十一):编写与测试简单的Service和Client (Python)

    ROS入门笔记(十一):编写与测试简单的Service和Client (Python) 文章目录 01 导读 02 功能包的创建 03 在功能包中创建自定义服务类型 3.1 定义srv文件 3.2 在 ...

  4. ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++)

    ROS入门笔记(十):编写与测试简单的消息发布器和订阅器(C++) 文章目录 01 导读 02 功能包的创建 03 功能包的源代码编写 3.1 编写发布器节点(talker.cpp) 3.2 编写订阅 ...

  5. ROS入门笔记(九):编写ROS的第一个程序hello world(重点)

    ROS入门笔记(九):编写ROS的第一个程序hello world(重点) 文章目录 1 Catkin工作空间 1.1 创建catkin工作空间 1.2 编译工作空间 1.3 设置环境变量 1.4 检 ...

  6. 基础篇——ROS入门:学习资料、基本介绍、安装配置、文件系统、包创建

    简介 本篇文章主要介绍ROS入门基础,通过此篇文章,可以学习到安装配置.文件系统使用.ROS包创建和构建相关内容. ROS资源网站 ROS官网:http://wiki.ros.org/,可以这么说,市 ...

  7. ROS入门与实践--1(ROS简介与ROS的安装)

    ROS入门与实践--1 1 ROS简介 1.1 什么是ROS? 1.2 ROS设计目标 1.3 ROS发行版本列表 2 ROS的安装 2.1 虚拟机及操作系统安装 2.1.1 虚拟机VMware下载 ...

  8. ROS 入门教程 —— 小海龟简单控制

    ROS 入门教程 -- 小海龟简单控制 这里我们直接介绍命令使用方法,原理请查看我的另外几篇博客: ROS 命令行工具的使用 ROS 创建工作空间与功能包 运行并控制小海龟 由于小海龟并不是 ROS ...

  9. ROS入门笔记(二):ROS安装与环境配置及卸载(重点)

    ROS入门笔记(二):ROS安装与环境配置及卸载(重点) 文章目录 1 ROS安装步骤 1.1 ROS版本 1.2 确定Ubuntu版本号 1.3 安装ROS 1.3.1 Ubuntu初始环境配置 1 ...

最新文章

  1. python 生成器_Python生成器的用法
  2. Linux下tar.xz压缩解压
  3. Python 的类其实是一个特殊的对象
  4. mysql 并发_mysql如何处理高并发
  5. 《Go语言圣经》学习笔记 第十章 包和工具
  6. android 调用默认铃声后怎么改起始的默认选择位置?
  7. Angular 小试牛刀[1]:Getting Started
  8. map怎么转化dto_使用MapStruct进行Dto到实体的转换时出错
  9. liblfds 测试
  10. 大学四年,我把私藏的自学「学习网站/实用工具」都贡献出来了
  11. 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容...
  12. linux远程客户端软件,rdesktop(Linux下面的远程桌面客户端)
  13. ASCII栅格的显示
  14. win10系统重装之u盘装系统,u盘安装win10系统
  15. [案例4-8]模拟物流快递系统程序设计
  16. Windows Server 2008 防火墙开放 Oracle 的1521端口
  17. CISSP 第五章 物理和环境安全
  18. Securify之旅1之TOD漏洞剖析
  19. layui card高度不匹配文字
  20. phpstudy启动MySQL服务遇到的问题及解决过程

热门文章

  1. lua 16进制转10 10转16进制
  2. python阶梯图_不会你还不懂怎么用Python制图吧?师兄教你如何学会绘制漂亮的阶梯图...
  3. Unity摄像机跟随转动分析
  4. 厉害了!你的技术真的到天花板了吗?年薪50W
  5. java字符转转长整型_P104 将数字字符串转换成长整型整数 ★★
  6. php单链表检测有没有环,写一段代码判断单向链表中有没有形成环,如果形成环,请找出环的入口处,即P点...
  7. Web应用防火墙 (WAF) 挡不住的攻击类型
  8. Markdown格式文档图片设置居中
  9. Python编程:使用os.urandom生成Flask的秘钥SECRET_KEY
  10. 高斯噪声/白噪声/高斯白噪声的区别