不花钱的机器人——ROS机器人仿真平台 | 模拟器 | Autolabor Simulation

2023-05-16

没钱买机器人底盘和激光雷达,照样也能玩转机器人!

在这里插入图片描述

Autolabor Simulation是什么

Autolabor Simulation是由 Autolabor 推出的一款基于ROS(Robot Operating System)的轻量级开源轮式机器人模拟器。其能实现轮速里程计,激光雷达,机器人底盘模拟,并可自定义二维场景以及动态障碍物。并提供丰富参数配置以及接口对相应传感器以及场景的操控。

Autolabor Simulation 使用 ROS 开发,不依赖与其他软件工具,适用于初学者学习 ROS 以及开发者调试导航,建图等算法。其最大的特点就是简单易上手,仅通过配置相应 ROS 节点即可模拟获取多种传感器数据,替换相应设备驱动即可快速移植到真实移动机器人上。

目的

科技的进步是因为人类的懒惰,写这款模拟器的初衷是为了调试方便,单纯为了节省开发、部署和测试的过程中来回折腾的时间成本。

但这款模拟器的功能包括但不仅限于调试,它还是机器人仿真平台,它能够模拟真实的机器人、地图、障碍物、激光雷达等。

现在把这款模拟器开源,是为了让没有移动机器人平台的人能够使用该平台来学习 ROS、开发机器人、实现自己的算法,做一些有趣的事情。

Autolabor Simulation 包含哪些模块

  • autolabor_description —— 机器人urdf模型
  • autolabor_simulation_base —— 轮式机器人底盘模拟
  • autolabor_simulation_lidar —— 单线激光雷达模拟
  • autolabor_simulation_location —— 定位标签模拟
  • autolabor_simulation_stage —— 基于灰度图片的自定义场景模拟
  • autolabor_simulation_object —— 自定义形状的可移动障碍我模拟
  • autolabor_keyboard_control —— 键盘控制模块

Autolabor Simulation 能实现哪些功能

Autolabor Simulation 在设计时采用低耦合设计观念构建所有模块,有非常良好的可扩展性,后期根据需求会逐渐添加更多传感器(惯导,超声波传感器,毫米波)模拟。现有的功能可实现但不限于以下功能:

  • 键盘控制小车运动功能
  • Cartographer2D 单线激光雷达SLAM建图/定位
  • Gmapping 单线激光雷达SLAM建图
  • Amcl 基于单线激光雷达定位
  • Navigation 自动导航功能
  • 自动巡迹导航

模拟器提供动态障碍物模拟,对于有一定开发经验的用户可以提供利用其进行激光雷达进行深度强化学习,训练局部规划算法。

使用指导

依赖

Autolabor_simulation 是基于ROS开发的轮式机器人模拟器,所以在使用前需要先安装ROS环境。如果你使用的是Ubuntu 操作系统,ROS环境安装方式可参考 ROS环境安装。

如果你没有 Ubuntu 系统环境,可以在模拟器中安装 AutolaborOS,并在 AutolaborOS 中实现教程中所有功能。

AutolaborOS 是基于 Ubuntu 定制的机器人操作系统,其中包含ROS环境以及多种传感器驱动,同时包含模拟器以及建图导航、定位巡迹等功能模块。具体安装方式以及下载地址可以参考 AutolaborOS 安装。

此处,建议刚入门ROS的用户,直接使用 AutolaborOS 一键安装,不用担心下载、编译遇到各种错误,可节省更多的时间。


以下安装教程,适用于非 AutolaborOS 用户。

Autolabor Simulation仓库由若干个 Ros Package 组成,仓库下的每个 package 有自己的配置文件(package.xml),可以将 Autolabor Simulation 下载后复制到你的 workspace 的 src 文件夹下,利用 catkin_make 编译 autolabor_simulation。

创造工作空间

创建 catkin_workspace

# Create catkin_workspace
source /opt/ros/kinetic/setup.bash
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

