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

ROS2进阶:turtlesim与rqt

基于windows的ROS2。

参考:Introducing turtlesim and rqt — ROS 2 Documentation: Galactic documentation

turtlesim是最经典的起始教程,我们从这里开始,运行下面的指令,

ros2 pkg executables turtlesim

会输出下面的信息,

turtlesim draw_square
turtlesim mimic
turtlesim turtle_teleop_key
turtlesim turtlesim_node

如果你打开安装目录的话,能在文件夹(C:\dev\ros2_galactic\Lib\turtlesim)下面找到这4个可执行文件。这样我们也不难理解,ros2 run这个指令后面,其实就是一个可执行的项目,后面跟着的就是这个项目下面的可执行文件,整体结构是这个样子的,

ros2 run <package_name> <executable_name>

(1)turtlesim

接下来我们启动一下这个小乌龟,记住每个窗口都要运行call C:\dev\ros2_galactic\local_setup.bat,以启动ROS2环境,我这里假设所有窗口都已经运行了这个启动指令。

打开一个控制台窗口,输入

ros2 run turtlesim turtlesim_node

这里小乌龟窗口会弹出来,

打开另一个窗口,输入,

ros2 run turtlesim turtle_teleop_key

这时,在该窗口保持激活的情况下按方向键,你会看到动起的小乌龟。

然后,你可以用一些ROS2的指令来查看状态或进行某项操作,这些指令包括

ros2 node list
ros2 topic list
ros2 service list
ros2 action list

例如,我再打开一个cmd窗口,输入ros2 topic list,就能看到下面的信息, 

> ros2 topic list
/parameter_events
/rosout
/turtle1/cmd_vel
/turtle1/color_sensor
/turtle1/pose

整体如下图所示,

 (2)rqt

通常情况下,我们按官网的安装方法安装的ROS2是已经有rqt的,我们可以直接运行。在保持上面前两个窗口不关闭的情况下,我们再打开一个窗口,输入指令“rqt”(带强制查找service的指令是:rqt --force-discover),即可启动图形界面,然后再选择菜单Plugins > Services > Service Caller

就能出现下面的界面(记住,前面启动的turtlesim窗口不能关闭)

这里spawn是培育的意思,所以如果我们再call一下这个service,就会创建另一个小乌龟。

注意这里名字不能写成turtle1,因为这个名字已经被前面创建的那只小乌龟占有了。 

此时,turtlesim_node的窗口输出如下,

 生成的小乌龟在左下角

 再选择菜单Plugins > Topics > Topic Monitor,就可以同时看到turtle1和turtle2这两个node了。

 和官网不同,我这里很多node没有在rqt-> service node中出现,目前还不知道是什么BUG。

相关文章:

  • TCP/UDP常见的端口号
  • ROS2进阶:基于cmake创建自己的开发包
  • ROS2进阶:如何查找特定的包(package)并列出包中所有节点(node)
  • ROS2进阶:VS2019调试ROS2-examples程序
  • Python Error: 系统找不到指定的文件。: ‘c:\\python38\\Scripts\\pep8.exe‘ -> ‘c:\\python38\\Scripts\\pep8.exe.del
  • Ubuntu中如何处理难缠的软件包升级
  • 3D进阶之OSG:从VS2019编译osgEarth开始
  • vcpkg如何全面卸载和重新安装包
  • 3D进阶之OSG: VS2019编译OpenSceneGraph
  • 3D进阶之OSG: 编译osgQt(附:Qt的下载与安装)
  • 3D进阶之OSG:如何让vs2019识别不带“.h”的osg头文件
  • Qt-creator warning: Missing Qt Debug Information
  • 3D进阶之OSG:快捷键
  • 3D进阶之OSG:最基本的显示osgviewer
  • 3D进阶之OSG:编译osgQt的旧版本
  • 30天自制操作系统-2
  • Android单元测试 - 几个重要问题
  • egg(89)--egg之redis的发布和订阅
  • iOS小技巧之UIImagePickerController实现头像选择
  • JavaScript设计模式之工厂模式
  • JSDuck 与 AngularJS 融合技巧
  • JWT究竟是什么呢?
  • k个最大的数及变种小结
  • Laravel 实践之路: 数据库迁移与数据填充
  • Linux后台研发超实用命令总结
  • Node项目之评分系统(二)- 数据库设计
  • Phpstorm怎样批量删除空行?
  • SpringBoot 实战 (三) | 配置文件详解
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • Vue实战(四)登录/注册页的实现
  • Web标准制定过程
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 对象引论
  • 搞机器学习要哪些技能
  • 温故知新之javascript面向对象
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #git 撤消对文件的更改
  • #QT(TCP网络编程-服务端)
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (3)(3.5) 遥测无线电区域条例
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (floyd+补集) poj 3275
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (第27天)Oracle 数据泵转换分区表
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (七)Knockout 创建自定义绑定
  • (算法)前K大的和
  • (已解决)什么是vue导航守卫
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)fock函数详解
  • (转)Linux NTP配置详解 (Network Time Protocol)