安装ROS+ROS命令行工具的使用

news2025/7/15 1:25:13

1.添加ROS软件源

$ sudosh -c 'echo "deb http;/packages.ros.org/ros/ubuntu $(sb_release -sc) main">/etc/apt/sources.list.d/ros-latest.list'

2.添加密钥

$ sudo apt-key adv --keyserver 'hkp:/ keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

3.安装ROS

$ sudo apt update
$sudo apt install ros-melodic-desktop-full

4.初始化rosdep

$ sudo rosdep init$ rosdep update

5.设置环境变量

$ echo "source /opt/ros/melodic/setup.bash" >>~/.bashrc
$ source ~/.bashrc

6.安装rosinstall

$ sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

7.启动ROS Master

$ roscore

      这个是用来启动ROS Master ,ROS Master是ros里面所有节点的管理器,也是运行之后系统当中必须要首先运行的一个指令。

 启动小海龟仿真器

$ rosrun turtlesim turtlesim_node

启动海龟控制节点

$ rosrun turtlesim turtle_teleop_key

ros中有许多rqt开头的工具,都是一些基于qt的可视化工具,可以很直观的看到很多信息。

(1)qt_graph:是一个用来显示系统计算图的工具。有两个椭圆形的节点,一个turtlesim是仿真器节点,teleop_turtle是键盘控制节点,两个节点之间必然会存在一定的数据通讯,turtle1/cmd_vel这个话题里面的具体数据内容就是我们这个速度指令的内容,海龟是由两个节点和节点之间的话题组成。

 (2)rosnode是用来显示系统当中所有节点相关信息的一个指令。

$ rosnode list:用来把所有系统当中的节点都列出来。

rosout在服务器里面没有体现,是在ros环境里面默认只要启动ros go就会启动这个话题,这个话题主要采集我们ros里面得所有节点的日志信息,然后用来提交给上面的界面做显示的,这是ros默认的话题。

$ rosnode info:查看某一结点具体信息是什么

(3) rostopic:这是跟话题相关的一个命令行工具

$ rostopic pub:发布话题消息,摁Tab键自动补全

 前面一段是话题名,后面那段twist是发布指令的一个数据的内容/消息结构,双引号里的内容是消息数据里面的结构数据(线速度,角速度)。-r:频率,就是以多少的频率去发布这个话题的消息数据内容。z轴:是垂直仿真器,向屏幕向外的,海龟的旋转都是围绕z轴的。

(4) rosmsg show:显示哪一个消息

(5) rosservice:服务相关的命令行

发布服务请求:

$ rosservice call /spawn "x: 5.0

y: 5.0

theta: 0.0

name: 'turtle2"  

name: 'turtle2"  //反馈信息,turtle2已经生成成功

(6)rosbag record -a-O cmd_record:话题记录,记录现在所有的数据,-a就是把所有的数据都保存下来,-O把所有数据保存在压缩包,cmd_record是压缩包的名字

$ rosbag play cmd_record.bag:话题复现

ROS工作空间(存放工程开发相关文件的文件夹):

src:代码空间(Source Space)

build: 编译空间 (Build Space)

devel: 开发空间 (Development Space)

install: 安装空间 (Install Space)

1.创建工作空间

$ mkdir-p ~/catkin_ws/src

$ cd ~/catkin_ws/src

$ catkin_init_workspace  //把当前文件夹初始化,变成ros_workpase

2.编译工作空间

$ cd ~/catkin_ws/

$ catkin_make  //编译src下面所有功能包的源码

$ catkin_make install   //会产生install这个安装空间

 一个工作空间里面会有四个文件夹。src放后面功能包的源码,install是安装空间,里面会放置我们最终编译生成的可执行文件,devel是放置在开发过程中的一些可执行文件,和install类似,install是开发后分享或者发布给客户使用的一个结构文件,build是在编译过程中的一些中间文件,基本上用不到

3.设置环境变量

$ source devel/setup.bash

4.检查环境变量

$ echo $ ROS_PACKAGE_PATH    //通过ROS_PACKAGE_PATH这个环境变量来查找所有ros功能包的路径

5.创建功能包:$ catkin_create_pkg <package_name>[depend1][depend2][depend3]

功能包是放置ros源码的一个最小单元,所有源码必须全部放在功能包里面,不能直接放在src下面编译。

创建功能包

$ cd ~/catkin_ws/src
$ catkin_create_pkg test_pkg std_msgs rospy roscpp

编译功能包

$ cd ~/catkin_ws

$ catkin_make

