Browse Source

init commit

fishros 4 years ago
commit
1421df9ed0
100 changed files with 1434 additions and 0 deletions
  1. 80 0
      .gitignore
  2. 97 0
      README.en.md
  3. 97 0
      README.md
  4. 0 0
      docs/.nojekyll
  5. 1 0
      docs/CNAME
  6. 97 0
      docs/README.md
  7. BIN
      docs/README/imgs/image-20210726192026520.png
  8. 67 0
      docs/_sidebar.md
  9. 58 0
      docs/chapt1/1.1ROS2的前世今生.md
  10. BIN
      docs/chapt1/1.1ROS2的前世今生/imgs/image-20210717140505596.png
  11. BIN
      docs/chapt1/1.1ROS2的前世今生/imgs/image-20210717150453689.png
  12. 100 0
      docs/chapt1/1.2ROS与ROS2对比.md
  13. BIN
      docs/chapt1/1.2ROS与ROS2对比/imgs/20210714103924121.jpg
  14. BIN
      docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210717150453689.png
  15. BIN
      docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210717151353613.png
  16. BIN
      docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210717153612576.png
  17. BIN
      docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210719213126060.png
  18. 124 0
      docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇.md
  19. BIN
      docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210717153837468.png
  20. BIN
      docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210717153854839.png
  21. BIN
      docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210719035457656.png
  22. BIN
      docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210719035457657
  23. 73 0
      docs/chapt1/1.4扩展阅读_中间件.md
  24. BIN
      docs/chapt1/1.4扩展阅读_中间件/imgs/v2-471abbce0a08b249637dc603f56dc9cf_b.png
  25. BIN
      docs/chapt1/1.4扩展阅读_中间件/imgs/v2-9ac28902f8d0032c6d4d9ba13b1e4f6b_720w.png
  26. BIN
      docs/chapt1/1.4扩展阅读_中间件/imgs/v2-e6dbd2aa59c57d6bda2fcb25d83f1a34_b.png
  27. 32 0
      docs/chapt1/章节介绍.md
  28. 136 0
      docs/chapt2/2.1系统安装_虚拟机版本.md
  29. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719182446728.png
  30. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719182945393.png
  31. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719184225854.png
  32. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719184450785.png
  33. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719184758743.png
  34. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185440656.png
  35. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185458219.png
  36. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185545384.png
  37. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185556305.png
  38. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185604490.png
  39. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185613586.png
  40. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185625695.png
  41. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185706443.png
  42. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185758076.png
  43. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185817378.png
  44. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185845413.png
  45. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185912397.png
  46. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185950677.png
  47. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719190042507.png
  48. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719190205318.png
  49. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719190240573.png
  50. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191648124.png
  51. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191817025.png
  52. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191850033.png
  53. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191919143.png
  54. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719192023103.png
  55. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719192050412.png
  56. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719192549058.png
  57. BIN
      docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210720102022189.png
  58. 99 0
      docs/chapt2/2.2系统安装_双系统.md
  59. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193111227.png
  60. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193146900.png
  61. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193223405.png
  62. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193307750.png
  63. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193358390.png
  64. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719195021242.png
  65. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210719195052633.png
  66. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101215192.png
  67. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101307041.png
  68. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101443876.png
  69. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101631507.png
  70. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101724147.png
  71. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101926724.png
  72. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210723100051134.png
  73. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210723100300549.png
  74. BIN
      docs/chapt2/2.2系统安装_双系统/imgs/image-20210723134048243.png
  75. 100 0
      docs/chapt2/2.3ROS2的安装.md
  76. BIN
      docs/chapt2/2.3ROS2的安装/imgs/image-20210719200201557.png
  77. BIN
      docs/chapt2/2.3ROS2的安装/imgs/image-20210719205122068.png
  78. BIN
      docs/chapt2/2.3ROS2的安装/imgs/image-20210720102200144.png
  79. BIN
      docs/chapt2/2.3ROS2的安装/imgs/image-20210720102349238.png
  80. BIN
      docs/chapt2/2.3ROS2的安装/imgs/image-20210720102633398.png
  81. 116 0
      docs/chapt2/2.4动手玩ROS2.md
  82. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210720114613697.png
  83. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210720123734477.png
  84. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210720124022925.png
  85. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210720125026860.png
  86. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210907114613697.png
  87. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210907123734477.png
  88. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210907124022925.png
  89. BIN
      docs/chapt2/2.4动手玩ROS2/imgs/image-20210907134048243.png
  90. 157 0
      docs/chapt2/2.5VsCode编译器安装与配置.md
  91. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210719194446610.png
  92. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720104733799.png
  93. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720113233035.png
  94. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720113406478.png
  95. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720113510268.png
  96. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135816630.png
  97. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135841441.png
  98. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135911694.png
  99. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135941635.png
  100. BIN
      docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720140008256.png

+ 80 - 0
.gitignore

@@ -0,0 +1,80 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# TypeScript v1 declaration files
+typings/
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+
+# next.js build output
+.next
+
+# nuxt.js build output
+.nuxt
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/

+ 97 - 0
README.en.md

@@ -0,0 +1,97 @@
+# 动手学ROS2
+
+各位同学大家好,我是小鱼,很高兴能和你一起学习机器人,学习ROS2。
+
+## 1.为什么要学习ROS2?
+
+随着智能制造2025的到来,国内机器人行业也随之兴起,越来越多的小伙伴接触并学习了ROS,国内关于ROS的教程也越来越多。
+
+ROS2作为第二代机器人操作系统,比ROS更加的强大,有一些在ROS中不好实现或者无法实现的功能,在ROS2中就可以找到方法。
+
+虽然ROS2很强大,但国内相关教程较少,影响大家对ROS2的了解和学习。所以本课程从基础开始讲起,带大家一起`动手学ROS2`。
+
+> 本教程文字版课程还在随着ROS2的更新,不断的更新中,大家可以关注小鱼个人的微信公众号《鱼香ROS》,加入技术交流群第一时间获取更新通知
+
+## 2.学了本课程能够做什么?
+
+本课程为机器人学习实践基础课程,可以为您进一步学习机器人技术奠定基础,比如:
+
+- 基于ROS2的移动机器人导航仿真
+- 基于ROS2的Moveit2的机械臂运动规划
+- 基于ROS2的多机器人协同研究等。
+
+在本课程中你可以收获以下知识:
+
+- 掌握ROS2的概念,了解ROS2和ROS1之间的异同
+- 掌握安装Ubuntu系统和ROS2
+- 掌握ROS2节点和工作空间概念及编译工具的使用
+- 学会编写ROS2的C++和Python节点
+- 掌握ROS2话题和服务通信机制以及Python和C++实现
+- 掌握ROS2参数通信机制并了解Action通信机制
+- 掌握ROS2常用工具如RQT、ROS2bag、ROS2launch等
+
+
+## 3.本教程适合学习对象有哪些?
+
+本教程会从最基础的部分开始讲起,章节中会穿插扩展阅读部分,帮助大家学习掌握,本教程主要适合人群有:
+
+- 机器人相关的大学生和的研究生们
+
+- 已有ROS基础想要了解ROS2的在职工程师
+
+- 想要转行从事机器人的小伙伴
+
+- 其他想要学习了解机器人技术的同学们
+
+### 3.1 没有机器人基础可以学习吗?
+
+没有任何问题,即使你不是机器人相关专业也没事,小鱼会在教程中给大家讲解。
+
+### 3.2 没有编程基础可以学习吗?
+
+本教程使用Python和C++编程语言实现,大家只需要掌握其中之一即可。
+
+如果没有任何编程基础的小伙伴,可以简单的学习一下Python语言,两三天就可以上岗了。
+
+
+## 4.课程目录
+
+## 4.1 一期课程 
+##### 本教程一期为1到6章为基础环节,主要介绍了ROS2的基本使用
+
+
+- 第 1 章 ROS2介绍
+- 第 2 章 准备环境与安装ROS2
+- 第 3 章 ROS2基础知识
+- 第 4 章 ROS2通信机制(话题与服务)
+- 第 5 章 ROS2通信机制(参数与Action)
+- 第 6 章 ROS2工具介绍
+
+
+### 4.2 二期课程安排
+
+#### 4.2.1 机器人进阶环节
+
+- 第 7 章 机器人基础
+- 第 8 章 机器人建模
+- 第 9 章 机器人仿真
+
+##### 4.2.2 教程10到11章为实战环节
+
+- 第 10 章 综合案例一:SLAM导航仿真
+- 第 11 章 综合案例二:MoveIt机械臂建模
+
+
+### 5.关于小鱼
+
+小鱼目前主要在做基于ROS的复合机器人相关的工作,坐标深圳,有时间的小伙伴周末一起来喝个茶。
+
+最后欢迎关注小鱼的微信公众号《鱼香ROS》,和小鱼一起学习ROS2。公众号下方有小鱼的个人微信和机器人技术交流群,有问题可以联系。
+
+![](D:/d2l-ros2/docs/README/imgs/image-20210726192026520.png)
+
+
+#### 参考资料
+
+- ROS2官方文档:http://docs.ros.org/en/foxy/index.html
+- ROS2教学视频:https://www.bilibili.com/video/BV19U4y1n7CQ

