导语:今天,正运动技术为大家分享一下《运动控制卡在ROS上的应用(下)》。本章节在《运动控制卡在ROS上的应用(上)》程序的基础上稍作修改,实现在ROS下正运动技术运动控制卡的开发。
一、配置正运动技术动态链接库环境
添加动态链接库
在程序包目录zmotion(catkin_ws/src/zmotion/)下新建文件夹lib,存放动态链接库libzmotion.so。
添加库函数zmcaux.cpp、zmotion.h、zmcaux.h
添加zmcaux.cpp文件到catkin_ws/src/zmotion/src目录下:
修改头文件引用,如下图所示:
二、ROS下的单轴运动
这部分主要讲述了如何实现一个talker节点,它将轴0的位置信息实时发送给listener节点。修改talker.cpp如下:
添加句柄和头文件
#include <zmotion/zmotion.h>
#include <zmotion/zmcaux.h>
ZMC_HANDLE g_handle = NULL;
通过EtherNET链接運動控制卡
ZMC_LinuxLibInit();
char ipaddr[16] = {192,168,0,11};
int x = ZAux_OpenEth(ipaddr,g_handle);
ROS_INFO("以太网连接:%d",x); // 返回0则连接成功
实现单轴運動
ZAux_Direct_SetSpeed(g_handle, 0, 200); // 设置轴0運動速度为200 units/s^(-1)
ZAux_Direct_SetAccel(g_handle, 0, 2000); // 设置轴0加速度为2000 units/s^(-2)
ZAux_Direct_SetDecel(g_handle, 0, 2000); // 设置轴减速时间为100 ms
float piValue;
while (ros::ok()) {
std_msgs::Float64 msg;
ZAux_Direct_GetMpos(g_handle , piValue);
msg.data = piValue;
chatter_pub.publish(msg);
ros::spinOnce();
loop_rate.sleep();
}
4 编译
cd ~/catkin_ws/
catkin_make
5 运行程序
roscore
rosrun zmotion talker
rosrun zmotion listener