ros
文章平均质量分 62
David小伟同学
这个作者很懒,什么都没留下…
展开
-
VSCode 在ROS开发时无法智能提示解决办法
在配置VSCode进行ROS开发时,可能会出现智能提示无法正常工作的情况。原创 2024-10-08 12:48:41 · 483 阅读 · 0 评论 -
ubuntu系统两个板子(主从机)时间同步方法
有两个板子通过网口连接,一个板子可以连接外网,另一个板子不能连接外网,需要将两台机器的时间同步,以免后续ROS收发消息时时间戳不准确.原创 2024-07-25 09:00:20 · 1283 阅读 · 0 评论 -
ROS2开发|将Pointcloud2数据变换坐标系
我的点云数据发布在"map"坐标系下,我想把这个pointcloud2数据变化至"base_link"坐标系。原创 2023-04-27 17:36:48 · 1120 阅读 · 1 评论 -
一天一个linux小技巧|.(点)是什么意思
因此当多个shell进程(父子进程或无关进程均可)共享一组变量值时,就可以将这些变量赋值语句定义到一个shell文件里,并在需要这些变量值的程序中使用点语句来引用这个shell文件,从而实现变量值共享(对这些变量值的修改仅涉及到这个shell文件)。它是 source命令的代名词,所以你可以用它在当前 shell 中执行一个文件,而不是以某种其它的方式去运行一个脚本文件(这通常指的是 Bash 会产生一个新的 shell 去运行它)“.”点命令是shell的一个内部命令,它从指定的shell 文件中。原创 2023-02-17 11:15:42 · 1049 阅读 · 1 评论 -
一天一个linux小技巧|grep命令
grep 命令grep是强大的文本搜索命令,grep(Global Regular Expression Print) 全局正则表达式搜索。grep 的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。-A n --after-context显示匹配字符后n行-B n --before-context显示匹配字符前n行-C n --context 显示匹配字符前后n行·原创 2023-02-17 11:01:21 · 665 阅读 · 0 评论 -
Vector数组类型在ROS开发中的用法小结
ROS系统的一个显著优势就是分布式和灵活性,用户可以很方便自定义消息类型。在自动驾驶中,无论是传感器消息sensoe_msgs,还是导航消息nav_msgs等等几乎都离不开一个基本的结构:vector数组。尤其是在SLAM中,在处理雷达消息更是必不可少的操作。所以把vector理解透彻对于ROS开发还是非常重要的。接下来的内容以C++语言为主,python语言是类似的,但是语法可能稍有不同。(PS:对于搞自动驾驶的同学,还是强烈推荐用C++开发,原因无他,C++快!!!原创 2022-10-25 11:21:34 · 1870 阅读 · 0 评论 -
ROS学习|Nodetlet学习与使用
Nodelet旨在提供一种方法,在一台机器上、在一个进程中运行多个算法,在进程内传递消息时不会产生拷贝成本。普通节点使用TCP。这对很多事情来说都很好用。但是,如果你有多个进程需要使用包含大量数据的消息(如图像或点云),打包消息,发送消息,然后解包,可能需要一点时间。如果两个进程在同一台计算机上,那么只需发送一个指向该数据的指针,而不是通过TCP发送数据本身,这样会更快。但这只适用于同一台计算机上的进程(又称nodelet),因为一台计算机的指针对另一台计算机没有意义。原创 2022-09-15 15:53:34 · 2241 阅读 · 0 评论 -
Docker技术入门| L4访问仓库&数据管理
仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 docker.io/ubuntu 来说,docker.io 是注册服务器地址,ubuntu 是仓库名。大部分时候,并不需要严格区分这两者的概念。原创 2022-08-25 16:59:20 · 179 阅读 · 0 评论 -
Docker技术入门| L3操作容器
容器是 Docker 又一核心概念。简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。本文将具体介绍如何来管理一个容器,包括创建、启动和停止等。原创 2022-08-24 17:48:19 · 371 阅读 · 0 评论 -
Docker技术入门|L2 使用镜像
Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像。原创 2022-08-24 14:03:52 · 198 阅读 · 0 评论 -
ubuntu/linux系统学习|使用命令行打开任意文件
但当需要打开其他格式文件时,比如pdf、jpg、mp3格式文件,咱们通常做法是进入到文件所在的目录,双击打开,很影响效率。xdg-open会选择合适的程序打开指定文件,跟双击打开效果一样。OK,现在是不是方便多了,通过快捷键Ctrl+Alt+T可以打开shell,F11可以全屏显示(Alt+F9最小化窗口,Alt+F10最大化/恢复窗口),再辅予xdg-open命令,极大减少了鼠标操作,也大大提升了效率。在Ubuntu下,当需要打开其他格式文件时,咱们通常做法是进入到文件所在的目录,双击打开,很影响效率。.原创 2022-07-26 17:31:06 · 5555 阅读 · 0 评论 -
ROS踩坑|编译的二进制debian文件安装后无法使用
在ROS中将自己的功能包打包为二进制文件后,想安装在自己的主机上测试下打包的有没有问题。使用dpkg命令安装后发现可以使用,便将这个debian文件装到另一个主机上。没想到,最后竟然用不了,显示找不到可执行文件。明明装到自己的电脑上可以,到那时装到别的电脑上就不行。当时以为遇到啥玄学问题了,不过经过排查一番发现还是自己的操作有问题1经过排查主要有两个原因:第一个问题:为什么撞到自己的电脑上没问题而装到别人的电脑上没问题?因为我的电脑上本来就装的有这个package,当我用roslauch的时候,自原创 2022-06-17 15:41:59 · 400 阅读 · 0 评论 -
ROS踩坑|terminal终端输出消息太长无法全部显示
在ROS中,尤其是在编译的时候,常常会遇到打印的输出太长而无法全部看到。这在debug的时候非常蛋疼,解决方法也很简单,就是把输出的消息都保存在文本文件里,然后再浏览。我查到了两个方法 我的版本是Ubuntu18.04但应该所有的linux系统的命令都是一样的。在终端的命令行中输入以下命令:这样就会在当前目录下创建一个 output.txt 文件,在命令窗口执行的所有命令包括终端输出的所有信息都会写到这个文件中。在终端的命令行中输入 Ctrl + d 之后会停止向文本文件的写入工作。在终端中输入以下内容原创 2022-06-15 17:40:29 · 2038 阅读 · 1 评论 -
ROS学习|Behavoir Tree(BT树)--c++实现第二节
本片文章接着上一篇接着讲述BT树的C++实现以及有关的注意事项。目录使用Subtree组合BT树CrossDoor behaviorLoggers在树和子树中重映射接口例子如何使用多个 XML 文件来存储子树使用"include"加载文件手动加载多文件在初始化和/或构造期间传递额外的参数方法一 注册自定义builder方法2:使用init方法使用协程(Coroutines)的异步操作C++例子使用Subtree组合BT树我们可以将更小且可重用的BT树组合成大规模BT树。换句话说,我们想要创建分层行为树原创 2022-05-19 11:18:29 · 1046 阅读 · 0 评论 -
ROS学习|Behavoir Tree(BT树)--c++实现
目录创建行为树简单Beahvoir实例使用 XML 动态创建树基本接口(port)输入输出接口输入接口输出接口一个复杂的示例通用类型接口ports with generic types解析一个字符串例子Reactive Sequence 和异步节点Sequence vs ReactiveSequence创建行为树行为树,类似于状态机,过是一种在正确的时间在正确的条件下调用回调的机制。此外,我们将交替使用“callback”和“tick”这两个词。简单Beahvoir实例在这里插入图片描述初始(原创 2022-05-18 15:52:22 · 1990 阅读 · 0 评论 -
ros学习|功能包相关|查找、安装、卸载删除某个功能包
在运行别人的demo时,是不是会出现找不到功能包的情况。所以查找、安装和卸载某个功能包是蛮重要的。查找查询当前安装完成的所有包文件 rospack list查询ros的所有功能包 apt-cache search ros-kinetic或者说在不知道要安装功能包的确切名字的情况下找到目标包 apt-cache search ros-kinetic | grep rqt-通过管道线 与grep命令, 输出与关键字rqt-相关的行再或者下述安装命令与Tab键结合sudo apt-ge原创 2022-04-19 09:33:50 · 9133 阅读 · 2 评论 -
ROS踩坑|warning:clock skew detected. Your build may be incomplete
报错展示问题分析ROS编译时遇到这个问题95%是因为系统时钟错误了,比如说你之前的编译的时间时2022年3月12日,而现在系统的时间是2021年3月12日,所以系统编译发现了早于现在编译时间的文件,自然就无法编译。解决办法有三个解决办法:方法一:修改系统的时间,点击界面右上角时间,设置一个往后的时间即可。但这种方法有一个弊端就是,开机重启后仍要设置时间,且设置的时间不能早于之前设置的时间,否则还是编译不通过。方法二: 删除build文件夹和devel文件夹,重新编译。这种方法的弊端是如果项目太大原创 2022-03-18 11:37:05 · 3892 阅读 · 0 评论 -
ROS|发布和订阅整型/浮点型/布尔型/字符串消息
需要用ROS发布一个布尔类型的消息,上手敲代码的时候竟然不知道具体改用什么数据类型的消息,查找了资料才弄清楚,再这里记录一下话题消息类型ROS中的std_msgs包含几乎全部基础的数据类型,包括布尔型,整型,字符串等等。可用rosmsg show std_msgsstd_msgs/Boolstd_msgs/Bytestd_msgs/ByteMultiArraystd_msgs/Charstd_msgs/ColorRGBAstd_msgs/Durationstd_msgs/Emptystd原创 2022-02-18 14:34:56 · 8026 阅读 · 2 评论 -
ROS踩坑|报错“没有规则可制作目标”
问题描述使用catkin_make编译一个功能包,第一次编译由于编译的cpp文件命名与camkefile中的不一致,所以编译失败了。修改相应的名字之后再次编译还是失败。显示如下报错:make[2]:*** 没有规则可制作目标"auto_alignment/CMakeFiles/alignment_+server.dir/build"。停止recipe for target 'auto_alignment/CMakeFiles/alignment_+server.dir/all' failedreci原创 2022-01-22 10:15:57 · 12949 阅读 · 3 评论 -
ROS踩坑|批量化为.py文件添加可执行权限
问题描述在ROS中,想要用rosrun命令运行python文件,首先要对该文件提价可执行权限。如果要是用鼠标一个一个点左键设置属性,效率很低,并且不够优雅~~~可以用chmod命令解决解决方案chmod命令用于修改文件的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。命令格式:chmod [权限] 文件名文件名可以使用通配符,文件名为星号*表示匹配所有文件。用法示例:为/home/zhidao/py目录下的所有文件添加执行权限。$ chmo原创 2022-01-07 20:21:36 · 3628 阅读 · 0 评论 -
ROS踩坑|no matching function for call to ‘ros::NodeHandle::getParam(int, double&)’ nh_.getPar
问题描述使用ROS getParam函数时,在launch文件中定义了“distance”变量,并在main函数中国调用了getParam函数来获取变量值。结果出现如下报错:no matching function for call to ‘ros::NodeHandle::getParam(int, double&)’ nh_.getParam('distance',back_up_dist);问题分析报错给了一个提示,说无法将int型转化为string型,顺着这个提示原创 2022-01-04 14:18:04 · 2442 阅读 · 0 评论 -
ROS踩坑|用一个节点订阅和发布多个话题
test原创 2021-11-15 18:03:44 · 9448 阅读 · 1 评论 -
ubuntu18.04安装Ceres Solver
Ceres Solver是谷歌出品的关于线性优化的功能包,使用 LOAM SLAM算法中需要用到这个功能包。这里mark一下安装方法 以便以后使用。1、软件包下载:下载地址: https://github.com/ceres-solver/ceres-solver/releases如果Github下载速度慢可在百度云盘下载下载地址: 链接: https://pan.baidu.com/s/1EXjbTjZ8pkaEbeppHW3TuA 密码: 02dv2、安装编译Ceres库所需转载 2021-11-04 17:18:56 · 1285 阅读 · 0 评论 -
ROS学习|SMACH状态机三(使用实例)
系列文章目录 ROS基础 ROS单线程与多线程 navigation基本导航 navigation基本导航 SMACH状态机一(安装与初探) SMACH状态机三(使用实例)目录系列文章目录写在前面2 创建可执行程序3 添加服务调用状态4 可视化5 添加接口至turtlesim形状行为参考文献写在前面关于ROS实例官方出了两个文档,第一个实例代码和中文讲解都非常清楚,创客制造上也有详细的注释,所以我就不重复造轮子了,大家可以自己去看。第二个实例,官方代码不全,因此我就把官方文章搬运一下,顺原创 2021-10-26 18:04:39 · 1455 阅读 · 4 评论 -
ROS学习|SMACH状态机一(安装与初探)
系列文章目录 ROS基础 ROS单线程与多线程 navigation基本导航 navigation基本导航目录系列文章目录SMACH功能安装基础知识ROS任务调度状态机参考文献SMACH功能SMACH为任务执行量身定做,实现简单,易于维护,重构任务简单。它是一种基于python强大可伸缩的分级状态机库。Smach库不依赖ROS,executive_smach堆栈提供了ROS很好的集成。smach提供了actionlib整合和smach viewer两大组件。samch viewer可以实时原创 2021-10-25 11:49:00 · 1385 阅读 · 0 评论 -
ros学习|ros基础
系列文章目录 ROS基础 ROS单线程与多线程 navigation基本导航目录系列文章目录前言参考资料前言该文章为学习ROS时用思维导图记的笔记,需要全部高清图的点击下面的链接。参考资料参考文章...原创 2021-10-13 16:24:03 · 164 阅读 · 0 评论 -
ROS学习| navigation基本导航
目录navigation stack简介navigation stack简介ROS navigation功能包集包括move_base规划包 , 它从里程计和传感器数据流获取信息,并将速度命令发送给移动基站(比如你的机器人)。但是,想要在任意机器人上使用导航功能包集可能有点复杂。使用导航功能包集的先决条件是,机器人必须运行ROS,有一个tf变换树,使用正确的ROS Message types发布传感器数据。而且,我们需要在高层为一个具有一定形状和动力学特点的机器人配置导航功能包。...原创 2021-10-08 14:28:31 · 2575 阅读 · 0 评论 -
ROS单线程与多线程
学习Moveit时遇到了ros读线程的 概念,在网上找了一些资料,分享一下:基本概念:异步,并发与多线程:一文搞懂搞懂异步和多线程的区别回调:两个例子让你彻底理解java回调机制关于ROS多线程ROS单线程与多线程ROS SpinROS官方文档...原创 2021-09-22 11:02:52 · 490 阅读 · 0 评论