+ 97 - 0
README.md

@@ -0,0 +1,97 @@
+# 动手学ROS2
+
+各位同学大家好,我是小鱼,很高兴能和你一起学习机器人,学习ROS2。
+
+## 1.为什么要学习ROS2?
+
+随着智能制造2025的到来,国内机器人行业也随之兴起,越来越多的小伙伴接触并学习了ROS,国内关于ROS的教程也越来越多。
+
+ROS2作为第二代机器人操作系统,比ROS更加的强大,有一些在ROS中不好实现或者无法实现的功能,在ROS2中就可以找到方法。
+
+虽然ROS2很强大,但国内相关教程较少,影响大家对ROS2的了解和学习。所以本课程从基础开始讲起,带大家一起`动手学ROS2`。
+
+> 本教程文字版课程还在随着ROS2的更新,不断的更新中,大家可以关注小鱼个人的微信公众号《鱼香ROS》,加入技术交流群第一时间获取更新通知
+
+## 2.学了本课程能够做什么?
+
+本课程为机器人学习实践基础课程,可以为您进一步学习机器人技术奠定基础,比如:
+
+- 基于ROS2的移动机器人导航仿真
+- 基于ROS2的Moveit2的机械臂运动规划
+- 基于ROS2的多机器人协同研究等。
+
+在本课程中你可以收获以下知识:
+
+- 掌握ROS2的概念,了解ROS2和ROS1之间的异同
+- 掌握安装Ubuntu系统和ROS2
+- 掌握ROS2节点和工作空间概念及编译工具的使用
+- 学会编写ROS2的C++和Python节点
+- 掌握ROS2话题和服务通信机制以及Python和C++实现
+- 掌握ROS2参数通信机制并了解Action通信机制
+- 掌握ROS2常用工具如RQT、ROS2bag、ROS2launch等
+
+
+## 3.本教程适合学习对象有哪些?
+
+本教程会从最基础的部分开始讲起,章节中会穿插扩展阅读部分,帮助大家学习掌握,本教程主要适合人群有:
+
+- 机器人相关的大学生和的研究生们
+
+- 已有ROS基础想要了解ROS2的在职工程师
+
+- 想要转行从事机器人的小伙伴
+
+- 其他想要学习了解机器人技术的同学们
+
+### 3.1 没有机器人基础可以学习吗?
+
+没有任何问题,即使你不是机器人相关专业也没事,小鱼会在教程中给大家讲解。
+
+### 3.2 没有编程基础可以学习吗?
+
+本教程使用Python和C++编程语言实现,大家只需要掌握其中之一即可。
+
+如果没有任何编程基础的小伙伴,可以简单的学习一下Python语言,两三天就可以上岗了。
+
+
+## 4.课程目录
+
+## 4.1 一期课程 
+##### 本教程一期为1到6章为基础环节,主要介绍了ROS2的基本使用
+
+
+- 第 1 章 ROS2介绍
+- 第 2 章 准备环境与安装ROS2
+- 第 3 章 ROS2基础知识
+- 第 4 章 ROS2通信机制(话题与服务)
+- 第 5 章 ROS2通信机制(参数与Action)
+- 第 6 章 ROS2工具介绍
+
+
+### 4.2 二期课程安排
+
+#### 4.2.1 机器人进阶环节
+
+- 第 7 章 机器人基础
+- 第 8 章 机器人建模
+- 第 9 章 机器人仿真
+
+##### 4.2.2 教程10到11章为实战环节
+
+- 第 10 章 综合案例一:SLAM导航仿真
+- 第 11 章 综合案例二:MoveIt机械臂建模
+
+
+### 5.关于小鱼
+
+小鱼目前主要在做基于ROS的复合机器人相关的工作,坐标深圳,有时间的小伙伴周末一起来喝个茶。
+
+最后欢迎关注小鱼的微信公众号《鱼香ROS》,和小鱼一起学习ROS2。公众号下方有小鱼的个人微信和机器人技术交流群,有问题可以联系。
+
+![](D:/d2l-ros2/docs/README/imgs/image-20210726192026520.png)
+
+
+#### 参考资料
+
+- ROS2官方文档:http://docs.ros.org/en/foxy/index.html
+- ROS2教学视频:https://www.bilibili.com/video/BV19U4y1n7CQ

+ 0 - 0
docs/.nojekyll


+ 1 - 0
docs/CNAME

@@ -0,0 +1 @@
+d2lros2.fishros.com

+ 97 - 0
docs/README.md

@@ -0,0 +1,97 @@
+# 动手学ROS2
+
+各位同学大家好,我是小鱼,很高兴能和你一起学习机器人,学习ROS2。
+
+## 1.为什么要学习ROS2?
+
+随着智能制造2025的到来,国内机器人行业也随之兴起,越来越多的小伙伴接触并学习了ROS,国内关于ROS的教程也越来越多。
+
+ROS2作为第二代机器人操作系统,比ROS更加的强大,有一些在ROS中不好实现或者无法实现的功能,在ROS2中就可以找到方法。
+
+虽然ROS2很强大,但国内相关教程较少,影响大家对ROS2的了解和学习。所以本课程从基础开始讲起,带大家一起`动手学ROS2`。
+
+> 本教程文字版课程还在随着ROS2的更新,不断的更新中,大家可以关注小鱼个人的微信公众号《鱼香ROS》,加入技术交流群第一时间获取更新通知
+
+## 2.学了本课程能够做什么?
+
+本课程为机器人学习实践基础课程,可以为您进一步学习机器人技术奠定基础,比如:
+
+- 基于ROS2的移动机器人导航仿真
+- 基于ROS2的Moveit2的机械臂运动规划
+- 基于ROS2的多机器人协同研究等。
+
+在本课程中你可以收获以下知识:
+
+- 掌握ROS2的概念,了解ROS2和ROS1之间的异同
+- 掌握安装Ubuntu系统和ROS2
+- 掌握ROS2节点和工作空间概念及编译工具的使用
+- 学会编写ROS2的C++和Python节点
+- 掌握ROS2话题和服务通信机制以及Python和C++实现
+- 掌握ROS2参数通信机制并了解Action通信机制
+- 掌握ROS2常用工具如RQT、ROS2bag、ROS2launch等
+
+
+## 3.本教程适合学习对象有哪些?
+
+本教程会从最基础的部分开始讲起,章节中会穿插扩展阅读部分,帮助大家学习掌握,本教程主要适合人群有:
+
+- 机器人相关的大学生和的研究生们
+
+- 已有ROS基础想要了解ROS2的在职工程师
+
+- 想要转行从事机器人的小伙伴
+
+- 其他想要学习了解机器人技术的同学们
+
+### 3.1 没有机器人基础可以学习吗?
+
+没有任何问题,即使你不是机器人相关专业也没事,小鱼会在教程中给大家讲解。
+
+### 3.2 没有编程基础可以学习吗?
+
+本教程使用Python和C++编程语言实现,大家只需要掌握其中之一即可。
+
+如果没有任何编程基础的小伙伴,可以简单的学习一下Python语言,两三天就可以上岗了。
+
+
+## 4.课程目录
+
+## 4.1 一期课程 
+##### 本教程一期为1到6章为基础环节,主要介绍了ROS2的基本使用
+
+
+- 第 1 章 ROS2介绍
+- 第 2 章 准备环境与安装ROS2
+- 第 3 章 ROS2基础知识
+- 第 4 章 ROS2通信机制(话题与服务)
+- 第 5 章 ROS2通信机制(参数与Action)
+- 第 6 章 ROS2工具介绍
+
+
+### 4.2 二期课程安排
+
+#### 4.2.1 机器人进阶环节
+
+- 第 7 章 机器人基础
+- 第 8 章 机器人建模
+- 第 9 章 机器人仿真
+
+##### 4.2.2 教程10到11章为实战环节
+
+- 第 10 章 综合案例一:SLAM导航仿真
+- 第 11 章 综合案例二:MoveIt机械臂建模
+
+
+### 5.关于小鱼
+
+小鱼目前主要在做基于ROS的复合机器人相关的工作,坐标深圳,有时间的小伙伴周末一起来喝个茶。
+
+最后欢迎关注小鱼的微信公众号《鱼香ROS》,和小鱼一起学习ROS2。公众号下方有小鱼的个人微信和机器人技术交流群,有问题可以联系。
+
+![](D:/d2l-ros2/docs/README/imgs/image-20210726192026520.png)
+
+
+#### 参考资料
+
+- ROS2官方文档:http://docs.ros.org/en/foxy/index.html
+- ROS2教学视频:https://www.bilibili.com/video/BV19U4y1n7CQ

