当前位置: 首页 > news >正文

【ROS 最简单教程 003/300】ROS 快速体验:Hello World

在这里插入图片描述

开始自己的第一次尝试叭 ~ Hello World

  • 本篇是 C++ 版本,如需 python 版本 👉 python 版本指路
ROS 中程序的实现流程:
  1. 创建工作空间 ( 💙 如 tutu_ws) ,进入并编译

    mkdir -p tutu_ws/src
    cd tutu_ws
    catkin_make
    
  2. src 下创建功能包 ( 💙 如 helloworld) 并添加依赖 ( 💙 如 roscpp rospy std_msgs)

    • roscpp 是使用 C++ 实现的库,而 rospy 则是使用 python 实现的库,std_msgs 是标准消息库,创建功能包时,一般都会依赖这三个库实现
    catkin_create_pkg helloworld roscpp rospy std_msgs  
    
  3. 在创建的功能包的 src 下创建并编辑源文件 ( 💙 如 hello_world.cpp)

    cd helloworld/src
    > hello_world.cpp  		## 也可以用 VSC 新建文件 等方式来创建
    gedit hello_world.cpp  	## 也可以直接在 VSC 中编辑
    
    • hello_world.cpp 代码参考
      #include "ros/ros.h"				// 包含 ROS 头文件int main(int argc, char *argv[])  	// 编写 main 函数
      {ros::init(argc,argv,"hello");  	// 初始化 ROS 节点 (自定义名称 hello) ROS_INFO("hello world!");		// 输出 hello worldreturn 0;
      }
      
  4. 编辑创建的功能包下的配置文件 💙 Cmakelist.txt

    add_executable(<可执行文件名称> <源代码文件1> <源代码文件2> …) 👉 官方文档指路

    • 源代码文件 ( 💙 如 hello_world.cpp) 编译成一个名为 可执行文件名称 (💙 如 HELLO_WORLD_TEST) 的可执行文件

    target_link_libraries(<给定目标> <要使用的库或标志>) 👉 官方文档指路

    • 指定在链接给定目标 (💙 如 HELLO_WORLD_TEST) 时要使用的库或标志
    ## 搜索找到如下两处并对应修改add_executable(HELLO_WORLD_TESTsrc/hello_world.cpp
    )
    target_link_libraries(HELLO_WORLD_TEST${catkin_LIBRARIES}
    )
    
  5. 回到工作空间目录 ( 💙 如 tutu_ws),编译并执行

    cd tutu_ws
    catkin_makeroscore  ## 先在另一个终端启动 ros 核心source ./devel/setup.bash  			## 用来修改环境变量
    rosrun helloworld HELLO_WORLD_TEST	## rosrun 功能包名 可执行文件名称## 此时可看到输出结果:hello world!
    

希望对你有帮助呀!!💜💜 如操作遇到任何问题,欢迎大家留言互助 ~ 一起加油叭 💦
欢迎关注、订阅专栏 【ROS 学习笔记】谢谢你的支持!


另外,使用ROS需要 C++ 或者Python的编程经验,我的博客主页也有相关的教程发布,需要的友友自取!
参考资料: ROS理论与实践在线文档, B站视频教程

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C# Where关键字
  • 数学建模--蒙特卡罗随机模拟
  • 嵌入式Linux系统中pinictrl框架基本实现
  • 数学建模--禁忌搜索
  • Kafka操作
  • 现代前端架构介绍(第三部分):深入了解状态管理层及其对前端App的影响
  • tcp westwood 比 reno,cubic 好在哪
  • MinIO:高性能轻量云存储轻松搭建与springboot应用整合实践
  • JavaWeb学习——mybatis
  • 过滤器与拦截器的区别与应用
  • 2.外部中断(EXTI)
  • 猫头虎分享:从零开始掌握ChatGPT的实用技巧与多样应用
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • Python网络爬虫面试题3
  • uniapp0基础编写安卓原生插件和调用第三方jar包(Ch34的jar包)和如何解决android 如何Application初始化
  • 11111111
  • Hibernate【inverse和cascade属性】知识要点
  • Hibernate最全面试题
  • HTTP中GET与POST的区别 99%的错误认识
  • IDEA常用插件整理
  • IP路由与转发
  • SwizzleMethod 黑魔法
  • TCP拥塞控制
  • 程序员最讨厌的9句话,你可有补充?
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 实战|智能家居行业移动应用性能分析
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 怎么将电脑中的声音录制成WAV格式
  • 正则表达式小结
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​io --- 处理流的核心工具​
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #QT(一种朴素的计算器实现方法)
  • #传输# #传输数据判断#
  • %3cscript放入php,跟bWAPP学WEB安全(PHP代码)--XSS跨站脚本攻击
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (面试必看!)锁策略
  • (三)SvelteKit教程:layout 文件
  • (一)项目实践-利用Appdesigner制作目标跟踪仿真软件
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • **PHP二维数组遍历时同时赋值
  • *1 计算机基础和操作系统基础及几大协议
  • .Net core 6.0 升8.0
  • .NET Framework .NET Core与 .NET 的区别
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .NET Reactor简单使用教程