跳到主要内容

从零到两杆机械臂

环境配置

这部分不多说,这里推荐鱼香ros的一键安装。

目前我用的是ub20.04,怕出事就用的ros1 neotic

wget http://fishros.com/install -O fishros && . fishros

安装好桌面版的ros后,记得安装rosdep

这里我不清楚鱼香的rosdep怎么init的,但是脚本看好像有,但是我的OpenCV没有给我安装,估计是外置的

提示

如果你现有的gcc/g++工具链装了arm的交叉,极大可能与正常linux的冲突了。

可以删掉arm的工具链后重新删除catkin_ws,重新生成cmakelist

或者安装docker版本隔离不同的环境(不知道容器的性能怎么样,我stm32在写cmakelist时指定了工具链位置来规避这个问题)

Cmake infinite loop

在安装环境的时候,遇到了cmake infinite loop的恐怖问题,版本好像是3.10,不知道是不是espidf给我装的还是谁,总之重装就好了。

最后

其实看官网的来一步步走可能会好一点,这里我是偷懒的捏。

http://wiki.ros.org/ROS/Tutorials

最后,能正常在catkin_ws下catkin_make就应该差不多了

SW 导出urdf描述文件

这里参考古月居的P3

https://www.bilibili.com/video/BV1g44y1K7U6?p=3&vd_source=1dec09b0beea25da1b1f70b68fbcf6d7

大概流程是:

  1. (画好机械臂)
  2. 下载sw2urdf的插件
  3. 选好几个参考轴
  4. 在插件里选好模型,让插件依靠你的参考轴和模型文件生成joint的坐标轴
  5. 如果生成好了,选好关节都为continuous的,导出之后都确实为continuous的,就差不多得了
警告

如果你想生成的关节是continuous的,但是生成出来的是fixed的,检查那个关节的坐标系是否正常,否则自己建一个,让插件不要自己生成(卡了我很久,但是没有用)

Moveit!

万众期待的地方来力,moveit可能是比较难的地方了,要实现的东西蛮多

image-20230429145557450

接下来的步骤

  1. 配置:Moveit,用Setup Assistant 生成config
  2. 驱动:添加机器人控制插件(controller),我们后续的路径规划可能需要一个外置的我们自己写的controller实现遥控器/键鼠控制
  3. 控制:Moveit控制仿真(后续将ros control 里的read write实现,就能下发真机)

Setup Assistant 生成config

roscore
rosrun moveit_setup_assistant moveit_setup_assistant

image-20230429145027931

可以看到我们已经启动了Assistant了。

一般来说就选择Create一个新的吧,如果有调整的话再选edit existing

Self-collision自碰撞检测

image-20230429150055664

提示

点击Generate Collision Matrix即可

Planning Groups

image-20230429150631961

Planning Groups 进入到add group后,新建规划组

  • group name要记得,我这边填的是manipulator,以后写代码的时候可能会用到
  • 求解器Kinematic先用着kdl
  • OMPL Planning算法先选择RRT,有兴趣的可以去了解其他的

之后最下面点击 Add Kin.Chain

image-20230429151009982

在最下面的地方选择好Base Link 和 Tip Link(末尾端)

Define Robot Poses定义位置

image-20230429151304939

(随便选了个地方作为home了

Controllers控制器

警告

这里我懒得去配ros control部分了,但是古月居推荐自己手动加文件。

我先逝逝,不行再重新edit

image-20230429151558097

添加之后,选择edit selected选择好类型

这里我们的电机是3508+编码器和舵机的组合,都是带编码器的,所以选择position-trajectory

可能之后会换成其他的?

image-20230429151859302