使用Ubuntu 18.04 LTS开启机器人开发的愉快历程

使用 Ubuntu 18.04 开启机器人开发的愉快历程

  • Using Ubuntu 18.04 to Open a Happy Course in Robotics Development

1. 什么是Ubuntu?

(点击图片可查看更多信息)18.04介绍链接

https://cn.ubuntu.com/

https://cn.ubuntu.com/internet-of-things/

2. 如何愉快的使用Ubuntu?

-官网论坛知乎-

2.1 系统美化,赏心悦目:链接链接II

2.2 奇技淫巧,装逼利器:链接链接II

2.3 丰富应用,乐到飞起:链接链接II

2.4 合适教程,步步为营:链接链接II

3. Ubuntu系统试用

推荐两款应用:Albert + Zeal

Zeal is an offline documentation browser for software developers.

Ubuntu 18.04的安装步骤和启动盘制作,务必参考官网哦:链接

桌面:

Night Light 设置保护眼睛

Wi-Fi:

snap的特性就是安全、通用、便于使用以及开发维护成本低:

$ sudo snap install electronic-wechat

$ sudo snap install webqq

更多Ubuntu系统详细使用和软件介绍参考第二节。

4. 机器人开发相关应用

V-Rep:http://www.coppeliarobotics.com/

问题描述:http://www.forum.coppeliarobotics.com/viewtopic.php?f=5&t=7288

Gazebo 9+:http://gazebosim.org/

Matlab 2018a:百度网盘( 提取码 iark )

ROS Melodic Morenia:http://wiki.ros.org/melodic

5. 书籍推荐

各功能软件的帮助文档。

现代机器人学:机械,规划和控制(MODERN ROBOTICS MECHANICS, PLANNING, AND CONTROL)

重要参考:书籍说明和下载链接仿真实践课程(V-Rep)链接

----人工智能翻译----

这是教科书“现代机器人学:机械,规划和控制”的主页,Kevin M. Lynch和Frank C. Park,剑桥大学出版社,2017年,ISBN 9781107156302。通过剑桥大学出版社购买精装本,使用20%折扣代码LYNCHPARK2017或通过亚马逊,或查看下面的免费预印本版本。

  • 弗兰克和凯文为他们的主题提供了一个非常清晰和耐心的解释。” 罗杰布鲁克特,哈佛大学
  • “ 现代机器人技术为机器人学提供了最重要的见解......清晰度让大学生都能接触到。” 马修·T·梅森,卡内基·梅隆大学

本书是多年来在汉城国立大学M2794.0027机器人入门课程和西北大学ME 449机器人操作课程开发的课程笔记的结果。不断发展的课程笔记已在互联网上发布多年,以支持这些课程。

剑桥大学出版社购买的这本书的版本改进了布局和排版,更新的数字,不同的页码(和更少的页面)以及更仔细的编辑,它被认为是本书的“官方”版本。但本书的在线预印本版本具有相同的章节,章节和练习,并且其内容与剑桥出版的版本非常接近。本书的最新预印本在线版本于2017年5月发布。我们于2016年10月和11月发布了本书的初稿,这些版本应该被丢弃。

我们发布了这本书的四个版本。所有版本都有完全相同的内容和分页。它们只有在边距尺寸和印刷尺寸方面不同,正如Adobe Acrobat在乳胶处理后所操作的。其中两个版本的工作超链接用于在您的计算机或平板电脑上浏览图书。