$ source ~/catkin_ws/devel/setup.bash    //只有设置了功能空间的这个setup.bash之后,ROS_PACKAGE_PATH这个里面才会包含工作空间的路径,才能找到写的功能包

只要把功能包放在src里面,就可以通过环境变量找到这个功能包。$ source ~/catkin_ws/devel/setup.bash 这个环境变量的设置是非常重要的。

注意:同一个工作空间下,不允许存在同名功能包。不同工作空间下,允许存在同名功能包。

任何一个功能包都必须存在下面两种文件。package.xml文件是通过xml这种语言去描述的一些跟功能包相关的信息(功能包的名字、版本号、描述等)。还有我们编译运行这个功能包时所依赖的一些其他第三方的功能包,这些信息如果在$ catkin_create_pkg这时没有全部添加好的话,在这里还可以进行扩展,手动添加。CMakeLists.txt这个文件是用来描述功能包里面的编译规则。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我希望在 26 岁时知道的 36 岁时知道的职业作弊代码

当您开始抓住您不具备资格的机会时&#xff0c;您的职业生涯就会发展。我像关在笼子里的狮子一样被困在金融事业中。然后通过一系列离奇的事件&#xff0c;我发明了自己的工作。这使我获得了难得的机会&#xff0c;并建立了最终取代我工作的在线业务。这些作弊码让一些人称之为…

I/O 多路复用:select/poll/epoll

url&#xff1a;9.2 I/O 多路复用&#xff1a;select/poll/epoll | 小林coding &#xff08;仅供自己学习使用&#xff09; 为什么要使用I/O多路复用技术 TCP Socket 调用流程是最简单、最基本的&#xff0c;它基本只能一对一通信&#xff0c;因为使用的是同步阻塞的方…

Linux作为主力机--Manjaro 22.0.4

1、对操作系统的看法 个人是做软件开发的&#xff0c;已经使用Manjaro作为主力机两年多了&#xff0c;真的是特别喜欢这个操作系统。经过两年的打磨&#xff0c;个人16年的惠普老电脑加上这个Manjaro 22.0.4操作系统完全可以再战五年&#xff0c;完全满足日常的办公使用&#…

ctf pwn基础-3

学习pwn的第三天&#xff0c;今天是ret2text。 目录 基础 实例讲解 实例讲解2 基础 ret2text就是ROP中最简单的&#xff0c;然后的意思就是我们利用栈溢出&#xff0c;来修改eip的值&#xff0c;让他输出的时候&#xff0c;输出我们想要执行的本身已有的代码&#xff0c;通常…

利用Splunk构建SOC-SOC建设漫谈及splunk的角色

零、免喷符 SOC部门小菜鸟一枚&#xff0c;此乃自闭学安全的笔记记录&#xff0c;行文潦草&#xff0c;随性笔记。 通过上一篇的勒索病毒案例&#xff0c;已经了解到Splunk的强大之处。Splunk那么死贵&#xff0c;他的角色是怎样的&#xff0c;又是怎么和安全及SOC联系起来的…

基于BP神经网络的性别识别,BP神经网络详细原理,自编码神经网络代码,神经网络案例之18

目标 背影 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络的激活函数&#xff0c; BP神经网络的传递函数 数据 神经网络参数 基于BP神经网络 性别识别的MATLAB代码 效果图 结果分析 展望 背影 男人体内蛋白质比例大&#xff0c;女生…

Windows下 IDEA编译调试 hive2.3.9

Windows下 IDEA编译调试 hive2.3.9 环境 IDEA 2021.2 JDK1.8&#xff08;试过用高版本的JDK17编译&#xff0c;不兼容编译不过&#xff09; 一个Hadoop集群&#xff0c;涉及配置文件core-site.xml&#xff0c;hdfs-site.xml&#xff0c;yarn-site.xml&#xff0c;mapred-sit…

并发与多线程

目录 第一节 并发基本概念及实现&#xff0c;进程&#xff0c;线程基本概念 &#xff08;1&#xff09;并发&#xff0c;进程&#xff0c;线程的基本概念和综述 &#xff08;1.1&#xff09;并发 &#xff08;1.2&#xff09;可执行程序 &#xff08;1.3&#xff09;进程 …

物理服务器与云服务器备份相同吗?

自从云计算兴起以来&#xff0c;服务器备份已经从两阶段的模拟操作演变为由云服务器备份软件执行的复杂的多个过程。但是支持物理服务器和虚拟服务器之间的备份相同吗?主要区别是什么?我们接下来将详细讨论这个问题。 物理服务器与云服务器备份的区别 如果您不熟悉虚拟服务器…

