ROS-Industrial 之 ABB_Driver ——ROS Server(总结)
目录
逻辑联系
经过几天的时间,对不同的ROS Server的RAPID程序已经搞懂了每个文件的功能以及结构,接下来感觉应该趁现在头脑里还有对所有程序文件的整体印象的时候,更加深入一步,即除了搞清楚每个文件有什么作用之外,还要进一步的理清几个文件之间的逻辑关系,所以在这里想借着写总结的时候,再将六类程序文件之间的逻辑联系搞清楚,这样未来不管有什么样的需要,都可以根据自己的需要去修改代码,并且明确所修改的代码之间的联系,而不会觉得无所适从。
1. 文件内容
(1) ROS_common
(2) ROS_messages
(3) ROS_socket
(4) ROS_stateServer
(5) ROS_motionServer
(6) ROS_motion
2. 调用关系
(1) 状态服务调用关系
上图中ROS_stateServer的main()
函数,首先执行socket的初始化,而初始化是调用的ROS_socket中的函数,之后进入等待外部接入状态,而此时调用的仍然是ROS_socket文件中的函数,之后程序在send_joints
中向客户端发送当前关节位置数据,此时用于发送的函数是利用ROS_messages中的ROS_send_msg_joint_data
函数,而这个函数之中所使用的发送函数是在ROS_socket中定义的ROS_send_msg
函数,这个函数里面才是RAPID真正用于发送的API函数。
所以,如果要对这状态服务的文件进行修改,那么相应的所调用的函数都要进行相应的调整。
(2) 控制服务调用关系
从上图中可以看到ROS_motionServer的作用就是将接收到的信息放到全局的变量中,然后在ROS_motion中从全局变量中将数据取出,然后执行。
后续
虽然RAPID这部分搞清楚了,但是将机器人与ROS接合起来,还需要其它更多的东西。RAPID代码修改,控制器中加载代码,ROS客户端……等等还有好多,这里只是万里长征的第一步,后面会继续努力,直到实现这个短期目标为止。