Skip to content

OneOneLiu/s_s_ros

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

S_S_ROS

English 中文

使用这个仓库整理一下之前记的笔记, 也可以用来给之后的同学做参考

1. 下载本仓库

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src

# 如果不是clone到上面的文件夹, 则需要在Docker的启动文件中修改volume挂载的路径
git clone https://github.com/OneOneLiu/s_s_ros.git

2. 一些说明

  • 本仓库面向是一个面向初学者实操导向ROS使用笔记. 针对的任务机器人抓取操纵等任务, 涉及到的硬件主要是机械臂, 相机, 以及电动夹爪, 不涉及移动机器人, 无人机等技术.
  • 读的同学需要对ROS有一些基本的了解, 知道常用的概念, 如ROS的软件包(package), 节点(node), 和常用命令, 如catkin_make.
  • 本仓库基于ROS1 noetic版本.

2.1. 好的 ROS 编程习惯

要完成一个机器人操作任务, 我们需要使用ROS来控制多个硬件, 包括机械臂, 夹爪, 相机, 力/力矩传感器等. 那么在开发的时候就需要在 /catkin_ws/src 目录下创建软件包来实现这些功能, 也就是package.

一个比较好的习惯是尽量把不同的功能做好隔离, 也就是模块化. 比如, 相机的功能就创建一个相机的package, 机器人就创建机器人的package. 最后整体控制所有的主程序, 再创建一个整体功能的package.

这种模块化的思想可以帮助我们提高代码的可读性和可维护性,促进代码和功能的重复使用.

与此同时, 在每个package下面, 我们也应当做好文件夹的整理和分区, 比如把所有的launch file都放到launch目录下, 源文件都放到 scripts 目录下, 同时给每个文件夹或者功能都添加说明文档 README.md.

2.2. 使用Docker

建议使用Docker进行所有ROS项目的测试和开发, 这会极大地减少环境配置所带来的问题, 提高工作效率. 借用一下形容 python 的话:

Life is short, you need Docker!

本仓库提供了傻瓜式的docker启动命令, 就放在./Docker目录下, 去读一下里面的README.md就知道怎么用了.

2.3. 文件夹说明

依据前一节说的编程习惯, 本仓库是包含多个ROS packages的, 而不是把这整个仓库只作为一个ROSpackage, (我以前是这么搞的, 你们不要这么做, 这是个很坏的习惯). 在实际测试的时候, 我们使用Docker, 我会把这些packages的子文件夹都放在src目录下, 然后通过Dockervolume功能把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

2.4. 使用说明

本仓库是模块化的入门教程, 每个pkg_开头的文件都是一个单独的功能包(package), 比如使用相机, 使用夹爪等. 每个package里都有单独的源代码以及测试文件, 可以单独参考使用.

3. 常用硬件的使用

以上几个都是非常常用的硬件, 他们的官方也都提供对应的ROS功能包, 比如:

一般要使用这些硬件, 直接下载使用他们官方的软件包就可以了, 无需自己再创建一个package. 如果需要自定义功能, 一般也是在他们的packages里面添加, 或者在自己项目的main package里添加, 无需再创建一个新的package. 我这里仍旧创建相机, 机器人以及夹爪的三个packages是为了展示这一过程.

📝 Note

下载使用官方或者第三方提供的ROS package有多种方式, 具体可以参考这个说明.

4. ToDos

  • 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
  • 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

About

S_S stands for step by step

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published