![](https://img-blog.csdnimg.cn/20200323152730432.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ROS学习记录
文章平均质量分 84
关系机器人操作系统(ROS)的理解与学习
康娜喵
理论与工程,性能与外表,我全都要!
展开
-
ROS学习记录17【SLAM】仿真学习6【完结】—— 无人驾驶
零.前言这次使用Move_Base框架配置配置,就能实现自主导航了。仿真篇结束,后面找机会拿个实物来玩儿。在整理包,后面会传到github和gitee上一.安装与介绍1.1 move_base安装sudo apt-get install ros-noetic-move-base框架是这样,我们只需要配置定位: amcl路径规划:局部与全局。其中,局部我们使用符合阿克曼模型的teb_local_planner地图:map_server,来创建代价地图里程计:odom已经配置1.2原创 2022-01-19 11:36:41 · 1810 阅读 · 2 评论 -
ROS学习记录16【SLAM】仿真学习5——将cmd_vel转换为ackman小车的速度
零.前言在ROS的机制下,绝大多数的速度模型都是:Twist,当然我们有符合阿克曼模型的:ackermann_msgs,不用那么麻烦,直接将Twist.linear.x作为后轮前进的速度、twist.angular.z作为我们转向角的角度更多的阿克曼转向模型参考(实际模型创建odom的时候使用):https://www.bilibili.com/video/BV1AA411g7DGhttps://www.bilibili.com/video/BV1cT4y1M7ts一.写代码在ros_ws/原创 2022-01-16 13:03:32 · 1743 阅读 · 1 评论 -
ROS学习记录15【SLAM】仿真学习4——使用gmapping建图与保存地图
原创 2022-01-14 12:20:39 · 4606 阅读 · 0 评论 -
ROS学习记录14【SLAM】仿真学习3——开车,并发布坐标信息
零.前言因为是仿真,模型也是怪怪的,所以坐标信息就不用轮子积分的方式了。后面遇到真实的模型过后再具体分析阿克曼运动模型的速度转换。而且真实情况的运动分解更复杂,完全没有理想模型这么理想,所以要么就纯仿真熟悉流程,要么就直接上实物,有针对性的调试。所以,这次坐标信odom就从Gazebo里获取。顺路说一句,VScode里面的ROS插件解决了一个我一直想要的可视化urdf编辑:一.用Xbox控制小车运动鄙人写了一小段代码,通过Xbox手柄来控制小车移动。不管是正版还是国产,走Xbox协议的手柄都可以用原创 2022-01-13 09:13:37 · 1553 阅读 · 1 评论 -
ROS学习记录13【SLAM】仿真学习2——创建一个包含Lidar、Camera、IMU的Ackman小车
零.原理原理就是一个普通的小车,配合上Gazebo plugins实现Cazebo里的信息采集。对了我目前打算的是个后驱车,如果要四驱的,可以自己给前轮的Joint加两个velocity_controllers即可。一.造车1.1 写一个车先在src/slam_model/urdf/ackman.urdf写一个车:<?xml version="1.0" ?><robot name="ackman"> <!--Main Body Begin-->原创 2022-01-09 17:32:31 · 1438 阅读 · 4 评论 -
ROS学习记录12【SLAM】仿真学习1——ROS Control
零.前言学完了ROS的基础应用,我们就可以开始向更复杂的应用开始学习了,比如我们的SLAM。但是昂贵的底盘与激光雷达是学习这一部分的阻碍,为了弥补经费的不足,我们可以从0开始,创建一个自己的仿真小车,然后实现SLAM过程。最后真的有幸用到激光雷达和机器人底盘,那么直接移植写好的内容就可以了.本次实验的平台为ubuntu 20.04 + ros/noetic,无特殊说明,后面的教程都为这个。后面会把整个项目打包上传至github上,地址待定,写完再改。一.创建工作空间与包在工作空间下创建一个SLAM原创 2022-01-08 20:55:26 · 3084 阅读 · 6 评论 -
ROS学习记录11——tf坐标变换与多海龟跟随
零.前言关于tf的内容,我也没有彻底理解透彻,只能讲述个大概,若有错误,请评论区斧正,谢谢。在《机器人基础》这个课里,有推导关于机器人坐标变换的说明,当然,我没学,学了也因为当时数学不好没听懂,所以这篇文章也不会讲太多数学层面的东西。一.概念1.1 引言我们知道,物体的位置是相对的。那么在描述一个系统中例如三个物体的位置关系,我们可以通过假设A为原点,计算B相对于A的坐标,C相对于A的坐标。这样可以通过A+坐标的方式表示B,C的位置。当然,此时我们也可以把B当作坐标原点,根据刚才的坐标,我们可原创 2021-05-26 12:44:33 · 3870 阅读 · 10 评论 -
ROS学习记录10——.launch文件的编写与使用
零.前言roslacunch,只是方便我们一次运行大量节点,或者通过单个脚本运行多个节点的工具。这部分没啥好讲的,主要使用为机翻+调校官方文档,外加一些实例,官方文档的地址:roslaunch/XML一.元素结构roslaunch也是由xml语言构成,文件后缀为.launch.launch文件因该由<launch>、</launch>开始与结束,其他参数均为该TAG的子元素。其子元素有:<node>、<machine>、<include&原创 2021-05-25 15:07:18 · 2948 阅读 · 6 评论 -
ROS学习记录9——urdf文件的创建与使用
零.前言在学习这一节之前,至少得明白如何创建一个工作空间,如何编译工作空间,如何运行工作空间里的文件(把工作空间的环境目录添加到环境里)。如果有不会的,请看鄙人的ROS学习记录3。本节默认工作空间已创好,且添加到环境目录中。且基于ubuntu18.04 ROS Melodic一.urdf的定义1.1 概念官方wiki文档地址: urdf/Tutorials 人体骨架是怎样构成的?各块骨头间有关节来使得两块骨头可以旋转。在美术中,我们构建一个人体是通过如何构建的?用近似圆形的关节连接椭圆组成的骨原创 2021-05-25 12:46:37 · 6433 阅读 · 3 评论 -
ROS学习记录8——RosBag的使用
一.概念为什么会存在ROSbag这个东西?ROSbag的作用是什么?rosbag作为ros提供的一种工具,它可以记录系统中有关主题的发布的数据。在某些复杂的场景下,我们机器人会偶然触发bug,但是如果要等待复现这种bug可能会花费大量时间,所以可以通过rosbag来复现场景。所以可以约等于将ROSbag理解为系统日志、机器人运行记录、强队demo。我们可以通过它查看机器人的运行时的信息,或者让机器人通过回放rosbag,以“相同的方式”再运行一次。二.记录rosbag会记录在控制台的当前目录原创 2021-05-23 16:40:57 · 1438 阅读 · 0 评论 -
ROS学习记录7——Python与C++编写节点的不同
零之前言就我而言,我觉得对于使用ROS的人来说,使用C++的人多于使用Python的人吧。Python和C++编写的节点有很大的差异。虽说Python带来了许多便利性的同时,也带来了许多非兼容性。下面我详细说:一.编译Python是一种解释语言,而C++是一种编译语言。就如同我们存放的位置所说,.py文件是放在/script文件下,就说明了其是动态的,不需要编译,我们修改了.py的内容后,...原创 2020-03-29 16:54:51 · 2848 阅读 · 5 评论 -
ROS学习记录6——节点的编写逻辑与实现(C++/Python)
一.流程简述我花了一个稍微简单但细节上又不太准确的图:节点的功能就是参与数据运算或者对数据进行操作。比如我们可以由一个节点计算图片坐标,然后通过控制下位机的节点订阅坐标,实现获取坐标并与下位机通信,实现“识图-移动"。这只是个简单的例子。那么结合上图我们看看一个节点的核心要素(这里就先用C++展示了):#include "ros/ros.h"导入头文件,确保能基于ROS编程。int m...原创 2020-03-29 16:07:05 · 1837 阅读 · 0 评论 -
ROS学习记录5——编写一组基于服务的通信节点
零之前言基于服务与基于话题的节点编写都差不多,所以内容和前一篇基本上很相似。但服务与话题的通信机制不一样:话题是我只管说,你要听就订阅。服务是我想听你说,我(客户端)求你(服务端),你答应了,再给我说。一.创建一个服务先创建这次使用的功能包:(对的, message_generation 对msg和srv都起作用)然后创建服务:其中服务的数据类型中有一个---,这个以上,是请求...原创 2020-03-28 19:30:33 · 498 阅读 · 1 评论 -
ROS学习记录4——编写基于话题的两个通信节点
零之前言节点之间是通过一个ROS话题来互相通信的。A节点在一个话题上发布按键输入消息,而B节点则订阅该话题以接收该消息。根据ROS Wiki上的描述,我们很轻松可以知道,消息与话题的关系,通信机制是话题,而消息只是话题的数据结构。ROS在命令行中可以通过命令查看话题及其使用的消息,也有可视化查看话题的工具,详细的使用方法,可以查看ROS wiki上的理解ROS话题根据我们创建消息,你会...原创 2020-03-27 11:36:24 · 1588 阅读 · 6 评论 -
ROS学习记录3——创建一个节点
1.创建一个功能包首先,创建一个文件夹作为我们的“工作空间”,然后在工作空间内新建一个src文件夹:接着我们在我们的工作空间的目录下,运行以下代码:catkin_make然后在工作空间里会出现:build、devel、.catkin_workspace这三个文件。/src里会出现CMakeLists.txt这个文件。以下是一段题外话:我不知道为什么很多博客都将/src作为工作空间,...原创 2020-03-26 11:48:57 · 3550 阅读 · 0 评论 -
ROS学习记录2——ROS框架的概述
零之前言要想真的用好ROS这款框架,需要我们需要比较好了解整个框架的架构。本文只做概念性的记录,后面会详细编写其内容。对于这一节内容,我选择了几个比较好的博客链接分享:ROS学习笔记二:ROS系统架构及概念一、三层级ROS被分为三部分与层级:文件系统级、计算图级、开源社区级。1.文件系统级引用一张图,其中文件系统级可以由综合功能包和功能包构成,综合功能包由许多功能包构成,ROS提供...原创 2020-03-24 16:03:18 · 1198 阅读 · 0 评论 -
ROS学习记录1——安装ROS
零之前言ROS因该是一年前学的东西,因为网上的博客基本上都是你复制我,我复制你的,原创的不是很多,现在学了那么久了,有一些自己的理解,对此编写此系列博客,希望对后人有所帮助QAQ推荐基础学习的一个地方:创客智造一、安装1.介绍ROS根据系统版本的不同,有不同的安装包,其对应关系如下(这里ROS版本就写简称了)Ubuntu版本ROS版本Ubuntu 18.04mel...原创 2020-03-23 11:41:50 · 632 阅读 · 0 评论