BIN
docs/README/imgs/image-20210726192026520.png


+ 67 - 0
docs/_sidebar.md

@@ -0,0 +1,67 @@
+- [动手学ROS2-Foxy](README.md)
+
+- 第 1 章 ROS2介绍
+  - [第1章 章节介绍](chapt1/章节介绍.md)
+  - [1.1 ROS2的前世今生](chapt1/1.1ROS2的前世今生.md) 
+  - [1.2 ROS与ROS2对比](chapt1/1.2ROS与ROS2对比.md) 
+  - [扩展阅读1:中间件](chapt1/1.4扩展阅读_中间件.md) 
+
+- 第 2 章 准备环境与安装ROS2 
+  - [第2章 章节介绍](chapt2/章节介绍.md) 
+  - [2.1 系统安装虚拟机](chapt2/2.1系统安装_虚拟机版本.md)  
+  - [2.2 系统安装虚拟机](chapt2/2.1系统安装_虚拟机版本.md)  
+  <!-- - [2.2 系统安装双系统](chapt2/2.2系统安装_双系统.md)  -->
+  - [2.3 ROS2的安装](chapt2/2.3ROS2的安装.md) 
+  - 2.4 动手玩ROS2
+    - [2.4.1 动手玩ROS2之你说我听](chapt2/2.4动手玩ROS2.md)  
+    - [2.4.2 动手玩ROS2之小乌龟模拟器](chapt2/2.4动手玩ROS2.md)  
+  - [2.5 VsCode编译器安装与配置](chapt2/2.5VsCode编译器安装与配置.md) 
+  <!-- - [2.6 扩展资料](chapt2/2.6扩展资料.md)  -->
+- 第 3 章 动手学ROS2基础
+  - [第3章 章节介绍](chapt3/章节介绍.md) 
+  - [3.1 ROS2节点介绍](chapt3/3.1ROS2节点介绍.md)
+  - [3.2 ROS2工作空间与功能包](chapt3/3.2ROS2工作空间介绍.md)
+  - [3.3 ROS2的编译器Colcon](chapt3/3.3ROS2的编译器Colcon.md)
+    - [小练习:下载编译-小乌龟求偶大作战](chapt3/3.4小游戏_小乌龟求偶大作战.md) 
+  - [3.5 手撸一个节点Python版本](chapt3/3.5手撸一个节点Python版本.md) 
+  - [3.6 手撸一个节点C++版](chapt3/3.6手撸一个节点C++版.md) 
+  <!-- - [3.7 扩展阅读](chapt3/3.7扩展阅读.md)  -->
+- 第 4 章 通信机制上(话题与服务)
+  - [章节介绍](chapt4/章节介绍.md) 
+  - [4.1 ROS2话题介绍](chapt4/4.1ROS2话题介绍.md) 
+  - 4.2 ROS2话题编程实现
+    - [4.2 话题通信实现(Python)](chapt4/4.2话题通信实现(Python).md) 
+    - [4.3 ROS2话题通信(C++)](chapt4/4.3ROS2话题通信(C++).md) 
+    - [4.4 话题小练习之李三白嫖](chapt4/4.4话题小练习-李三白嫖.md) 
+  - 4.3 接口介绍与自定义接口
+    - [4.5 ROS2通信接口介绍](chapt4/4.5ROS2通信接口介绍.md) 
+    - [4.6 ROS2自定义话题接口](chapt4/4.6ROS2自定义话题接口.md) 
+  - [4.4 ROS2服务介绍](chapt4/4.7ROS2服务介绍.md) 
+  - 4.5 ROS2服务编程实现
+    - [4.8 自定义服务接口](chapt4/4.8自定义服务接口.md) 
+    - [4.9 服务实现(Python)](chapt4/4.9服务实现(Python).md) 
+    - [4.10 服务实现(C++)](chapt4/4.10服务实现(C++).md) 
+  - [4.6 话题VS服务](chapt4/4.12话题VS服务.md) 
+  - [小练习1:自定义话题通信(python)](chapt4/4.11自定义话题通信(python).md) 
+  - [扩展阅读2:原始数据类型与包装类型](chapt4/4.13扩展阅读原始数据类型与包装类型.md) 
+- 第 5 章 通信机制下(参数与Action)
+  -  [章节介绍](chapt5/章节介绍.md)  
+  -  [5.1 ROS2参数介绍](chapt5/5.1ROS2参数介绍.md) 
+  -  [5.2 使用Python玩转参数](chapt5/5.2使用Python玩转参数.md) 
+  -  [5.3 使用C++玩转参数](chapt5/5.3使用C++玩转参数.md) 
+  -  [5.4 ROS2_Action介绍](chapt5/5.4ROS2_Action介绍.md) 
+    -  [5.5 Action服务端C++实现](chapt5/5.5Action服务端C++实现.md) 
+    -  [5.6 Action客户端C++实现](chapt5/5.6Action客户端C++实现.md) 
+    -  [5.7 Action服务端Python实现](chapt5/5.7Action服务端Python实现.md) 
+    -  [5.8 Action客户端Python实现](chapt5/5.8Action客户端Python实现.md) 
+  -  [5.5 ROS2通信机制总结篇](chapt5/5.9ROS2通信机制大总结.md) 
+  <!-- -  [源码篇-参数源码](chapt5/源码篇-参数源码.md)  -->
+  <!-- -  [源码篇-Action源码](chapt5/源码篇-Action源码.md)  -->
+- 第 6 章 动手学ROS2常用工具
+  -  [章节介绍](chapt6/章节介绍.md) 
+  -  [6.1 ROS2接点管理之launch文件](chapt6/6.1ROS2接点管理之launch文件.md) 
+  -  [6.2 时光记录仪之rosbag2](chapt6/6.2时光记录仪之rosbag2.md) 
+  -  [6.3 RQT工具](chapt6/6.3RQT工具.md) 
+  -  [6.4 RVIZ2](chapt6/6.4RVIZ2.md) 
+  -  [6.5 ROS2常用指令](chapt6/6.5ROS2常用指令.md) 
+  -  [6.6 gazebo介绍](chapt6/6.6gazebo介绍.md) 

+ 58 - 0
docs/chapt1/1.1ROS2的前世今生.md

