在ROS Melodic中推荐使用catkin_tool:
$ sudo apt-get install python-catkin-tools

使用catkin build编译ros_tutorials,简洁方便:


这是ROS最基础最核心的教程。ros_tutorials主要有roscpp,rospy和turtlesim三个部分。

围绕主题(topic)和服务(service)等展开,其中rospy源码有序号,推荐先对应学习python版本,然后依据序号顺序学习C++版本:


以advanced_publish.py为例:

## talker demo that published std_msgs/ColorRGBA messages
## to the 'color' topic. To see these messages,type:
##   rostopic echo color
## this demo shows some of the more advanced APIs in rospy.

import rospy
from std_msgs.msg import ColorRGBA

def talker():
    topic = 'color'
    pub = rospy.Publisher(topic,ColorRGBA,queue_size=10)
    rospy.init_node('color_talker',anonymous=True)
    print "\n\nNode running. To see messages,please type\n\t'rostopic echo %s'\nIn another window\n\n"%(rospy.resolve_name(topic))
    while not rospy.is_shutdown():

        # publish with in-order initialization of arguments (r,g,b,a)
        pub.publish(1,2,3,4)
        rospy.sleep(.5)

        # publish with a=1,use default values for rest
        pub.publish(a=1.0)
        rospy.sleep(.5)

        # print the number of subscribers
        rospy.loginfo("I have %s subscribers"%pub.get_num_connections())
        
if __name__ == '__main__':
    try:
        talker()
    except rospy.ROSInterruptException: pass

代码关键位置都是有英文注释,订阅节点后,会显示节点订阅数。



通过运行节点,阅读源码,可以扎实基础,便于后续使用。当然也可以使用Matlab:



----

不知不觉,ROS都已经推出第三个长期支持版本了,从indigo,kinetic到melodic。基础教程的改变其实并不大,核心的内容没有太多变化,从日常使用而言无非是支持功能包的多寡和习惯吧,还是一样的catkin_make(ROS1),而非ament build(ROS2)。最近一次参加ROS和机器人相关的研讨会,不少同仁反馈基础内容教程碎片化严重。看起来好像现在ROS学习的资料多起来了,其实去除同质化和雷同化的部分,其本质内容又有多少呢。在易科Top博士的鼓励和指引下,进入到ROS和机器人开源知识的分享中,同时也是工作的需要,想在高校开设一系列理论与实践结合的有趣又实用的机器人课程。这期间翻译了一些书籍,由于时间和其他一些原因,质量不容乐观,在此深表歉意,并在博客中依据反馈进行了修正和更新。

机器人不是一门可以速成的学科,需要广泛的知识储备和积累,那些曾经或者现存的大神们都是身经百战和久经磨砺的。所有的经验都只能当作故事,自主学习的过程最为重要,不论是讲授知识还是传授方法和技巧,都是讲师个人的体会,只有自己想明白究竟要学什么要做什么,这是最为重要的,毕竟讲师不懂也不可能明白学员的初心是什么。当下的教育无法避免商业和市场的冲击,在洪流中坚守的力量虽然微弱但顽强不屈。博客原本是服务教学的手段,针对课堂内容的补充和测试,有些删减,有些资源莫名奇妙就失效了。

这些年逐渐懂得,自己明白和讲解明白是两回事,讲解明白和学生明白又是两回事,学生明白到灵活应用更是两回事,再从应用到创新呢。人的认知规律不是线性系统,教育心理学,认知心理学等非常重要,技术仅仅是一种手段而已,主体是知识和方法,主角是学生,教师最多也就是桥梁的作用,连接两端。

总结上述:简即是多,寓教于乐。


了解如何开始使用机器人操作系统(ROS)进行机器人编程。针对ROS,Linux和Python中的真正初学者,本简短指南将展示如何开始自己的机器人项目。

ROS是用于编写机器人软件的开放源代码和灵活框架。通过实践方法和示例项目, 本书 将使您能够开始第一个机器人项目。您将学习使用ROS的基本概念,并开始使用C ++和Python编写ROS API。
你会学到什么
  • 安装ROS
  • 回顾ROS的基本概念
  • 在ROS中处理常用的命令
  • 使用ROS从头开始的制作移动机器人