qt QCustomPlot学习

QCustomPlot 是一个基于Qt的画图和数据可视化C控件。QCustomPlot 致力于提供美观的界面&#xff0c;高质量的2D画图、图画和图表&#xff0c;同时为实时数据可视化应用提供良好的解决方案。 该绘图库专注于制作美观、出版物质量高的2D绘图、图形和图表&#xff0c;并为实时可视…

数据库专题

请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称&#xff0c;以及逐级之间的区别&#xff1f; 默认隔离级别 mysql repeatable-read oracle read-committed 脏读&#xff1a;不可重复读&#xff1a;幻读&#xff1a; CHAR 和 VARCHAR 的区别&#xff1f;…

公众号运营之竞品分析,教你拆解公众号

知己知彼&#xff0c;百战不殆&#xff0c;公众号运营亦是如此。 当运营者只关注自己账号的时候&#xff0c;很容易陷入某个误区中出不来。这个时候就要拓宽我们的视野&#xff0c;多去看看“外面的世界”&#xff0c;不要只局限于自己的一片小天地中。 看看同领域优秀公众号…

stm32f407探索者开发板(二十二)——通用定时器基本原理讲解

文章目录一、三种定时器的区别二、通用定时器特点2.1 功能特点描述2.2 计数器模式三、通用定时器工作过程四、附一、三种定时器的区别 STM32F40x系列总共最多有14个定时器 三种&#xff08;4&#xff09;STM32定时器区别 二、通用定时器特点 2.1 功能特点描述 STM3 F4的通…

PHY设备驱动

1. 概述 MAC控制器的驱动使用的是platform总线的连接方式&#xff0c;PHY设备驱动是基于device、driver、bus的连接方式。 其驱动涉及如下几个重要部分&#xff1a; 总线 - sturct mii_bus (mii stand for media independent interface) 设备 - struct phy_device 驱动 - struc…

零日漏洞发展格局及防御策略

在过去的一年半中&#xff0c; 在野利用的零日漏洞数量持续飙升 &#xff0c;这些软件制造商尚不知晓的漏洞正在被国家行为体黑客组织和勒索软件团伙滥用。 今年上半年&#xff0c;Google Project Zero统计了近20个零日漏洞&#xff0c;其中 大部分针对微软、苹果和谷歌构建的…

【《C Primer Plus》读书笔记】第13章:文件输入/输出

【《C Primer Plus》读书笔记】第13章&#xff1a;文件输入/输出13.1 与文件进行通信13.1.1 文件是什么13.1.2 文本模式和二进制模式13.1.3 I/O的级别13.1.4 标准文件13.2 标准I/O13.3 一个简单的文件压缩程序13.4 文件I/O&#xff1a;fprintf()、fscanf()、fgets()和fputs()13…

【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

一 LVGL简介最近emwin用的比较烦躁&#xff0c;同时被LVGL酷炫的界面吸引到了&#xff0c;所以准备换用LVGL试试水。LVGL(轻量级和通用图形库)是一个免费和开源的图形库&#xff0c;它提供了创建嵌入式GUI所需的一切&#xff0c;具有易于使用的图形元素&#xff0c;美丽的视觉效…

极光笔记 | 埋点体系建设与实施方法论

PART 01 前 言随着网络技术的发展&#xff0c;从粗犷型到精细化运营型&#xff0c;再到现在的数字化运营&#xff0c;数据变得越来越细分和重要&#xff0c;不仅可以进行策略调整&#xff0c;还可以实现自动化的精细化运营。而数据价值的起点就是埋点&#xff0c;只有合理地埋点…

[计算机网络(第八版)]第一章 概述(学习笔记)

1.1 计算机网络在信息时代中的作用 21世纪是以网络为核心的信息时代&#xff0c;21世纪的重要重要特征&#xff1a;数字化、网络化与信息化。 三大类网络 电信网络&#xff1a;向用户提供电话、电报、传真等服务&#xff1b;有线电视网络&#xff1a;向用户传送各种电视节目&am…

zabbix4.0-使用zabbix监控别的主机-使用模板来创建图形

目录 1、 配置zabbix的yum源 2、下载zabbix-agent 3、配置zabbix-agent的配置文件 4、关闭防火墙&#xff0c;selinux 5、重启zabbix-agent 6、连通性测试&#xff0c;在zabbix-server服务器上面使用zabbix_get获取zabbix-agent服务器上的数据 7、在zabbix web端配置zab…