@@ -0,0 +1,58 @@
+# 1.1 ROS2的前世今生
+
+要说ROS2,那就不得不提起ROS,ROS就是传说中的机器人操作系统,英文全称(Robot Operating System),但ROS本身并不是一个操作系统,而是可以安装在现在已有的操作系统上(Linux、Windows、Mac)上的**软件库和工具集**。
+
+ROS出生于2007年,ROS的出现解决了机器人各个组件之间的通信问题,同时基于ROS的完善的通信机制,越来越多的优秀的机器人算法集成到了ROS中来。
+
+现在的ROS功能已经变得非常的丰富和强大。但随着对ROS功能上要求越来越多,一些原始的架构和设计不能够满足目前的使用需求,这也是ROS2出现的原因。
+
+ROS2继承了ROS原有的优秀之处,同时又带来了很多新的功能,ROS2相对于ROS更加的强大。
+
+
+## 1.ROS为什么会出现?
+
+> ROS的设计目的是:简化在各种机器人平台上创建复杂而强大的机器人行为的任务
+
+在ROS没有出现之前,做一个机器人是非常复杂的一件事情,因为一个机器人需要涉及到多个部分,而且这些部分之间还要进行通信。
+
+例如设计一个像下图一样的轮式移动机器人,我们对其进行拆解。可以分为**感知、决策、控制**三个部分。
+
+![image-20210717150453689](1.1ROS2的前世今生/imgs/image-20210717150453689.png)
+
+
+- **感知部分**有:激光雷达、深度相机、IMU、里程计、碰撞感知
+- **决策部分**有:建图、路径规划(navigation)算法、定位算法
+- **控制部分**有:轮子驱动
+
+
+
+机器人复杂之处就在于此,如果想要整个机器人可以跑起来,那么必须要有一个东西将上面的几个部分合理的连接到一起,这个东西就是ROS。
+
+ROS的作用就像我们的身体的神经系统一样,通过神经系统将我们身体的各个部分接入大脑。
+
+
+
+### ROS2很年轻吗?
+
+答案并不是,ROS2第一个`alpha1 - alpha8`版本从2015年8月31号就开始了,截至到目前(2021年7月)已经发布了11个版本(9个已经不再更新),所以ROS并不年轻。
+
+### 小鱼会选择哪个版本进行讲解?
+
+截至到现在,国内包括目前网上教程最多的`Dashing`版本截至到今年(2021)的5月份官方也不再更新了。
+
+所以本教程将会采用的版本为ros2目前第一个较长期(到2023年5月)支持的`foxy`版本进行讲解。
+
+
+### ROS2版本对照表
+
+![image-20210717140505596](1.1ROS2的前世今生/imgs/image-20210717140505596.png)
+
+
+
+
+
+
+
+参考资料:
+
+ROS2官方更新计划:http://docs.ros.org/en/foxy/Releases.html

BIN
docs/chapt1/1.1ROS2的前世今生/imgs/image-20210717140505596.png


BIN
docs/chapt1/1.1ROS2的前世今生/imgs/image-20210717150453689.png


+ 100 - 0
docs/chapt1/1.2ROS与ROS2对比.md

