ROS机器人开发实践学习笔记1
刚刚开始学习ROS,打算入机器人的坑了,参考教材是《ROS及其人开发实践》胡春旭编著 机械工业出版社 华章科技出品。本来以为可以按照书上的步骤一步步来,但是,too young to simple啊,程序员的苦逼日子开始了,特地记录如下。
一、几个概念:
1、ROS:(Robot operating system),直接翻译就是机器人操作系统,但是很坑爹的是,它根本不是个系统,他只是个编写机器人软件的强大框架。它含有大量的工具、丰富的库、众多的协议,拥有操作系统的作用,包括硬件抽象、底层驱动管理、功用功能执行、程序间消息传递、程序发行包管理等。能够大大简化机器人平台的繁杂,提高了机器人行为控制的稳定性。但是,我要说ROS叫(robot operating system framework)更加通俗易懂些。
2、ROS设计目标:
a、尽量提高机器人研发中的软件复用率
b、框架中的每个功能模块能够被单独设计、编译、运行时松耦合方式结合
c、功能模块都封装于独立的功能包或元功能包,便于社区共享与分发
d、ROS由核心通信机制、开发工具、应用功能和生态系统四个部分构成
e、为机器人开发提供了硬件抽象、底层驱动、消息传递、程序管理、应用原型等机制,整合了第三方工具及库文件,便于用户快速完成机器人应用的建立、编写和多机整合等
3、ROS的特点:ROS的核心分布式网络,借助灵活的通信方式,实现数据传递的高效性。
a、点对点的设计,进程以节点形式运行
b、多语言支持,C、C++、Python、Java及Octave和Lisp等,每个模块可以用不同的语言实现
c、架构精简、集成度高
d、组建化工具包丰富
e、开源且免费,BSD协议
二、安装ROS,ROS主要支持特定版本的linux,几乎每个版本的ROS和对应版本的linux对应,否则几乎无法成功安装,最新版本的ROS Melodic是2018年5月发布的,几乎网上都是对kinetic版本的,linux选用ubuntu 18.04.2版本即可,桌面好像没有过多要求。
本篇是在Kubuntu18.04上安装的Melodic版本的ROS框架,就是按照官方教程一步步来就可以:
1、添加软件源:sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
2、更新软件源:sudo apt update, sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
3、基础安装:普通用户最好完全安装 sudo apt install ros-melodic-desktop-full,也可以安装指定的包:sudo apt install ros-melodic-PACKAGE例如:sudo apt install ros-melodic-slam-gmapping
4、查找可以用的包:apt search ros-melodic
5、初始化rosdep,使用ros前,需要初始化rosdep,通过初始化rosdep完成系统组建的基本安装与配置:sudo rosdep init,更新rosdep update
6、环境配置:echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc 更新配置文件source ~/.bashrc
7、安装构建依赖包:sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
8、系统升级:sudo apt upgrade
三、管理环境,catkin方式创建ROS工作空间
1、下面我们开始创建一个catkin 工作空间:
$ mkdir -p ~/catkin_ws/src #创建目录
$ cd ~/catkin_ws/src #切换到新建目录
$ cd ~/catkin_ws/ #切换到新建目录
$ catkin_make
#编译它:
$ source devel/setup.bash
#加载到系统环境
$ roscore
#启动ros环境
$ echo $ROS_PACKAGE_PATH #检查环境变量,如果结果如:/home/municationk/catkin_ws/src:/opt/ros/melodic/share,个人可能不同,类型基本一样就是可以了
到此,ROS工作环境已经搭建完成。
ROS机器人开发实践学习笔记1的更多相关文章
- ROS机器人开发实践学习笔记3
摘要: 刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young t ...
- ROS机器人开发实践学习笔记2
刚刚开始学习ROS,打算入机器人的坑了,参考教材是<ROS及其人开发实践>胡春旭编著 机械工业出版社 华章科技出品.本来以为可以按照书上的步骤一步步来,但是,too young to si ...
- ros机器人开发概述
1. ROS项目开发流程? 参照古月大神写的ROS探索总结系列:http://blog.exbot.net/archives/619 具体项目设计可看看<程序员>杂志的最新一篇 ...
- ROS机器人开发实践1->SSH远程登录要点记录
1.有线网卡 设置 找到有线网络,点击设置,修改其中的IPv4的地址和子网掩码. 1 //地址 2 192.168.xxx.xxx 3 //子网掩码 4 255.255.255.0 点击应用 2.配置 ...
- SLAM+语音机器人DIY系列:(四)差分底盘设计——4.底盘ROS驱动开发
摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为 ...
- Ubuntu虚拟机+ROS+Android开发环境配置笔记
Ubuntu虚拟机+ROS+Android开发环境配置笔记 虚拟机设置: 1.本地环境:Windows 7:VMWare:联网 2.虚拟环境 :Ubuntu 14.04. 比較稳定,且支持非常多ROS ...
- ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse
ROS机器人程序设计(原书第2版)补充资料 (柒) 第七章 3D建模与仿真 urdf Gazebo V-Rep Webots Morse 书中,大部分出现hydro的地方,直接替换为indigo或ja ...
- Kinect开发学习笔记之(一)Kinect介绍和应用
Kinect开发学习笔记之(一)Kinect介绍和应用 zouxy09@qq.com http://blog.csdn.net/zouxy09 一.Kinect简单介绍 Kinectfor Xbox ...
- Cocos2dx游戏开发系列笔记13:一个横版拳击游戏Demo完结篇
懒骨头(http://blog.csdn.net/iamlazybone QQ:124774397 ) 写下这些东西的同时 旁边放了两部电影 周星驰的<还魂夜> 甄子丹的<特殊身份& ...
随机推荐
- Autofac 使用经验
慢慢总结 基础使用样例,在 Application_Start 中直接使用 //autofac注册 var builder = new ContainerBuilder(); //注册Controll ...
- Nginx实现同一端口HTTP跳转HTTPS
小目标:在只监听一个端口的情况下,将http访问跳转为https. 一般情况下http协议使用80端口,https协议443端口.要实现http强制转https是非常简单的事,随便都可以找到很多方案. ...
- Django rest-framework框架-content-type
表结构讨论: 是用一张表价格策略表来记录两种不同的价格策略 content-type原理: 使用一张表来记录不同课程的价目,增加一行表名称 注释: 适用于多张表关联一张表的情况 会自动生成这种的结构: ...
- JS中this和call
首先来了解一下JS中this的原理: 要访问自己的属性就必须使用 this.属性名 1.this总是指向它的直接调用者: var a={ user:'Artimis', fn:function(){ ...
- element-ui重置表单并清除校验的方法
this.$refs['activityForm'].resetFields(); 只会重置之前表单的内容,并不会清空 只需在关闭弹框的cancel方法中写上重置表单的方法即可 cancel() { ...
- stm32 i2c eeprom 24C02
电路图 相关文章:http://blog.csdn.net/zhangxuechao_/article/details/74936798 举例 #define i2c_scl PBout(10) #d ...
- 【Zookeeper】 在Java中的操作
一.基本功能演示 1.1 Maven依赖信息 1.2 代码演示 方法说明 1.3 创建Zookeeper节点信息 二.Watcher 2.1 什么是Watcher接口 2.2 Watcher代码 一. ...
- Mysql的管理
Linux系统中:mysql进入的命令为mysql -u root -p +你的mysql密码. Mysql是如何添加用户呢? 在mysql命令行下,使用use mysql;进入mysql的数据库中. ...
- vba代码阅读
#If Vba7 Then #如果是运行在64位office上 Declare PtrSafe Sub...#Else #如果是运行在32位office上 Declare Sub...#EndIf 在 ...
- Ajax长连接和SignalR(刷新客户端数据)的区别
ajax实现长连接 <%@ page language="java" import="java.util.*" pageEncoding=" ...