下载并编译

下载地址

# 进入工作空间src 目录下
cd ~/catkin_ws/src/
# 将下载的文件拷贝 autolabor_simulation-master 至src文件夹中

# 安装相关依赖项
# 这个命令是用于安装工作空间中src路径下所有package的依赖项(由pacakge.xml文件指定)。
rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y    
# rosdistro 此处ROS版本,自己安装的是什么写什么,示例代码中是kinetic,如是melodic或是其他版本,就更换为对应的

# Build source
cd ..
catkin_make
source devel/setup.bash

如果希望ROS环境中默认包含 autolabor_simulation,可以使用如下命令将workspace设为默认包含

# Source workspace for every terminal
source ~/catkin_ws/devel/setup.bash

安装完毕后,我们开始使用。

快速开始

在 simulation_launch/launch 文件夹中提供了很多预先配好的launch文件,下面运行一个简单的入门教程,使用 autolabor_simulation 运行 gmapping 和 move_base 控制小车在迷宫中行走:

# Source workspace for every terminal
source ~/catkin_ws/devel/setup.bash
roslaunch simulation_launch gmapping_navigation.launch

运行命令后,rviz会自动弹出并显示对应的信息,下面利用 rviz 中的 2D Nav Goal 来触发小车的自动规划吧!

更多教程,可参考doc文件夹下的使用说明。生成命令如下:

# Install doc generator and its dependence
sudo apt-get install python3-sphinx
pip3 install --user sphinx_rtd_theme
# Go to the doc dir and build it
cd ~/catkin_make/src/autolabor_simulation/doc
make html
# Waiting for the make till it finished
xdg-open build/html/index.html

项目结构

├── autolabor_description             移动机器人urdf模型
│   ├── CMakeLists.txt
│   ├── launch                        启动移动机器人模型相关launch脚本
│   ├── meshes                        移动机器人三维模型
│   ├── package.xml
│   ├── rviz                          移动机器人rviz可视化配置参数
│   └── urdf                          移动机器人三维模型相关配置参数
├── autolabor_keyboard_control        键盘控制模块
│   ├── CMakeLists.txt
│   ├── include                       键盘控制模块头文件
│   ├── package.xml
│   └── src                           键盘控制模块源代码
├── autolabor_simulation_base         移动机器人底盘模拟(包含轮速里程计模拟)
│   ├── CMakeLists.txt
│   ├── include                       底盘模块头文件
│   ├── launch                        底盘模块测试launch脚本
│   ├── package.xml
│   └── src                           底盘模块源代码
├── autolabor_simulation_lidar        单线激光雷达模拟
│   ├── CMakeLists.txt
│   ├── include                       单线激光雷达模块头文件
│   ├── launch                        单线激光雷达测试launch脚本
│   ├── package.xml
│   └── src                           单线激光雷达源代码
│── autolabor_simulation_location     定位巡迹模拟
│   ├── CMakeLists.txt
│   ├── include                       定位巡迹模拟模块头文件
│   ├── package.xml
│   └── src                           定位巡迹模拟源代码
├── autolabor_simulation_object       动态障碍物模拟
│   ├── CMakeLists.txt
│   ├── include                       动态障碍物模拟模块头文件
│   ├── launch                        动态障碍物模拟模块launch脚本
│   ├── package.xml
│   └── src                           动态障碍物模拟模块源代码
├── autolabor_simulation_stage        自定义场景模拟
│   ├── CMakeLists.txt
│   ├── include                       自定义场景模拟模块头文件
│   ├── launch                        自定义场景模拟模块测试launch脚本
│   ├── map                           场景地图
│   ├── package.xml
│   ├── src                           自定义场景模拟模块源代码
│   └── srv                           自定义场景模拟模块ROS中使用的自定义消息
├── doc                               说明文档
│   ├── make.bat
│   ├── Makefile
│   └── source
├── README.md
└── script                            模拟器相关脚本
    └── add_keyboard_udev             添加键盘映射脚本