本书目标对象
绝对的初学者,很少或没有编程经验,希望学习机器人编程。

----

在Ubuntu 18.04 LTS入门ROS Melodic版机器人操作系统的更多相关文章

  1. xcode-server – Xcode服务器在哪里存储机器人?如何将机器人转移到另一台机器上?

    我使用Xcode和Xcode服务器创建了多个机器人.我想备份这些机器人并将其转移到另一台机器上.如何才能做到这一点?

  2. ios – Xcode服务:选择Git Branch

    我开始在小牛身上建立新的Xcode服务.我创建了一个新的机器人–但是我没有要求它应该构建的分支机构?我不仅要建立主人,而且要建立不同的分支.解决方法在当前版本中,当您在Xcode中创建机器人时,它将链接到当前活动的分支.您可以轻松地验证它从Web界面,当您浏览到机器人–>Bot设置.或者,您可以通过Web界面创建机器人,您可以在其中指定分支名称纯文本.

  3. 我们如何在iOS应用程序中集成Captcha?

    我在iOS应用程序中加入了Captcha,但没有找到任何相关的方法.即使我注册了reCAPTCHA,搜索了Captcha的插件是否适用于iOS?我没有发现任何iOS插件.在RND的某个地方,我知道“它不需要移动应用程序”,但客户端希望Captcha在他的应用程序,所以我想知道:>是否可以在iOS应用程序/移动应用程序中集成Captcha:>如果是的话那么那么将它相关的方法是什么呢?

  4. ios – 如何在Xcode中创建机器人?获取“创建机器人需要一个受源代码控制的项目”.

    ]单击取消或配置遥控器会打开我的文件夹的配置,我看到我的遥控器添加得很好.我还尝试使用不同的名称再次添加远程存储库.我该如何前进?解决方法似乎这个问题发生在没有名为“origin”的远程时,因为这就是Xcode正在寻找的东西.当我将我的遥控器重命名为原点时,Xcode停止了抱怨,让我通过XcodeUI添加机器人.

  5. Swift 开发 Uther 小记 - 一个简单的蠢萌机器人

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  6. android – Webview没有在某些机器人上显示Twitter

    这是一个模糊的,可能是硬件相关的错误.我有一个webview试图显示这样的Twitter提要:http://twitter.com/HP该视图在Droid2上工作正常,但在Droid和DroidX上失败.它只显示twitter徽标并永久挂起,而不是显示页面.关于设备:所有运行相同的软件和Android2.2.但是,他们正在运行不同风格的Android2.2.DroidX:2.2.1机器人1:2.2

  7. Lottie动画慢机器人

    我正在使用Airbnb的新库Lottie在我的应用程序中制作动画.动画由70kbJSON文件和328kb图像文件夹组成.这个文件夹中有13个小png.根据GitHub回购的指示,我宣布我的观点是这样的然后,在我调用的相关java类上:但是,我有一个问题.动画很笨拙,而且我的记忆用量在屋顶上跳跃.它从13MB到89,所有这些都发生在主线程上.你能告诉我有没有办法解决这个问题?

  8. 如何录制视频内部发生的事情? (机器人)

    是否可以将Android中某些View中的所有操作记录为视频?也许使用C/C++或其他任何东西?我知道有使用shell记录的方法,但需要root.没有它会更好.我们也将从SDKVersion16开始.解决方法您可以使用javacv库来组合从视图中获取的一组位图;代码看起来像这样:这里有一个关于如何记录的fullexample

  9. 如何找到未翻译的字符串? (机器人)

    我有一个应该支持几种不同语言的应用程序.有时我会忘记为其中一种语言翻译.有没有找到在strings.xml文件之一中没有翻译的字符串的原因?

  10. 如何在android中删除FAB按钮的自动填充?

    我正在使用FAB按钮获取个人资料图片,但它已经有了一些填充.我使用以下代码创建FAB按钮.

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部