如何培养自学技术能力?以解决moveit驱动真实机器人问题的思路为例【方法论】

今天在ROS的学习群里,又有萌新问:movie规划出来的数据是什么,如何通过moveit控制单片机,驱动机械臂
【嫌弃脸】

百度五分钟,群里叨叨两小时。

我当时这样说的:
这些系统性的问题,我觉得你们应该自己百度一下,比如搜索 moveit控制真实机器人 ,看几篇系统性的教程,自己懂一些大概的思路,不理解的细节在问,加上自己的理解,群里人才会回答,不然谁也没法从头到尾给讲。

事实就是这样,这种问题说明提问者没有真正独立思考过就上群里问了。

授人以鱼不如授人以渔,这里提供我的解决思路,希望能给大家一个启发。(事先说明,我在这之前没有用moveit完整开发过真实机器人控制的项目,因此本篇内容更接近方法论)

1、在解答问题之前,百度/谷歌,建立系统的思路:

搜索关键词“moveit控制真实机器人”,得到:


百度到第一条信息,标题很符合,直接打开,发现字很多,但是非常详细,且显然是系列教程,那就它了。

我随即点开了博主的头像,找到了他关于这部分的系列文章:
https://blog.csdn.net/lingchen2348/article/details/80261161

大致浏览一番,我认为他的文章非常不错,值得精读
 

2、仔细精读博主的系列文章,遇到不理解的名词立刻百度/谷歌一下。

3、做笔记,划出重点


- 比如moveit的框架图:
è¿éåå¾çæè¿°


-----------------》
- 百度FollowJointTrajectoryAction,得到http://docs.ros.org/api/control_msgs/html/action/FollowJointTrajectory.html,即此api的具体信息。
又根据资料提到的路点轨迹,看到里面这里有:

即这个就是发给机器人的轨迹信息,一串数组。

-----------------》
- 百度数组的类型名JointTolerance ,得到其详细信息的api文档http://docs.ros.org/api/control_msgs/html/msg/JointTolerance.html

显然,里面有轨迹路点的数据类型,具体说明看注释信息。(可能有人要问路点是什么,请自行学习机器人运动学,建立机械臂数学模型)

之后的不列举了,上述博主的系列文章其后续说明已经足够清晰了,有很多细节。还有遇到其他问题可以自己百度相关信息(比如moveit官方教程)。

4、总结收集到的信息

0)需要具备的前提知识:linux串口或者socket开发知识;ros基本操作知识;C++编程知识;机器人运动学知识(若要求提高精度,需动力学知识);自动控制原理(pid);
1)根据moveit的控制框架图,知道moveit为驱动真实机器人提供的api接口
2)知道moveit规划出的机器人各关节数据,即发送给机器人控制板的数据类型(关节编号、角度、角速度、角加速度);
3)知道需要编写的代码模块有:① pc中ros的moveit通讯客户端代码;② 单片机/机器人驱动单元的对接moveit通讯的服务端代码以及机械臂驱动代码;③ 自行根据自己的通讯方式(串口还是以太网),设计应用层通讯协议;
4)moveit的官方教程,是在ros所有开源包中,拥有最详细的官方教程,文档非常清晰、细致,且不断在更新(网络的任何博客都有一定时效性,太过久远了可能失效,官方文档却是实时更新),非常建议开发过程查看官方文档的内容。


- 总结完后,自己便可建立总体的方案,拥有了总体的方向理清思路,之后的问题便是具体的开发问题了,按照自己的思路,不断查资料、开发,过程中继续完善自己的方案,记录重要信息。

这里建议具体开发时,找一些moveit机械臂开发的开源项目,包括实体机器人的硬件驱动代码及方案还有ros层的moveit接口代码,即硬件软件全开源的机械臂,参考其代码架构设计自己的机器人程序
例如:open_manipulator开源机械臂,百度/谷歌一下,一步步搜索可得到:
wiki地址:http://wiki.ros.org/open_manipulator
源码地址:https://github.com/ROBOTIS-GIT/open_manipulator

官方文档:http://emanual.robotis.com/docs/en/platform/openmanipulator_x/overview/
- 开源控制嵌入式板OpenCR1.0:http://emanual.robotis.com/docs/en/parts/controller/opencr10/

5、具体怎么开发

由于我不打算买一个实体机器人,这里考虑使用vrep仿真,建立一个六轴机器人,通过vrep的socket或者串口通讯插件,编写通讯程序,实现和ros中的moveit的相关通讯,再控制vrep中的机器人运动。

立个flag,等后续搞完了补充。(大坑)


未完待续。
 

发布了16 篇原创文章 · 获赞 3 · 访问量 508

猜你喜欢

转载自blog.csdn.net/m0_37340621/article/details/103839386