@@ -0,0 +1,100 @@
+# 1.2 ROS与ROS2对比
+
+经过上一节的学习,相信你已经对ROS和ROS2的发展有了一定的了解,本节小鱼将给大家从多个角度讲解ROS和ROS2的区别之处。
+
+上一节说过,ROS的设计目的是**简化在各种机器人平台上创建复杂而强大的机器人行为的任务**,既然ROS已经基本解决了这个问题,那么为什么还有ROS2呢?
+
+
+
+## 1.既然ROS那么强大了为什么还要ROS2?
+
+ROS虽然将各个部分的各个组件给有机的连接起来,但是需要通过一个叫做`Ros Master`的东西,所有节点(可以理解为某一个组件,比如:激光雷达)的通信建立必须经过这个主节点,一旦`Ros Master`主节点挂掉后,就会**造成整个系统通信的异常**。
+
+
+
+> ROS1的不稳定这个问题在虽然对大家作研究问题不大,但如果是想基于ROS做商业化机器人,就会造成非常严重的后果,小鱼在工作中可没为这个问题发愁
+
+
+
+除了不稳定这个问题,ROS还有很多其他地方存在着问题:
+
+- 通信基于TCP实现,实时性差、系统开销大
+
+- 对Python3支持不友好,需要重新编译
+- 消息机制不兼容
+- 没有加密机制、安全性不高
+
+
+
+## 2.ROS与ROS2架构对比?
+
+所以在ROS2中,首当其冲的将ROS的主节点干掉了,这里放一张网上流传最广的ROS/ROS2架构图,接下来就会按照这篇架构图给大家讲解。
+
+> 该图出自论文:`Exploring the Performance of ROS2`,已放入小鱼的公众号中,后台回复`ROS2论文`可获取
+
+
+
+![ROS1和ROS2对比](1.2ROS与ROS2对比/imgs/image-20210717153612576.png)
+
+
+
+
+
+小鱼来给大家讲解下这张图,我们从下往上看。
+
+#### OS层
+
+从原来的只支持linux平台变成了支持windows、mac甚至是嵌入式RTOS平台,这一点要点个赞。之前认识公众号一老哥,做扫地机器人,为了降低成本,平台性能真的是非常的受限。
+
+
+
+#### MiddleWare中间件层
+
+> 如果大家觉得中间件太玄乎可以点击小鱼的文章链接:[ROS2和ROS最大的区别中间件到底有什么不一样?](https://zhuanlan.zhihu.com/p/390607053)
+>
+> 下一节的扩展阅读讲了ROS的中心化特性: [1.3课外阅读_ROS镇长与艳娘传奇](1.3课外阅读_ROS镇长与艳娘传奇.md) 
+
+那么中间层ROS2到底相对于ROS做了哪些优化呢?
+
+
+
+1. **去中心化master**,ROS和ROS2中间件不同之处在于,ROS2取消了master节点。
+
+   去中心化后,各个节点之间可以通过DDS的节点相互发现,各个节点都是平等的,且可以1对1、1对n、n对n进行互相通信。
+
+   
+
+2. **不造通信的轮子**,通信直接更换为DDS进行实现(这个小鱼也要点赞,让专业的人做专业的事情)
+
+   采用DDS通信,使得ROS2的是实行、可靠性和连续性上都有了增强。
+
+> 这里不过多展开,后面小鱼单独补一片文章进行讲解,如果想第一时间获取更新,可以加入关注个人微信公众号《鱼香ROS》或加入ROS2交流群:139707339
+
+#### 应用层
+
+对于应用层来说ROS2也做了很大的改进,上面那张图没有体现出来。
+
+ROS2进行改进有:
+
+1. python2到pyhton3的支持
+2. 编译系统的改进(catkin到ament)
+3. 软件包更新到c++11
+4. 可以使用相同 API 的进程间和进程内通信
+5. 持续更新........
+
+
+
+## 3.ROS1中的话题机制还存在吗?
+
+答案:还是存在的,只不过命令行参数变了很多。
+
+
+
+
+
+下一章会从系统安装开始讲起,带大家一起学习ROS2。
+
+
+
+
+

BIN
docs/chapt1/1.2ROS与ROS2对比/imgs/20210714103924121.jpg


BIN
docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210717150453689.png


BIN
docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210717151353613.png


BIN
docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210717153612576.png


BIN
docs/chapt1/1.2ROS与ROS2对比/imgs/image-20210719213126060.png


+ 124 - 0
docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇.md

@@ -0,0 +1,124 @@
+# 1.3 ROS镇长的传奇故事
+
+## 1 统一方言
+
+从前在一个大山里,有五个村庄,这五个村庄每个村庄有自己的方言。不同村庄的村民们互相沟通就是非常复杂的一件事,首先要找到一个能同时会两个方言的翻译官,才能互相沟通。
+
+后来五个村子合并成了一个镇,来了个叫ROS的镇长,一看这多影响平时交流呀,就开始推行普通话。后来又有很多村子迁入这个镇,因为语言统一,大家互相交流起来都很方便。
+
+方言统一了之后,沟通方便了,镇子里就兴起了三个行业,第一个行业是报业,专门卖报纸的。第二个行业是外卖业,专门送外卖。
+
+## 2 王二订报
+
+ROS镇长给报业制定了一种订报机制,叫做话题(Topic),并且开设了一个报务科去管理这个事:
+村民王二单身多年,最喜欢看的就是村民李四写的《艳娘传奇》这个杂志。
+
+单身狗王二(Subscriber)想要看这个《艳娘传奇》(Topic-Name)这个杂志,首先要去报务科去告诉科长,我要定《艳娘传奇》,科长会留下王二的联系方式并写在手册上。但李四(Publisher)更新总是不定时,但他一更新就会把杂志送到镇上报务科去,报务科有一个手册,里面写着订阅《艳娘传奇》的村民名单。科长看到谁定了,就会把杂志复印一份让邮差给谁(Node)送过去。
+
+![image-20210717153837468](1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210717153837468.png)
+
+
+##### 杂志=话题
+
+看完上面的内容,我们来总结一下,上面其实讲了一下ROS中Topic和Service两种非常重要的通信方式。Topic是一种发布订阅模型,订阅者(王二)需要通过话题(艳娘传奇)到Master节点(科长)来订阅发布者(李四)的发布。这里讲的还是一对一(一个发布者,一个订阅者)的模型,真实的ROS中其实可以1对n,n对1,n对n的。
+
+并且满足以下规则:
+
+- 话题名字是关键,订阅者必须要订阅的话题的名称才能完成订阅;
+- 同一个人可以订阅多个话题,同时也可以发布多个话题,就像一本书的作者也可以是另外一本书的读者;
+- 同一个杂志不能有多个作者,但同一个话题可以有多个发布者。
+
+
+## 3 李四叫外卖
+
+李四为了专心写杂志,每天窝在家里不出去,吃饭全靠叫外卖。镇里叫外卖比较原始,是靠写信定的,想要叫外卖先写一封信(request),写清楚菜名和菜馆名,然后通过外卖小哥(service)进行送信,小哥将信送到镇上对应的某个菜馆(service端),镇上菜馆做好菜(response),然后让外卖小哥带回去,这时候李四(client端)才能吃上外卖。
+
+![image-20210717153854839](1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210717153854839.png)
+
+
+##### 外卖=服务
+
+李四是服务的客户端,菜馆是服务端,客户端(李四)通过发送一个request(一封信)给服务端(菜馆),服务端根据信里的内容进行处理后,让外卖小哥把菜(response)将送回去。
+
+服务满足以下规则:
+
+- 请求者必须知道服务名和可服务类型,就像李四知道菜馆名和菜名一样
+- 请求者在返回之前,无法或者服务端处理的进度。就像李四在菜到之前并不知道外卖小哥有没有偷换了自己的菜
+- 每一个节点可以提供多个服务,也可以请求多个服务。这点和餐馆不太一样
+
+
+## 4 ROS镇长的中央集权
+
+ROS小镇在ROS镇长的治理下,变得非常的繁华,但是ROS镇长是一个人非常有控制欲的一个人,到什么程度呢?如果ROS镇长不在,报务科和外卖小哥就不能营业,村民就不允许互相分享杂志(话题通信)、叫外卖了(服务通信)。
+
+初次之外,村里来的每一个人也都需要到ROS镇长的人口管理科注册登记才能成为一个合法的村民,平时也受ROS镇长的管理。
+
+总结一下:
+ROS镇长和其下属的科,其实就是ROS中的主节点,这个是ROS1才有的机制。同时节点之间的topic和service通信,也都需要主节点牵线搭桥。
+
+
+
+## 5 ROS镇长完善外卖制度
+
+随着外卖行业兴起,越来越多的村民选择点外卖。于此同时李四对现在的外卖制度表示十分的不满意。
+
+主要原因是把菜名和餐馆名告诉外卖小哥后,自己就不知道自己要的菜有没有、菜做的怎么样了,而且如果自己中途被隔壁老王喊去喝酒,想取消都没办法取消。
+
+ROS镇长得知这种情况后,就出手写了了一个新的制度,这个制度需要五个外卖小哥,两个小哥在李四这边,三个小哥在餐馆,他们分别负责不同的任务。
+李四这边的两个小哥分别是:
+- 外卖小哥A名字叫goal,负责传递李四想吃的菜给餐馆
+- 外卖小哥B名字叫cancel,如何中途李四想取消,就告诉B,B会去通知
+
+餐馆这边的外卖小哥分别是:
+- 外卖小哥C名字叫status,负责通知李四当前菜做到哪一阶段了
+- 外卖小哥D叫feedback,这个小哥每10分钟跑一趟,告诉当前进度的百分比
+- 外卖小哥E叫result,负责最后把做好的菜送到李四手上
+
+总结一下:
+上面所说的通信机制其实是ROS中的action,完整的定义如下图:
+
+![image-20210719035457656](1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210719035457657)
+
+五个外卖小哥分别对应着五个话题,两个由客户端发布,两个三个由服务端发布,对应着不同的任务。
+
+**Action在moveit控制机械臂或导航的时候经常会用到。**
+
+
+
+## 6 子承父位,ROS镇上安享晚年
+
+ROS镇长在2015年的时候与镇上的一个姑娘生下了一个儿子叫ROS2。ROS2出生在新时代,思想那是非常复合24字核心价值观的,ROS镇长也非常中意ROS1这个孩子,过了7年之后,ROS镇长准备要退休了,就让ROS2来帮忙打理镇上的事务。从此之后,ROS镇长就准备安详晚年了,毕竟新的时代是属于年轻人的。
+
+
+总结一下:
+上面其实说的是ROS2的出现势必会代替ROS,ROS2继承了ROS的优点同时也改进了ROS中的不足之处,使得ROS2更加的强大。
+
+
+## 7 ROS2镇长的改革故事
+
+ROS2经过这么多年的目濡耳染,不学以能。ROS2一上任就准备做改革。
+
+ROS2作为社会主义的接班人,24字核心价值观那是倒背如流。更是追求所谓的自由平等,他对ROS镇的这种离开镇长就不能转的中央集权制度非常的痛恨。
+
+于是ROS2镇长做的第一件事就是,去除中央集权,让村民们自产自销,开放市场。什么意思呢?就是王二想要看李四的报纸,就直接去找李四买就行了,不用通过政府,如此以来,整体的效率就提高了。
+
+ROS2还从外面引进了电话(DDS服务),给每个村民都免费装上了,从此村民和村民之间就可以通过DDS互相聊天(发现)。
+
+总结一下:
+上面说的其实是ROS2的通信机制的改变,引入电话就是引入了第三方的通信组件,ROS2自身只做个进程间的通信,节点和节点之间的通信采用的是DDS服务进行。
+
+> 可以看一下这篇文章(顺便关注一下小鱼的知乎,谢谢啦):[https://zhuanlan.zhihu.com/p/390607053](https://zhuanlan.zhihu.com/p/390607053)
+
+
+
+## 8 写在最后
+
+**我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚**
+
+**初中学习编程,高中开始学习机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)**
+
+**目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人**
+
+
+
+![在这里插入图片描述](https://img-blog.csdnimg.cn/20210714103924121.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzI3ODY1MjI3,size_16,color_FFFFFF,t_70#pic_center)

BIN
docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210717153837468.png


BIN
docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210717153854839.png


BIN
docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210719035457656.png


BIN
docs/chapt1/1.3课外阅读_ROS镇长与艳娘传奇/imgs/image-20210719035457657


+ 73 - 0
docs/chapt1/1.4扩展阅读_中间件.md

@@ -0,0 +1,73 @@
+# 1.4 扩展阅读:中间件
+
+你好,我是小鱼,欢迎关注,本片文章属于动手学ROS2系列文章中扩展阅读的一篇,主要为大家讲解一下什么是中间件。
+
+中间件的确听起来比较高达上,其实也挺高大上的。
+
+
+
+## 1 What is 中间件?
+
+**顾名思义**
+
+中间件就是介于某两个或者多个节点中间的组件。
+
+干嘛用的呢?
+
+**就是提供多个节点中间通信用的。**
+
+**官方解释就比较玄乎了:**
+
+> 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。是连接两个独立应用程序或独立系统的软件。相连接的系统,即使它们具有不同的接口,但通过中间件相互之间仍能交换信息。执行中间件的一个关键途径是信息传递。通过中间件,应用程序可以工作于多平台或OS环境。
+
+![img](1.4扩展阅读_中间件/imgs/v2-e6dbd2aa59c57d6bda2fcb25d83f1a34_b.png)
+
+小鱼看完表示
+
+
+
+## 2 ROS中的中间件和ROS2中的中间件有和不同?
+
+答:长的不同
+
+![img](1.4扩展阅读_中间件/imgs/v2-471abbce0a08b249637dc603f56dc9cf_b.png)
+
+ROS/ROS2中间件对比
+
+> 此图来自论文Exploring the Performance of ROS2,小鱼已经收录到了公众号
+
+ROS1的中间件是ROS组织自己基于TCP机制建立的,刚开始用起来还可以,但随着现在传感器的升级,数据量越来越大,原先的数据拷贝机制就不再适了,主要是使系统的开销大大增大。
+
+这也是ROS2要解决的问题之一。
+
+ROS2除了将进程间通信**intra-process**自己来做之外,其他部分的通信就使用DDS来实现,ROS2将DDS服务接口进行了一层抽象,保证了上层应用层调用接口的统一性。
+
+同时ROS2终于干掉了Master节点。
+
+去掉了master节点后,节点之间通信就非常的自由了,通过P2P节点发现协议,很方便的完成了连接和通信。
+
+## 3  ROS2替换ROS有什么好处?
+
+系统稳定性提高了,在也不怕master删库跑路了
+
+效率提高了,不用再因为降低性能被迫去ROS了
+
+终于可以光明正大使用Python3了
+
+终于可以和小姐姐...
+
+好处太多太多....
+
+......
+
+
+
+
+
+## 4 写在最后
+
+这是小鱼的第一个专栏,写关于ROS2系列的文章,每周甚至每天都会更新哦,欢迎大家关注。
+
+
+
+![img](1.4扩展阅读_中间件/imgs/v2-9ac28902f8d0032c6d4d9ba13b1e4f6b_720w.png)

BIN
docs/chapt1/1.4扩展阅读_中间件/imgs/v2-471abbce0a08b249637dc603f56dc9cf_b.png


BIN
docs/chapt1/1.4扩展阅读_中间件/imgs/v2-9ac28902f8d0032c6d4d9ba13b1e4f6b_720w.png


BIN
docs/chapt1/1.4扩展阅读_中间件/imgs/v2-e6dbd2aa59c57d6bda2fcb25d83f1a34_b.png


+ 32 - 0
docs/chapt1/章节介绍.md

@@ -0,0 +1,32 @@
+# 第一章-ROS2介绍
+
+叮,这里是第一章章节介绍!
+
+通过本章节的学习,希望你从一个听到ROS很蒙逼的小白,变成一个听到ROS也能吹两下的水的`砖家`。
+
+
+
+**通过本章节的学习,你可以和别人吹一吹:**
+
+- ROS2是什么?
+
+- ROS和ROS2的区别之处?
+
+  
+
+**有不明白的地方欢迎加小鱼微信和小鱼一起沟通,好了,`骚年`快点开始学习吧!~**
+
+
+
+
+
+------
+
+技术交流&&问题求助:
+
+- QQ交流群:139707339
+
+- 微信公众号:鱼香ROS
+
+- 小鱼微信:AiIotRobot
+

+ 136 - 0
docs/chapt2/2.1系统安装_虚拟机版本.md

@@ -0,0 +1,136 @@
+# 2.1 虚拟机安装Ubuntu
+
+本节小鱼将带大家一起使用Vmware来安装一个ubuntu20.04的虚拟机。让我们开始吧!
+
+
+
+> 所谓虚拟机,就是在你的电脑已有的系统上再使用软件模拟出另外一个系统。比较著名的软件就是Vmware了,因为Vmware是收费的,我们使用他们的非商业版本Vmware-Player。
+
+
+
+本节资源列表:
+
+- VMware-player虚拟机安装包:[地址](https://my.vmware.com/en/web/vmware/downloads/details?downloadGroup=WKST-PLAYER-1612&productId=1039&rPId=66621)
+- Ubuntu20.04镜像一个:[地址](http://mirrors.ustc.edu.cn/ubuntu-releases/20.04/)
+
+
+
+## 1 下载虚拟机和Ubuntu镜像
+
+Vmvare官方下载链接:[VMware Workstation Player - My VMware](https://my.vmware.com/en/web/vmware/downloads/details?downloadGroup=WKST-PLAYER-1612&productId=1039&rPId=66621)
+
+大家在浏览器里打开网页,然后点击下图中的DownLoad Now即可,注意上面一个是windows版本,下面一个是linux版本的。
+
+![image-20210719182446728](2.1系统安装_虚拟机版本/imgs/image-20210719182446728.png)
+
+下载好后虚拟机安装包后,接下来下载ubuntu镜像文件。
+
+下载地址:[Index of /ubuntu-releases/20.04/ (ustc.edu.cn)](http://mirrors.ustc.edu.cn/ubuntu-releases/20.04/),点开上面的网址,你会看到下面的页面:
+
+![image-20210719182945393](2.1系统安装_虚拟机版本/imgs/image-20210719182945393.png)
+
+
+
+话不多说选这个:`ubuntu-20.04.2.0-desktop-amd64.iso`  很多人有疑问,为啥是amd64,因为64位的架构是amd公司制定的,小鱼当初差点就去amd搞芯片了。
+
+速度还可以:
+
+![image-20210719184450785](2.1系统安装_虚拟机版本/imgs/image-20210719184450785.png)
+
+下载好后,你应该得到这两个文件:
+
+![image-20210719184758743](2.1系统安装_虚拟机版本/imgs/image-20210719184758743.png)
+
+
+
+## 2 安装Vmware
+
+双击执行VmWarePlayer,等待一下,然后跟着小鱼一路next。
+
+![image-20210719185440656](2.1系统安装_虚拟机版本/imgs/image-20210719185440656.png)
+
+
+
+![image-20210719185458219](2.1系统安装_虚拟机版本/imgs/image-20210719185458219.png)
+
+![image-20210719185545384](2.1系统安装_虚拟机版本/imgs/image-20210719185545384.png)
+
+![image-20210719185556305](2.1系统安装_虚拟机版本/imgs/image-20210719185556305.png)
+
+![image-20210719185604490](2.1系统安装_虚拟机版本/imgs/image-20210719185604490.png)
+
+![image-20210719185613586](2.1系统安装_虚拟机版本/imgs/image-20210719185613586.png)
+
+点击安装,等待一下下
+
+![image-20210719185625695](2.1系统安装_虚拟机版本/imgs/image-20210719185625695.png)
+
+点完成
+
+![image-20210719185706443](2.1系统安装_虚拟机版本/imgs/image-20210719185706443.png)
+
+此时桌面上应该看到对应的图标了。
+
+![image-20210719185758076](2.1系统安装_虚拟机版本/imgs/image-20210719185758076.png)
+
+双击打开:
+
+![image-20210719185817378](2.1系统安装_虚拟机版本/imgs/image-20210719185817378.png)
+
+肯定免费白嫖啦,点继续
+
+![image-20210719185845413](2.1系统安装_虚拟机版本/imgs/image-20210719185845413.png)
+
+点完成,此时主界面就出来了
+
+![image-20210719185912397](2.1系统安装_虚拟机版本/imgs/image-20210719185912397.png)
+
+## 3 安装虚拟机
+
+点开文件新建虚拟机
+
+
+
+![image-20210719185950677](2.1系统安装_虚拟机版本/imgs/image-20210719185950677.png)
+
+点开后选第二个选项
+
+![image-20210719190042507](2.1系统安装_虚拟机版本/imgs/image-20210719190042507.png)
+
+然后点浏览,找到我们下载的ubuntu镜像,**点击打开**
+
+![image-20210719190205318](2.1系统安装_虚拟机版本/imgs/image-20210719190205318.png)
+
+**点击下一步**
+
+![image-20210719190240573](2.1系统安装_虚拟机版本/imgs/image-20210719190240573.png)
+
+输入一下信息,名称小鱼用了ROS2,密码用的是123
+
+![image-20210719191648124](2.1系统安装_虚拟机版本/imgs/image-20210719191648124.png)
+
+**点下一步,点浏览,更改一下位置**
+
+![image-20210719191817025](2.1系统安装_虚拟机版本/imgs/image-20210719191817025.png)
+
+点下一步,然后改一下磁盘大小,小鱼改成80G。
+
+![image-20210719191850033](2.1系统安装_虚拟机版本/imgs/image-20210719191850033.png)
+
+然后点下一步
+
+![image-20210719191919143](2.1系统安装_虚拟机版本/imgs/image-20210719191919143.png)
+
+这里大家可以根据自己电脑自定义一下,小鱼有16G的内存,8核CPU,这里分给虚拟机4核8G。
+
+![image-20210719192023103](2.1系统安装_虚拟机版本/imgs/image-20210719192023103.png)
+
+然后点击完成
+
+![image-20210719192050412](2.1系统安装_虚拟机版本/imgs/image-20210719192050412.png)
+
+看到类似这个界面,不要着急,保持耐心,等待即可。
+
+最终装好了之后,你就可以看到登录界面,输入密码即可进入系统。
+
+![image-20210720102022189](2.1系统安装_虚拟机版本/imgs/image-20210720102022189.png)

BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719182446728.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719182945393.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719184225854.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719184450785.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719184758743.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185440656.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185458219.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185545384.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185556305.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185604490.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185613586.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185625695.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185706443.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185758076.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185817378.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185845413.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185912397.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719185950677.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719190042507.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719190205318.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719190240573.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191648124.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191817025.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191850033.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719191919143.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719192023103.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719192050412.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210719192549058.png


BIN
docs/chapt2/2.1系统安装_虚拟机版本/imgs/image-20210720102022189.png


+ 99 - 0
docs/chapt2/2.2系统安装_双系统.md

@@ -0,0 +1,99 @@
+# 使用双系统安装Ubuntu
+
+这节给大家讲一讲如何使用双系统的方式安装ubuntu,毕竟虚拟机还是虚拟的,是两个系统在分硬件资源,有时候会卡到怀疑人生,所以本节小鱼就给大家讲一讲如何安装双系统。
+
+安装双系统需要准备哪些材料呢?
+- U盘一个(大于4G)
+- ubuntu镜像一个(下载可以点链接:[链接](http://mirrors.ustc.edu.cn/ubuntu-releases/20.04/ubuntu-20.04.2.0-desktop-amd64.iso))
+- U盘烧写工具**UltralSO**这个可以加入课程交流群下载**139707339**
+
+准备好三个工具后,咱们就开干了
+
+## 1 制作启动盘—烧录镜像
+
+打开UltralSO
+
+![image-20210719193111227](2.2系统安装_双系统/imgs/image-20210719193111227.png)
+
+左上角文件,打开选择我们的镜像。
+
+![image-20210719193146900](2.2系统安装_双系统/imgs/image-20210719193146900.png)
+
+点击打开,确保电脑上插上了U盘。
+
+点启动,写入硬盘映像
+
+![image-20210719193223405](2.2系统安装_双系统/imgs/image-20210719193223405.png)
+
+会跳出烧录界面
+
+![image-20210719193307750](2.2系统安装_双系统/imgs/image-20210719193307750.png)
+
+点击**写入**操作飞一会,Ubuntu20.04的启动盘就制作完成了。
+
+![image-20210719195021242](2.2系统安装_双系统/imgs/image-20210719195021242.png)
+
+
+
+这个时候看看电脑就会出现一个叫做ubuntu20.0的磁盘。
+
+![image-20210719195052633](2.2系统安装_双系统/imgs/image-20210719195052633.png)
+
+
+
+## 2 整理磁盘给出空间
+
+如果你的电脑里连50个G的空闲空间都没有了,最好还是别装了。装双系统费钱吗?不费,但费磁盘容量。
+
+小鱼这里留出了80G的空间用来安装ubuntu。具体怎么操作呢?
+
+![image-20210720101215192](2.2系统安装_双系统/imgs/image-20210720101215192.png)
+
+在窗口上右击,选择磁盘管理器。
+
+你就能看到这样一个窗口。
+
+![image-20210720101307041](2.2系统安装_双系统/imgs/image-20210720101307041.png)
+
+这个窗口显示着你电脑上所有的磁盘和分区状态。
+
+你可以找一块你没用的分区,右击压缩卷(一定要谨慎操作哦,不然这个磁盘都没了,心中默念数据无价,阿弥陀佛)
+
+压缩卷的意思其实是把某个分区在分出来一部分。
+
+![image-20210720101631507](2.2系统安装_双系统/imgs/image-20210720101631507.png)
+
+比如小鱼在D盘上压缩,D盘剩余的空间都可以被压榨出来。
+
+![image-20210720101724147](2.2系统安装_双系统/imgs/image-20210720101724147.png)
+
+这里小鱼只压榨出来1024M=1G的空间来。
+
+![image-20210720101926724](2.2系统安装_双系统/imgs/image-20210720101926724.png)
+
+点击压缩后D盘就变成了199G,而且后面多出来了1G的未分配空间,这个未分配空间就可以用来安装linux的,大家至少压缩出来50G左右最好,小鱼一般给80G。
+
+## 3 修改开机选项进入启动盘
+
+先将电脑关机,保证刚刚制作启动盘的U盘在要装双系统的电脑上插好。
+
+点击开机键,然后立刻马上点击F12(大多电脑是F12选择启动项,不是的可以根据自己电脑型号百度或者尝试一下F2,F4,F8,Enter等)。
+
+操作正确,电脑就会跳出来,下面的界面。
+
+![image-20210723100051134](2.2系统安装_双系统/imgs/image-20210723100051134.png)
+
+这些对应的都是你的电脑从磁盘上搜索到的启动项,这里需要自己辨识一下,小鱼的是第二个Kinston的。按上下键选中它,点回车即可。
+
+接下来会加载一会,然后进入选择界面。
+
+![image-20210723100300549](2.2系统安装_双系统/imgs/image-20210723100300549.png)
+
+这里我们选择第一个即可。然后会进入一个让你选安装还是试用的界面,这里可以修改一下语言然后选试用。
+
+![image-20210723134048243](2.2系统安装_双系统/imgs/image-20210723134048243.png)
+
+接下来的步骤可以参考视频啦
+
+晚点放地址~
+

BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193111227.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193146900.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193223405.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193307750.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719193358390.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719195021242.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210719195052633.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101215192.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101307041.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101443876.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101631507.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101724147.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210720101926724.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210723100051134.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210723100300549.png


BIN
docs/chapt2/2.2系统安装_双系统/imgs/image-20210723134048243.png


+ 100 - 0
docs/chapt2/2.3ROS2的安装.md

@@ -0,0 +1,100 @@
+# 2.3 安装ROS2
+
+到了这一节,终于可以开始安装ROS2了。小鱼接下来会讲的比较细一些,帮助一些没有基础的同学进行安装。
+
+首先启动虚拟机或者启动双系统中的ubuntu。
+
+**小鱼最新一行代码安装ROS2:**
+
+```
+sudo apt-get install curl && curl https://ghproxy.com/https://raw.githubusercontent.com/fishros/tools/master/docs/tools/install_ros2_foxy | bash
+```
+
+
+## 1 添加国内的ROS2源
+
+### 1.1Ctrl+Alt+T打开终端
+
+### 1.2 下载秘钥
+
+```
+sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key  -o /usr/share/keyrings/ros-archive-keyring.gpg
+```
+
+### 1.3 导出到系统
+
+```
+echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
+```
+
+### 1.4 更新
+
+```
+sudo apt-get update
+```
+
+> 如果遇到了其他问题,欢迎加入qq交流群进行交流:139707339,或者尝试一键安装指令
+>
+> ```
+> sudo apt-get install curl && curl https://ghproxy.com/https://raw.githubusercontent.com/fishros/tools/master/docs/tools/install_ros2_foxy | bash
+> ```
+
+## 2 安装ROS2
+
+上面步骤完成后,安装就变得非常的简单了,一行指令搞定;
+
+```
+sudo apt-get install ros-foxy-desktop
+```
+
+然后等着就行:
+
+![image-20210719205122068](2.3ROS2的安装/imgs/image-20210719205122068.png)
+
+
+
+
+
+## 3 配置环境变量
+
+大家此时再打开一个终端,输入ros2,看看会有什么神奇的事情发生吧。
+
+很不幸,你可能会看到到:
+
+![image-20210720102200144](2.3ROS2的安装/imgs/image-20210720102200144.png)
+
+不要怕,跟着小鱼输入一句话:
+
+```
+source /opt/ros/foxy/setup.bash
+```
+
+再尝试一下,就可以了。
+
+![image-20210720102349238](2.3ROS2的安装/imgs/image-20210720102349238.png)
+
+这是为什么呢?
+
+因为虽然安装好了ros2,但ros2并没有加入到系统默认的环境中来。每次想用还需要进行source.有什么办法可以一劳永逸呢?
+
+有的,把ros2加入bashrc中。就是每次启动终端都让它自动的输入这句话。
+
+```
+echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
+```
+
+## 4 如何出现问题可以这样卸载
+
+别的教程肯定不会写这个,不过这招有时候还挺好用,就是麻烦一些哈。
+
+```
+sudo apt remove ros-foxy-* && sudo apt autoremove
+```
+
+
+
+参考链接:
+
+- ROS2 镜像使用帮助:https://mirrors.tuna.tsinghua.edu.cn/help/ros2/
+- ROS2官方文档:http://docs.ros.org/en/foxy/index.html
+

BIN
docs/chapt2/2.3ROS2的安装/imgs/image-20210719200201557.png


BIN
docs/chapt2/2.3ROS2的安装/imgs/image-20210719205122068.png


BIN
docs/chapt2/2.3ROS2的安装/imgs/image-20210720102200144.png


BIN
docs/chapt2/2.3ROS2的安装/imgs/image-20210720102349238.png


BIN
docs/chapt2/2.3ROS2的安装/imgs/image-20210720102633398.png


+ 116 - 0
docs/chapt2/2.4动手玩ROS2.md

@@ -0,0 +1,116 @@
+# 2.4 动手玩ROS2
+
+## 1 游戏1:你说我听
+
+游戏内容:很简单,我们启动两个节点,一个节点负责发消息(说),一个节点负责收消息(听)。
+
+> 就像上节课扩展阅读中的那样子,李四写《艳娘传奇》王二订阅《艳娘传奇》。
+
+1. 启动一个终端Ctrl+Alt+T
+
+2. 启动倾听者
+
+   ```
+   ros2 run demo_nodes_py listener
+   ```
+
+3. 启动一个新终端Ctrl+Alt+T
+
+4. 启动说话者
+
+   ```
+   ros2 run demo_nodes_cpp talker
+   ```
+
+观察一下现象,talker节点每数一个输,倾听节点每一次都能听到一个,是不是很神奇。但为什么`listenr`听漏了两个数呢?这个我们放到视频教程里给大家说。
+
+![image-20210720114613697](2.4动手玩ROS2/imgs/image-20210720114613697.png)
+
+
+
+
+
+## 2 游戏2:涂鸦乌龟
+
+游戏内容:启动海龟模拟器,启动海龟遥控器,控制海龟在地图上画出任意轨迹即可。
+
+> 本来是控制海龟画个五角星的,但经过手动多次尝试,发现太难了。大家有时间可以试试,有搞定的可以发个图在群里分享一下。
+
+
+
+### 启动海龟模拟器
+
+打开终端Ctrl+Alt+T,输入下面的指令
+
+```
+ros2 run turtlesim turtlesim_node
+```
+
+就可以看到这样的界面
+
+![image-20210720123734477](2.4动手玩ROS2/imgs/image-20210720123734477.png)
+
+### 启动海龟遥控器
+
+点一下原来的终端输入Ctrl+Shift+T 打开一个新的标签页输入
+
+```
+ros2 run turtlesim turtle_teleop_key
+```
+
+你可以看到这样子的界面
+
+![image-20210720124022925](2.4动手玩ROS2/imgs/image-20210720124022925.png)
+
+这个时候你就可以使用上下左右去遥控海龟了,快试一试吧。
+
+![image-20210720125026860](2.4动手玩ROS2/imgs/image-20210720125026860.png)
+
+
+
+
+
+## 3 游戏3:照妖镜
+游戏内容:打开一个USB摄像头,开始观察世界吧
+所需道具:一台拥有摄像头的电脑
+## 启动相机
+Ctrl+Alt+T打开终端,输入下面的指令
+```
+ros2 run image_tool2 cam2image
+```
+你会看到如下界面
+![image-20210907134048243.png](2.4动手玩ROS2/imgs/image-20210907134048243.png)
+可以看到名为cam2image的这个节点在疯狂的对外发布image,让我们怀揣着好奇心借助rqt工具暗中观察一下,到底发了些啥东东
+## 启动rqt
+Ctrl+Alt+T打开终端,输入下面的指令
+```
+rqt
+```
+我们会得到以下弹框
+![image-20210907124022925.png](2.4动手玩ROS2/imgs/image-20210907124022925.png)
+我们选择Plugin/Visualization/Image View,窗口变成灰蒙蒙一团,并出现一些可选项
+![image-20210907114613697.png](2.4动手玩ROS2/imgs/image-20210907114613697.png)
+接下来就是见证奇迹的时刻,我们将Image View下面的复选框选中/image
+![image-20210907123734477.png](2.4动手玩ROS2/imgs/image-20210907123734477.png)
+让小鱼看看有多少人受到了惊吓,没错,忽然出现的就是跟生活周旋已久的可爱的你
+>突如其来的多愁善感鱼~
+## 3 总结
+
+通过本节的小游戏,你应该对ROS2稍微熟悉了一丢丢,不过心中也会多出那么几个问题?比如:
+
+为什么一个节点说,一个节点一定能听到?
+
+为什么键盘可以控制小乌龟前进后退?
+
+为什么我们可以控制摄像头看看世界和自己?
+
+没关系,让我们继续往下,你会一点点的有了拨云见月的感觉。
+
+
+
+欢迎大家加入ROS2的技术交流群,分享你的小乌龟。
+
+
+
+
+

BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210720114613697.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210720123734477.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210720124022925.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210720125026860.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210907114613697.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210907123734477.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210907124022925.png


BIN
docs/chapt2/2.4动手玩ROS2/imgs/image-20210907134048243.png


+ 157 - 0
docs/chapt2/2.5VsCode编译器安装与配置.md

@@ -0,0 +1,157 @@
+# 2.5VsCode编译器安装与配置
+
+> 工欲善其事必先利其器
+
+
+
+这节小鱼是想给大家安利非常好用的一款编辑器——vscode。
+
+> 小鱼发现很多做机器人的小伙伴大多大多分成两个流派,一个是QT Design流,一个是Vscode流。不过随着Vscode做的越来越好,用的人也变得越来越多了。
+
+
+
+## 1 为什么叫vscode编辑器?
+
+小鱼需要给大家区分一下的哈,编辑器和编译器是有很大区别的,别看只有一个字。
+
+
+
+![image-20210719194446610](2.5VsCode编译器安装与配置/imgs/image-20210719194446610.png)
+
+
+
+- **编辑器**,就像记事本一样,是用来编写代码的
+
+- **编译器,**是一个翻译机,用来翻译代码的
+
+> 所以vscode不负责编译代码,只负责编辑代码。
+
+
+
+## 2 Vscode下载
+
+安装包获取还是推荐加一下我们的交流群,因为vscode在国外,是微软爸爸出的,国内下载起来是非常的卡顿的,除非用梯子。
+
+这里小鱼提供了群文件下载:`qq群:139707339`
+
+如果是linux版本的安装包,最终是deb格式的。
+
+![image-20210720104733799](2.5VsCode编译器安装与配置/imgs/image-20210720104733799.png)
+
+
+
+## 3 Vscode安装
+
+### 方式1
+
+双击打开,会有图形化的界面,点击安装即可
+
+
+
+### 方式2:
+
+装逼命令行
+
+```
+sudo dpkg -i code_1.58.0-1625728071_amd64.deb
+# -i 是 install的意思
+```
+
+
+
+![image-20210720113233035](2.5VsCode编译器安装与配置/imgs/image-20210720113233035.png)
+
+
+
+随便在某一个终端输入,就可以以当前目录打开vscode
+
+```
+code ./
+```
+
+![image-20210720113406478](2.5VsCode编译器安装与配置/imgs/image-20210720113406478.png)
+
+
+
+## 4 Vscode插件大观
+
+vscode最牛的地方就是各种插件都有。
+
+不要问小鱼怎么知道的哈~
+
+##### 汉化插件
+
+![image-20210720135816630](2.5VsCode编译器安装与配置/imgs/image-20210720135816630.png)
+
+##### Python插件
+
+![image-20210723125628815](2.5VsCode编译器安装与配置/imgs/image-20210723125628815.png)
+
+**听歌网易抑云**
+
+![image-20210720113510268](2.5VsCode编译器安装与配置/imgs/image-20210720113510268.png)
+
+**背单词**
+
+![image-20210720135841441](2.5VsCode编译器安装与配置/imgs/image-20210720135841441.png)
+
+##### 玩坦克大战
+
+![image-20210720135911694](2.5VsCode编译器安装与配置/imgs/image-20210720135911694.png)
+
+##### 看小说
+
+![image-20210720135941635](2.5VsCode编译器安装与配置/imgs/image-20210720135941635.png)
+
+##### 彩虹屁
+
+在你写代码时候疯狂夸你写的好的插件
+
+![image-20210720140054631](2.5VsCode编译器安装与配置/imgs/image-20210720140054631.png)
+
+##### 股票
+
+![image-20210720140207445](2.5VsCode编译器安装与配置/imgs/image-20210720140207445.png)
+
+
+
+大家也有好玩的插件也可以分享一下哈,不过目前针对ROS2就四个插件按,看起来不太好用的样子,还是先用命令行好了,省的增加学习成本。
+
+![image-20210720140450096](2.5VsCode编译器安装与配置/imgs/image-20210720140450096.png)
+
+
+
+## 5 结束语
+
+本节到此结束,告诉大家那么多有意思的插件,其实就是希望大家可以开开心心的学ROS2,敲代码也可以很快乐的哦~
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210719194446610.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720104733799.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720113233035.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720113406478.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720113510268.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135816630.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135841441.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135911694.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720135941635.png


BIN
docs/chapt2/2.5VsCode编译器安装与配置/imgs/image-20210720140008256.png


Some files were not shown because too many files changed in this diff