声明

Autolabor Simulation 现已开源,用户可免费下载使用,欢迎大家留言交流。

使用过程中如有意见和建议请反馈至support@autolabor.com.cn,您的建议能够帮助我们做的更好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不花钱的机器人——ROS机器人仿真平台 | 模拟器 | Autolabor Simulation 的相关文章

  • 前天奶奶来了 xff0c 把屋子里面的东西都收拾了一下 xff0c 尤其是佳佳的玩具 xff0c 有好多毛绒玩具 xff0c 都放在一个柜子的层里面了 早上佳佳醒来 xff0c 发现了新大陆 xff01 美羊羊都碰头了 xff01 维尼的碰
  • 超级简单的抽奖工具

    昨天快到中午的时候接到业务部门的一个需求 xff0c 要求对现有的抽奖软件进行改进 问题是 xff1a 现在的抽奖软件每次只能够抽出一个中奖号码 xff0c 而此次设置的各种奖项的中奖人数加起来有500人 xff0c 如果使用原有的软件 x

随机推荐

  • 程序员应知——把小事做好

    在从事软件开发的这些年中 xff0c 近期越来越多地听到这样的论点 xff1a 当前的程序员越来越浮躁 我的感觉也是如此 xff0c 由于在软件公司中 xff0c 人才流动特别快 xff0c 因此很多人的职位也变化的比较快 xff0c 很可
  • 程序员应知——学习、思考与分享

    有人说 xff0c 程序员是个苦差事 xff0c 一辈子总是要不停地学习 xff0c 学习新的技术 xff0c 学习新的架构 xff0c 学习新的工具 xff0c 一旦一段时间不学习 xff0c 就会发现其他人嘴里冒出来的新鲜词 xff0c
  • Evernote和有道云笔记的比较

    每个人可能都有随手记录一些事情的习惯 xff0c 可能是为了不忘记 xff0c 也可能是随时闪现在头脑中的一些想法 xff0c 因此就有了便利贴 xff0c 而在计算机或者说互联网的时代 xff0c 我们就有了更多选择 xff0c 可以随时
  • 软件开发中的哲学——世界的本原是物质(一)

    在这个系列博客的第一篇中 xff0c 首先要涉及到的哲学原理就是 世界的本原是物质 在IT领域 xff0c 有硬件和软件之分 xff0c 而二者之间的关系 xff0c 就和物质与精神类似 没有硬件的存在 xff0c 那么软件就没有能够发挥作
  • 在Prezi中输入简体中文的完美解决方案

    Prezi是一种在线制作演示文档 xff08 PPT xff09 的工具 xff0c 它与传统的Powerpoint或者Keynote的表现形式完全不同 xff0c 被称为 powerpoint的颠覆者 xff0c 在36Kr上曾经有过多篇
  • C程序中头文件相互包含精华(网摘小结)

    h 中一般放的是同名 c 文件中定义的变量 数组 函数的声明 xff0c 需要让 c 外部使用的声明 1 h 文件作用 1 方便开发 包含一些文件需要的共同的常量 结构 类型定义 函数 变量申明 xff1b 2 提供接口 对一个软件包来说可
  • 【无标题】sourceTree使用教程,比TortoiseSVN小乌龟更好用的一款软件

    俗话说的好工欲善其事必先利其器 xff0c Git分布式版本控制系统是我们日常开发中不可或缺的 目前市面上比较流行的Git可视化管理工具有SourceTree Github Desktop TortoiseGit xff0c 综合网上的一些
  • Vim(gvim)配色方案推荐

    如果经常用vim进行编辑 xff0c 那么一款好的vim配色就是必然的啦 xff0c 今天我们就来介绍一下我比较喜欢的几款配色 xff08 配色效果主要针对gvim xff0c 因为在vim下工作都是终端操作 xff09 由于本人是以程序员
  • 如何定义python的全局变量

    定义全局变量 global var 61 10 def some function 在函数中使用全局变量 print 34 Global variable value 34 global var some function 在Python中
  • 网上推荐的学习ucosii的三本书

    1 xff0c 嵌入式实时操作系统uc os II教程 西安电子科技大学出版 xff0c 有流程图 2 xff0c 嵌入式实时操作系统uc os II原理与应用 xff08 第二版 xff09 任哲 北航出版 3 xff0c 基于嵌入式实时
  • UC/OSII源码阅读知识点(第一章)

    嵌入式实时操作系统uc os原理与实践 xff08 卢有亮 电子工业出版社 xff09 1 在STM32上使用的ARM CORTEX处理器中 xff0c 具有主堆栈MSP和进程堆栈PSP xff0c 具有Pendsv和Systick中断 2
  • 802.11控制帧&管理帧

    控制帧主要用于协助数据帧的传递 xff0c 可用于管理无线媒介的访问 提供MAC层的可靠性 以下只讲帧类型 xff0c 不讲帧结构 1 1 RTS帧 xff1a 用来取得媒介的控制权 xff0c 用于传送分段帧 xff0c 分段由网卡驱动程
  • linux常用变量含义

    是传给脚本的参数个数 0 是脚本本身的名字 1 是传递给该shell脚本的第一个参数 2 是传递给该shell脚本的第二个参数 64 是传给脚本的所有参数的列表 是以一个单字符串显示所有向脚本传递的参数 xff0c 与位置变量不同 xff0
  • 四核 x86 MinnowBoard 和 UP Squared 单板计算机

    MinnowBoard的 MinnowBoard Turbot Quad 和Aaeon的UP平方单板计算机开始出货 xff0c 以社区网站和运行Linux和Android的英特尔SoC为特点 5月23日 xff0c Intel支持的Minn
  • 无人机悬停 优象科技LC302 V1.1光流模块

    5月30日 xff0c 学校组织了一年一度的五月风活动 xff0c 每个社团纷纷拿出自己协会的作品 在我们科技爱好者协会中 xff0c 展示了光流模块 xff0c 特斯拉线圈 xff0c 蓝牙小车 xff0c 激光显示仪器 xff0c 空气
  • git中tag与release的创建以及两者的区别

    简介 本文辨析在参与开源项目时会遇到的tag与release的概念区别与联系 xff0c 并比较两者的创建方法 定义 标签 xff08 tag xff09 是特定提交 xff08 commit 一个指针 xff0c 也就是每个tag对应一个
  • PX4源码的Makefile详细理解(包含部分makefile语法规则和编译逻辑)

    啰嗦 xff1a 越会一件事情 xff0c 就会忘了不会一件事情的感觉 前段时间在微信上看到这句话 xff0c 深以为然 xff0c 这就是为什么很多时候懂的人觉得自己讲的很清楚了 xff0c 但是不懂的人却觉得并没有讲的清楚明了 xff0
  • c/c++语言结构体中的冒号的用法

    结构体中常见的冒号的用法是表示位域 有些信息在存储时 xff0c 并不需要占用一个完整的字节 xff0c 而只需占几个或一个二进制位 例如在存放一个开关量时 xff0c 只有0 和 1 两种状态 xff0c 用一位二进位即可 为了节省存储空
  • ubuntu 升级内核的具体步骤

    收藏于 2013 04 09 迁移自本人的百度空间 转载自 http forum ubuntu org cn viewtopic php p 61 2730876 ubuntu 12 04内核是linux 3 2 0 24 xff0c 其实
  • 不花钱的机器人——ROS机器人仿真平台 | 模拟器 | Autolabor Simulation

    没钱买机器人底盘和激光雷达 xff0c 照样也能玩转机器人 xff01 Autolabor Simulation是什么 Autolabor Simulation是由 Autolabor 推出的一款基于ROS xff08 Robot Oper