ROS常用工具
📖 ROS开发时常常使用的工具,分别是:
Gazebo
RViz
rqt
rosbag
rosbridge
moveit!
这六个工具是我们开发常常用到的工具,gazebo是一种最常用的ROS仿真工具,也是目前仿真ROS效果最好的工具;RViz是可视化工具,是将接收到的信息呈现出来;rqt则是非常好用的数据流可视化工具,有了它我们可以直观的看到消息的通信架构和流通路径;rosbag则是对软件包进行操作的一个命令,此外还提供代码API,对包进行操作编写。rosbridge是一个沟通ROS和外界的功能包,moveit!是目前为止应用最广泛的开源操作软件。
1. Gazebo
1.1. 简介
ROS中的工具就是帮助我们完成一系列的操作,使得我们的工作更加轻松高效。ROS工具的功能大概有以下几个方向:仿真、调试、可视化。本节课我们要学习的Gazebo就是实现了仿真的功能,而调试与可视化由Rviz、rqt来实现,我们下节再依次介绍。
1.2. 认识 Gazebo
对于Gazebo,大家可能并不陌生,因为我们在前面的学习过程中已经数次用到这个仿真环境,无论是在topic通信还是在s ...
ROS-rospy
📖 rospy是Python语言的接口。客户端库(Client Libarary)不仅仅指的是C++、Python语言的接口,其实是各种语言的接口统称。rospy中函数的定义,函数的用法都和roscpp不相同。
1. rospy与主要接口
1.1. rospy vs roscpp
rospy是Python版本的ROS客户端库,提供了Python编程需要的接口,你可以认为rospy就是一个Python的模块(Module)。这个模块位于/opt/ros/kineetic/lib/python2.7/dist-packages/rospy之中。
rospy包含的功能与roscpp相似,都有关于node、topic、service、param、time相关的操作。但同时rospy和roscpp也有一些区别:
rospy没有一个NodeHandle,像创建publisher、subscriber等操作都被直接封装成了rospy中的函数或类,调用起来简单直观。
rospy一些接口的命名和roscpp不一致,有些地方需要开发者注意,避免调用错误。
相比于C的开发,用Python来写R ...
ROS-roscpp
📖 许多工具本质上都是基于ROS的客户端库(Client Libarary)实现的,所谓客户端库,简单的理解就是一套接口,ROS为我们机器人开发者提供了不同语言的接口,比如roscpp是C++语言ROS接口,rospy是python语言的ROS接口,我们直接调用它所提供的函数就可以实现topic、service等通信功能。
1. Client Library与roscpp
1.1. Client Library简介
ROS为机器人开发者们提供了不同语言的编程接口,比如C++接口叫做roscpp,Python接口叫做rospy,Java接口叫做rosjava。尽管语言不通,但这些接口都可以用来创建topic、service、param,实现ROS的通信功能。Clinet Lirary有点类似开发中的Helper Class,把一些常用的基本功能做了封装。
目前ROS支持的Clinet Library包括:
Client Library
介绍
roscpp
ROS的C++库,是目前最广泛应用的ROS客户端库,执行效率高
rospy
ROS的Python库,开发效 ...
ROS-TF与URDF
📖 机器人的坐标变换一直以来是机器人学的一个难点,我们人类在进行一个简单的动作时,从思考到实施行动再到完成动作可能仅仅需要几秒钟,但是机器人来讲就需要大量的计算和坐标转换。
1. 认识TF
1.1. 简介
TF是一个ROS世界里的一个基本的也是很重要的概念,所谓TF(TransForm),就是坐标转换.在现实生活中,我们做出各种行为模式都可以在很短的时间里完成,比如拿起身边的物品,但是在机器人的世界里,则远远没有那么简单.观察下图,我们来分析机器人拿起身边的物品需要做到什么,而TF又起到什么样的作用.
观察这个机器人,我们直观上不认为拿起物品会又什么难度,站在人类的立场上,我们也许会想到手向前伸,抓住,手收回.就完成了这整个一系列的动作.但是如今的机器人远远没有这么智能,它能得到的只是各种传感器发送回来的数据,然后它再处理各种数据进行操作,比如手臂弯曲45度,再向前移动20cm等这样的各种十分精确的数据,尽管如此,机器人依然没法做到像人类一样自如的进行各种行为操作.那么在这个过程中,TF又扮演着什么样的角色呢?还拿该图来说,当机器人的"眼睛"获取一组数据,关于物体的坐标方位 ...
hexo官方标签插件使用
1. 标签插件(Tag Plugins)
标签插件和 Front-matter 中的标签不同,它们是用于在文章中快速插入特定内容的插件。
1.1. 引用块
在文章中插入引言,可包含作者、来源和标题。
别号: quote
123{% blockquote [author[, source]] [link] [source_link_title] %}content{% endblockquote %}
1.1.1. 样例
没有提供参数,则只输出普通的 blockquote
123{% blockquote %}Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque hendrerit lacus ut purus iaculis feugiat. Sed nec tempor elit, quis aliquam neque. Curabitur sed diam eget dolor fermentum semper at eu lore ...
hexo主题使用笔记
1. Mermaid图表插件基本使用格式
详情参考Mermaid官方文档和官方Github,还有可以实时在线编辑预览的mermaid在线编辑器
小技巧,如果不想Markdown渲染加载图表太久,我们可以直接调用在线编辑器生成的图片链接,通过我们生成的图表链接显示图片达到显示图表的目的!Enjoy it!
例如调用下超链接
1[![](https://mermaid.ink/img/eyJjb2RlIjoiY2xhc3NEaWFncmFtXG5DbGFzczAxIDx8LS0gQXZlcnlMb25nQ2xhc3MgOiBDb29sXG48PGludGVyZmFjZT4-IENsYXNzMDFcbkNsYXNzMDkgLS0-IEMyIDogV2hlcmUgYW0gaT9cbkNsYXNzMDkgLS0qIEMzXG5DbGFzczA5IC0tfD4gQ2xhc3MwN1xuQ2xhc3MwNyA6IGVxdWFscygpXG5DbGFzczA3IDogT2JqZWN0W10gZWxlbWVudERhdGFcbkNsYXNzMDEgOiBzaXplKClcbkNsYXNzMDE ...
Git上传的文件应用失败找不到该文件
这其实全是git默认配置惹得祸,是不是感觉很坑,明明上传成功了为什么还是找不到该文件,下面详述产生的原因
1.1. Git 忽略文件名大小写🙈
在Git的配置有一个配置是配置忽略文件名大小写的,以前你上传的文件可能是File名称,但是在这期间你可能因为同一格式的问题把它在本地的名称改为了file,但是过了一段时间你再去使用的时候,你就会发现用file名称去引用 的时候会出错提示找不到这个文件,再去Git远程仓库看看文件名还是File,但是里面的文件都更新了,你说气不气🙊,不用着急,我们现在就去马上解决这个烦人的"bug",毕竟这个配置对于我们这群仔细认真的攻城狮来说,这样的配置简直就是"bug"般的存在💀
1.2. Step 1. 清空仓库
先把本地仓库的文件转移出去,再进行一次put操作,这就相当于清空我们在远程仓库的文件
1.3. Step 2. 配置git
然后再去修改.git文件夹内的config配置文件,我们去将[core]下的ignorecase = true修改为ignorecase = false,这样大小写忽略就关 ...
hexo使用Markdown出现标题错位,降级等异常情况
1. hexo使用Markdown生成目录出现标题错位,降级等异常情况
hexo的markdown文章渲染引擎不会像Typora那么实时智能,它按照严格的Markdown标准执行渲染生成HTML网页,当出现
12####
或者
12######
出现类似这种找不到上一级母标题时,就会使得这区块的内容在目录显示错位或者整体标题降级的情况,使用时要注意!
Shell笔记
1. Shell 简介📯
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。
菜鸟网站官方的调试在线工具Shell 在线工具
1. Shell 脚本
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。
业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。
由于习惯的原因,简洁起见,本文出现的 “shell编程” 都是指 shell 脚本编程,不是指开发 shell 自身。
2. Shell 环境
Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
Linux 的 Shell 种 ...
Vscode快捷键
1. 个人自定义使用快捷键
按 Press
功能 Function
ctrl + k,ctrl + j
打开所有的折叠栏(folds)
ctrl + k,ctrl + o
折叠起所有的折叠栏(folds)
alt
多指针操作,插入光标
alt + shift + 鼠标光标点击
在两个光标间所有行的垂直方向插入光标
ctrl + alt + Up/Dowm
向上向下插入光标
alt + Up/Dowm
上下移动现在光标做在的整行
shift + alt + Up/Dowm
向上向下复制行
Shift + alt + f
格式化文档
F2
Go to definition
alt + F2
peek definition
shift + F2
Go to declaration(声明)
ctrl + alt + F2
Peek declaration(声明)
ctrl + Enter
在下插入行
ctrl + Up/Dowm
上下滚动行
ctrl + i
选择当前行
ctrl + shift + l
选择当前选择的 ...