使用这个仓库整理一下之前记的笔记, 也可以用来给之后的同学做参考
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
# 如果不是clone到上面的文件夹, 则需要在Docker的启动文件中修改volume挂载的路径
git clone https://github.com/OneOneLiu/s_s_ros.git
- 本仓库面向是一个面向初学者的实操导向
ROS
使用笔记. 针对的任务机器人抓取操纵等任务, 涉及到的硬件主要是机械臂, 相机, 以及电动夹爪, 不涉及移动机器人, 无人机等技术. - 读的同学需要对
ROS
有一些基本的了解, 知道常用的概念, 如ROS
的软件包(package
), 节点(node
), 和常用命令, 如catkin_make
. - 本仓库基于
ROS1 noetic
版本.
要完成一个机器人操作任务, 我们需要使用ROS
来控制多个硬件, 包括机械臂, 夹爪, 相机, 力/力矩传感器等. 那么在开发的时候就需要在 /catkin_ws/src
目录下创建软件包来实现这些功能, 也就是package
.
一个比较好的习惯是尽量把不同的功能做好隔离, 也就是模块化. 比如, 相机的功能就创建一个相机的package
, 机器人就创建机器人的package
. 最后整体控制所有的主程序, 再创建一个整体功能的package
.
这种模块化的思想可以帮助我们提高代码的可读性和可维护性,促进代码和功能的重复使用.
与此同时, 在每个package
下面, 我们也应当做好文件夹的整理和分区, 比如把所有的launch
file都放到launch
目录下, 源文件都放到 scripts
目录下, 同时给每个文件夹或者功能都添加说明文档 README.md
.
建议使用Docker
进行所有ROS
项目的测试和开发, 这会极大地减少环境配置所带来的问题, 提高工作效率. 借用一下形容 python
的话:
Life is short, you need Docker
!
本仓库提供了傻瓜式的docker启动命令, 就放在./Docker
目录下, 去读一下里面的README.md
就知道怎么用了.
- 这是一个很不错的视频教程: https://www.youtube.com/watch?v=qWuudNxFGOQ
依据前一节说的编程习惯, 本仓库是包含多个ROS packages
的, 而不是把这整个仓库只作为一个ROS
的package
, (我以前是这么搞的, 你们不要这么做, 这是个很坏的习惯). 在实际测试的时候, 我们使用Docker
, 我会把这些packages
的子文件夹都放在src
目录下, 然后通过Docker
的volume
功能把src
目录映射到container
容器环境中的/catkin_ws/src/
目录. 你可以在这个Docker
启动文件里面找到相关命令.
所以这个仓库的文件夹结构大致会是下面的样子:
s_s_ros/
├── Docker
│ ├── build.bash
│ ├── Dockerfile
│ ├── noetic.bash
│ └── README.md
├── docs
│ └── Hardware
│ ├── 1.Realsense_camera.md
│ ├── 2.UR_robot.md
│ └── 3.Robotiq_gripper.md
├── README_en.md
├── README.md
└── src
├── pkg_camera
├── pkg_grasp_main
├── pkg_gripper
└── pkg_robot
其中:
Docker
目录下放的是Docker
环境编译,启动的文件以及相关说明docs
目录下放的就是各种说明文档src
目录下以pkg_
开头的就是给各个功能添加的package
, 把pkg_
作为前缀看着很奇怪, 但是可以让他们看起来在一起, 就这样吧.
当Docker container
启动之后, 首次catkin_make
之前, 在虚拟环境中看到的目录大致会是这样:
catkin_ws/
└── src
├── pkg_camera
├── pkg_grasp_main
├── pkg_gripper
└── pkg_robot
本仓库是模块化的入门教程, 每个pkg_
开头的文件都是一个单独的功能包(package
), 比如使用相机, 使用夹爪等. 每个package
里都有单独的源代码以及测试文件, 可以单独参考使用.
-
Intel Realsense
相机的使用, 请参照 docs/Hardware/1.Realsense_camera.md. -
UR
机器人的使用, 请参照 docs/Hardware/2.UR_robot.md. -
Robotiq
夹爪的使用, 请参照 docs/Hardware/3.Robotiq_gripper.md.
以上几个都是非常常用的硬件, 他们的官方也都提供对应的ROS功能包, 比如:
一般要使用这些硬件, 直接下载使用他们官方的软件包就可以了, 无需自己再创建一个package
. 如果需要自定义功能, 一般也是在他们的packages
里面添加, 或者在自己项目的main package
里添加, 无需再创建一个新的package
. 我这里仍旧创建相机, 机器人以及夹爪的三个packages
是为了展示这一过程.
📝 Note
下载使用官方或者第三方提供的ROS package有多种方式, 具体可以参考这个说明.
- pkg_camera related
- add notes for python executables in launch file
- add notes for launch file (official) parameter setup
- add notes for point cloud visualization
- Docker
- installation notes
- Robots
- add notes for
ros_control
- add notes for urdf and xacro
- generate urdf for multiple robots
- add notes for
- Trouble shooting
- add trouble shooting for GUI in docker and ssh
- add trouble shooting for roscore issue when using from ssh
- add trouble shooting for qt lib when using from ssh
- ROS basics
- add notes for tf