与工作超链接。 (要使用超链接导航本书,请单击超链接,要返回来自哪里,请选择适合您PDF阅读器的按钮或按键,例如,在装有Acrobat或Acrobat Reader的Mac上,使用cmd-left箭头在Mac上预览,使用cmd- [。其他操作系统上的某些阅读器使用alt-left箭头,您可以通过谷歌查看适用于您的pdf阅读器的解决方案。)

没有工作的超链接。

  • 大字体8.5x11或A4版本。可打印的版本与12磅字体相当,并且小于10磅的默认版本。
  • 2up版本。可打印版本,每页2页书本,如果您有良好的眼睛,可节省纸张。大约相当于8.5点字体。

这些文件已被压缩到大约7 MB。如果您在阅读时遇到任何问题,请告知我们。请注意,预览版的默认Mac OS X pdf阅读器的最新版本已知会在PDF文件中显示某些图片。如果数字显示不正确,请尝试使用更好的PDF查看器,例如Acrobat Reader。

目录:

  1. 预习
  2. 配置空间
  3. 刚体运动
  4. 前进运动学
  5. 速度运动学和静力学
  6. 逆运动学
  7. 闭链运动学
  8. 开放链的动力学
  9. 轨迹生成
  10. 运动规划
  11. 机器人控制
  12. 抓住和操纵
  13. 轮式移动机器人

附录A.有用公式的总结附录B.其他旋转表示附录C. Denavit-Hartenberg参数附录D.优化和Lagrange乘子

这本书是为了让工程学学生参加典型的一年级工程课程而编写的。学生应该了解:

  • 新生级物理,包括f = ma; 带有质量,弹簧和阻尼器的自由体图; 矢量力量; 和矢量转矩(或矩)作为距离矢量和力的叉积;
  • 线性代数,包括矩阵运算,矩阵的正定性,行列式,复数,特征值和特征向量;
  • 一些微积分,衍生物和偏导数; 和
  • 基本线性常微分方程组。

学生也应该准备好编程,但只需要基本的编程技巧。代码以python(免费提供),MATLAB(用于购买,或者您可以使用免费提供的GNU Octave克隆)和Mathematica(用于购买)提供,因此这些语言是首选。

现代机器人勘误表

--------

V-REP简介

V-REP的主页上,程序被描述为

  ......机器人模拟器中的瑞士军刀:您不会找到具有更多功能,功能或更复杂的API的模拟器。

V-REP的优势来自以下几个特点:

  1. V-REP提供了一个统一的框架,结合了许多功能强大的内部和外部库,这些库经常用于机器人仿真。其中包括动态仿真引擎,正向/反向运动学工具,碰撞检测库,视觉传感器仿真,路径规划,GUI开发工具以及许多常用机器人的内置模型。
  2. V-REP具有高度可扩展性。V-REP开发人员提供了一个API,允许用户编写添加新功能的自定义插件。您可以将Lua脚本直接嵌入到模拟场景中,例如处理模拟传感器数据,运行控制算法,实现用户界面,甚至将数据发送到物理机器人。他们还提供了一个远程API,允许用许多编程语言开发独立应用程序,这些程序语言能够将数据传入和传出正在运行的V-REP模拟。
  3. V-REP是跨平台的,主要是开源的,并提供免费的教育许可证。

这个页面的目的不是要教你如何使用V-REP。而是描述已经开发出来的示范场景,以支持Modern Robotics这本书的学习。如果您有兴趣了解更多关于V-REP的信息,请查看下面的有用资源部分。

演示V-REP场景

要运行以下任一场景,第一步将是为您的操作系统下载V-REP。你应该下载最新的非限制性教育版本。接下来你将不得不安装V-REP。在Windows上,您只需安装一个安装V-REP的EXE。在Mac上,您首先需要解压下载。通过解压缩下载产生的vrep.app目录包含一个目录,该目录应允许您通过正常机制启动V-REP,例如Finder / Spotlight / Launchpad。在Linux上,您将需要提取压缩的tar归档文件(例如,使用类似的命令tar xvf V-REP_PRO_EDU_V3_3_2_64_Linux.tar.gz)。然后,您需要将目录切换到V-REP源目录并运行vrep.shshell脚本。

一旦V-REP打开,您将需要运行下面的一个场景。要运行它们中的任何一个,首先运行V-REP,然后单击File->Open scene...并打开下面链接的其中一个ttt文件。然后点击顶部工具栏中的“ 播放”按钮或单击Simulation->Start simulation,弹出一个GUI。点击停止按钮或Simulation->Stop simulation关闭GUI并停止模拟。

大部分场景都具有运动控制,无响应机器人的模拟。运动控制意味着忽略系统的所有动力学(惯性,扭矩,摩擦等)。我们指定机器人的配置,并立即“传送”到新配置。不可回应意味着机器人的链接不能通过碰撞与世界或彼此进行交互。换句话说,我们可以将机器人置于导致自碰撞的配置中。

“交互式”场景允许您在使用滑块更改其配置时可视化机器人。“CSV”场景允许基于存储在逗号分隔值文件中的轨迹的机器人动画,其中每行对应于一个时间步,并由逗号分隔的数字组成,指定该时间步的机器人配置。“CSV”场景中没有联合限制。

CSV移动操纵场景是一个部分动态控制的来自库卡的可回应youBot模拟。 

有关csv文件格式的重要注意事项: 下面包含的用于csv场景的示例csv文件假定句点(而不是逗号)用作小数点。所以pi写成3.14,而不是3,14。如果你正在使用Linux和您的区域设置被设置为使用逗号作为小数点分隔符,一个解决方案,通过Coursera学生提出了一个区域,是使用美国英语设置调用V-REP:

LC_NUMERIC = en_US.UTF-8 ./vrep.sh

另一个选项,也是由Coursera学生建议的,是打开“系统设置” - >“语言支持” - >“区域格式”选项卡。将区域更改为“英语(美国)”后,请注销并返回以使更改生效。

在每个场景中,都有一个叫做非线程子脚本的 Lua 脚本。当场景第一次运行时,会有一个被调用的函数来设置GUI并创建稍后在模拟中需要的变量。然后在模拟的每个步骤中主要脚本,它是每个V-REP场景的一部分,从子脚本运行一个“驱动”功能。该执行功能负责处理自上次调用(按钮点击,标签更新等)以来所有对GUI的更改,并且将关节命令发送给模拟机器人。从技术上讲,在主脚本中调用的子脚本中还有一个“传感”功能,但在每个场景中,传感功能都是空的。GUI都是用V-REP的基于Qt的自定义用户界面框架构建的

场景1:交互式UR5

这个场景可以帮助您从Universal Robots中查看UR5机器人。UR5的模型是通过从ROS-Industrial ur5_description包导入URDF创建的。该场景中的GUI具有两个选项卡。一个选项卡允许您拖动滑块来修改每个关节的关节角度,另一个选项卡允许您为可编辑文本框中的所有6个关节指定逗号分隔的角度,并要求从基础框架到SE(3)转换到末端执行器框架。连接到基座和末端执行器的框架将持续显示(x轴为红色,y轴为绿色,z轴为蓝色)。请注意,所有角度均以弧度指定。 

  • 这里下载ttt场景文件。

场景2:CSV动画UR5

该场景基于代表机器人轨迹的csv文件来动画UR5机器人的运动。csv文件的每一行代表一个时间步,csv文件的每一列是其中一个关节的关节角度(第一列是关节1,最后一列是关节6)。

场景3:互动youBot

这个场景可以帮助您从库卡看到一个youBot移动机械手。KUKA youBot包含一个mecanum-wheel全向基座和一个5R机器人手臂。使用滑块移动机器人的移动基座和机器人的关节。所有角度都以弧度表示。

  • 这里下载ttt场景文件。

场景4:CSV动画youBot

这个场景基于表示机器人轨迹的csv文件来动画youBot的运动。csv文件的每一行表示一个时间步,csv文件的每一列都是一个时间的配置变量。csv文件有12或13列。列1-3表示移动基站配置变量,按照(phi,x,y)排序,其中phi是基站的角度,(x,y)是其中心的位置。列4-8表示五个臂关节角度,即关节1至关节5.列9-12表示车轮角度,其中车轮1为列9,车轮4为列12,车轮编号如图所示在右边。第13栏是可选的。如果存在,则0表示夹具打开,1表示夹具关闭。如果没有第13列,那么夹具默认打开。

  • 下载ttt场景文件
  • 下载一个示例csv文件
  • 下载youBot移动基础的基本动作.zip文件。该文件夹有youBot移动底座的五个基本动作,显示与移动底座的某些基本动作相关的正确的轮子动作。您可以通过比较您的车轮运动与这些.csv文件中的车轮运动来检查您的轮式移动基座运动学(或测距法)是否正确。
    • yb1.csv:恒速旋转到位(机器人左侧和右侧的轮子以相反的速度移动)。
    • yb2.csv:恒速前进运动(所有车轮以相同的速度运动)。
    • yb3.csv:恒速横向运动(对角上的轮子以相同的速度移动)。
    • yb4.csv:恒速对角线运动(车轮2和4以相同的速度运动,而车轮1和3静止不动)。
    • yb5.csv:恒速对角线运动(轮子1和3以相同的速度移动,而轮子2和4静止)。

场景5:CSV动作规划Kilobot

该场景使您可以使用图形搜索技术(如A *)在无向图上可视化运动规划。为了显现所设计的运动,我们使用的是kilobot机器人的尺寸的平面正方形环境中移动-0.5 <= X <= 0.5和-0.5 <= Y <= 0.5。障碍表示为圆柱体,而图形本身则表示为具有黄色边缘的蓝色节点。kilobot实际遵循的路径由绿色边缘表示,目标节点呈红色。看到右边的图片。

这个场景不会做运动计划。相反,它会显示您的运动计划器的输出。它期望您提供具有四个文件的文件夹的路径,名为nodes.csv,edges.csv,path.csv和obstacles.csv:

  • nodes.csv:如果图形有N个节点,那么这个文件有N行。每行都是表单ID,x,y,heuristic-cost-to-go。ID是节点的唯一整数ID号,这些ID号应取值1到N. x,y是平面中节点的(x,y)坐标。启发式成本即走是对从该节点到目标节点的最短路径(例如,到目标节点的欧几里德距离)的乐观近似。此信息对A星搜索非常有用,但未在路径的可视化中显示。
  • edges.csv:如果图形具有E边缘,则该文件具有E行。每行的格式为ID1,ID2,成本。ID1和ID2是由边连接的节点的节点ID。成本是穿越边缘的成本。如果您不希望显示边缘,则此文件可以为空。
  • path.csv:该文件指定图中的解决方案路径,它是单行,格式为ID1,ID2,...第一个数字是解决方案路径中第一个节点的ID,最后一个数字是解决方案路径中最后一个节点的ID。如果运动规划问题没有解决方案,则路径可以包含一个ID号,即机器人开始(和停留)的节点的ID。
  • obstacles.csv:该文件指定圆柱形障碍物的位置和直径。每行是x,y,直径,其中(x,y)是障碍物的中心,直径是障碍物的直径。如果没有障碍物,这个文件可以是空的。

没有什么能够阻止你在障碍物内提供节点或边缘的文件。path.csv文件当然是图搜索计划程序的输出。规划人员的输入可以是obstacle.csv文件,并且可以是开始节点和目标节点的位置规范,也可以是nodes.csv和edges.csv文件以及开始节点和目标节点的规范,也可以是是其他信息,取决于你的策划者。但是无论如何,这个场景需要上面的四个文件来进行可视化。

场景6:CSV移动操作youBot

这个场景有一个youBot移动机械手和一个立方体。预计youBot会拿起立方体并将其放在目标位置(“拾取和放置”)。此场景为用户指定的csv文件创建动画,其格式与上述相同,其中每行csv文件有13个变量:3个用于底盘配置,5个用于臂关节角度,4个用于轮角度,1个用于夹具状态(0 =打开,1 =关闭)。然而,与其他youBot csv动画场景不同的是,整个机器人现在可以响应,这意味着机器人的链接和底盘现在可以通过碰撞与世界或彼此进行交互。youBot和cube的抓手是动态建模的,以模拟实际的拾取和放置。换句话说,如果夹具没有正确关闭,它可能会滑落,

场景7:CSV动画MTB

这个场景模拟RRPR机器人。它动画一个包含关节角度轨迹的csv文件。csv文件的每一列是其中一个关节的关节角度/时间长度(按照RRPR的顺序)。单行csv文件表示机器人在特定时间的完整配置。棱柱接头(P)具有接头极限范围[0,0.2]。行之间假定的时间步长等于V-REP用于模拟的时间步长; 默认值是0.05秒。

在场景之间切换

停止按钮停止模拟当前场景,然后选择File>Open scene...。您也可以使用File>Open recent scene切换到您之前加载的场景。然后按下Play按钮来运行场景。或者,停止模拟,然后按Scenes顶部工具栏中的按钮查看哪些场景当前处于打开状态,并选择一个场景处于前景中。场景选择器工具栏按钮也可用于在打开的场景之间切换。在这里阅读更多。

录制电影

V-REP附带录像机。去Tools>Video recorder。您可能需要停止当前场景才能配置录像机。你可以在这里找到关于录制V-REP电影的更多信息:http : //www.coppeliarobotics.com/helpFiles/en/aviRecorder.htm

一个更简单的选择可能只是使用您的计算机的屏幕录制软件。在Mac上,您可以使用Quicktime。在Linux上,您可以使用SimpleScreenRecorderrecordMyDesktop。在Windows上,您可以使用屏幕录像机。或者你可能有自己的解决方案。

探索其他场景

我们鼓励您探索一些预先加载V-REP的(相当令人印象深刻的)场景。您可以scenes在V-REP目录下的目录中找到这些场景。运行和学习这些可以更好地了解V-REP功能并了解如何组合更复杂的场景。

有用的资源

--------

V-REP V3.5.0(2018年2月6日)

修复了一些错误。致谢Steffen Hemer,Fangyi Zhang,virgileDaugé,Riccardo Spica,Filipe Rocha,Jacob Huesman,Matthew Veres,Robert Lang和Florian Golemo帮助解决问题。所有平台上切换Qt 5.9.0 LTS。向BlueZero中间件添加了一个接口插件。BlueZero(或BØ)是一款跨平台的中间件,它提供了互连多个线程,多个进程甚至多台机器上运行的软件的工具。从脚本中,print()现在打印到状态栏,而不是控制台。这可以通过print = printToConsole进行恢复。printf()现在也被支持。这两种,印刷和printf现在也可以打印表的内容。增加了一个Lua Commander插件(read-eval-print loop),它在V-REP状态栏中添加了一个文本输入,允许在终端输入和执行Lua代码。该代码可以在沙盒脚本或V-REP中的任何其他活动脚本中运行。将与V-REP相关的所有源代码项目移至github。切换到Lua脚本的清洁API表示法:V-REP函数名称已移至sim。命名空间(例如simGetObjectHandle现在是sim.getObjectHandle),插件函数名称已经移动到特定的命名空间(例如simExtOMPL_createStateSpace现在是simOMPL.createStateSpace)。旧的API函数保持向后兼容的功能。嵌入式脚本中的已知API函数会根据该符号更改自动进行调整。这使得此V-REP版本保存的场景和模型与旧版V-REP版本不兼容,因此请务必备份您的场景和模型。这种自动API函数调整可被禁用,以 changeScriptCodeForNewApiNotation 在文件系统/ usrset.txt。通过使用预定义的函数(例如,sysCall_initsysCall_actuation等),切换到调用脚本代码的更简洁的方式。查看此示例)。脚本现在应该只包含函数以外的其他内容。但是,为了向后兼容,仍旧支持调用脚本的旧方式(但请确保不要混合使用这两种方法)。新的联合回调函数已经实现并且在非线程子脚本定制脚本中得到支持。旧的共同控制回调脚本的功能不应再使用,并且不能访问了通过图形用户界面,但仍可运行(您可以暂时让它通过再次访问enableOldJointCallbackScriptEdition系统/ usrset.txt)新的联系人回调函数已实现,并且在非线程子脚本自定义脚本中受支持。老接触回调脚本的功能不应再使用,并且不能访问了通过图形用户界面,但仍可运行(您可以暂时让它通过再次访问enableOldCustomContactHandlingEdition系统/ usrset.txt)新的小部件和API函数已添加到自定义UI中。更新了v-repNotepad ++。zip的内容,其中包含Notepad ++的所有与V-REP相关的calltips和语法高亮关键字。每个场景对象现在也有一个唯一的替代名称,可用于自定义应用程序,并且不会干扰V-REP的相关代码的对象句柄检索sim.getObjectNamesim.setObjectNamesim.getObjectHandle现在可以与sim.handleflag_altname一起使用。添加了sim.getShapeViz,它允许检索形状的网格和纹理信息增加了一个工具,允许通过触发每个单独的模拟步骤来完成模拟。也可以用于替换远程API或ROS同步模式。该工具位于Models / tools / simulation stepper tool.ttm中。增加了一个视觉传感器模型,从blob检测中提取3D位置:模型/组件/传感器/ Blob到3D position.ttm。增加了一个包装LibICP插件(Andreas Geiger提供的迭代最近点匹配库)增加了一个包装OpenCV库的插件,提供基本的图像处理和绘图功能断开OMPL API函数的兼容性:大多数函数不再返回任何值(但可能会触发异常),其他函数返回稍微不同的值,即:simOMPL.computesimOMPL.solvesimOMPL.getDatasimOMPL.getPathsimOMPL.readState断开simExtSurfaceReconstruction_reconstruct API函数的兼容性,该函数被替换为simSurfRec.reconstruct_scale_space。增加了对远程API中共享内存通信的支持。代码由Benjamin Navarro提供。通过指定负端口号,将使用共享内存而不是套接字通信。增加了以下API函数:sim.executeScriptStringsim.getApiFuncsim.getApiInfosim.setModuleInfosim.getModuleInfo。V-REP的Lanelet插件由CándidoOtero开发,可在此处找到现代机器人技术:机械学,计划与控制,由Kevin M. Lynch教授和Frank C. Park教授撰写的新教材可在此处免费下载,也可作为精装本购买。一些V-REP例子和场景都可以在这里

----

上图为Ubuntu 16.04 + ROS Kinetic + Matlab。

----(^_^)----

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券