从零到两杆机械臂
环境配置
这部分不多说,这里推荐鱼香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
大概流程是:
- (画好机械臂)
- 下载sw2urdf的插件
- 选好几个参考轴
- 在插件里选好模型,让插件依靠你的参考轴和模型文件生成joint的坐标轴
- 如果生成好了,选好关节都为continuous的,导出之后都确实为continuous的,就差不多得了
如果你想生成的关节是continuous的,但是生成出来的是fixed的,检查那个关节的坐标系是否正常,否则自己建一个,让插件不要自己生成(卡了我很久,但是没有用)
Moveit!
万众期待的地方来力,moveit可能是比较难的地方了,要实现的东西蛮多
接下来的步骤
- 配置:Moveit,用Setup Assistant 生成config
- 驱动:添加机器人控制插件(controller),我们后续的路径规划可能需要一个外置的我们自己写的controller实现遥控器/键鼠控制
- 控制:Moveit控制仿真(后续将ros control 里的read write实现,就能下发真机)
Setup Assistant 生成config
roscore
rosrun moveit_setup_assistant moveit_setup_assistant
可以看到我们已经启动了Assistant了。
一般来说就选择Create一个新的吧,如果有调整的话再选edit existing
Self-collision自碰撞检测
点击Generate Collision Matrix
即可
Planning Groups
在
Planning Groups
进入到add group
后,新建规划组
group name
要记得,我这边填的是manipulator,以后写代码的时候可能会用到- 求解器Kinematic先用着
kdl
吧- OMPL Planning算法先选择
RRT
,有兴趣的可以去了解其他的
之后最下面点击 Add Kin.Chain
在最下面的地方选择好Base Link 和 Tip Link(末尾端)
Define Robot Poses定义位置
(随便选了个地方作为home了
Controllers控制器
这里我懒得去配ros control部分了,但是古月居推荐自己手动加文件。
我先逝逝,不行再重新edit
添加之后,选择
edit selected
选择好类型这里我们的电机是3508+编码器和舵机的组合,都是带编码器的,所以选择position-trajectory
可能之后会换成其他的?