|
本篇文章我們主要介紹正運動技術動態鏈接庫環境配置以及EtherCAT運動控製器在ROS下的單軸運動。
在正式學習之前,我們先了解一下正運動技術的EtherCAT運動控製器ZMC432和ZMC408CE。這兩款產品分別是32軸,8軸EtherCAT運動控製器。
ZMC432功能簡介
ZMC432是正運動推出的一款多軸高性能EtherCAT總線運動控製器,具有EtherCAT、 EtherNET 、RS232、CAN和U盤等通訊接口,ZMC係列運動控製器可應用於各種需要脫機或聯機運行的場合。

ZMC432最多可支持32軸運動控製,支持 直線插補 、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。
ZMC432支持32軸脈衝輸入與編碼器反饋,通用IO包含24路輸入口和12個輸出口;2路AD,2路DA;其中特定輸出口支持高速PWM控製。
ZMC432通過EtherCAT和 CAN總線 進行硬件資源擴展,可擴展至4096路輸入和4096路輸出。

ZMC408CE功能簡介
ZMC408CE是正運動推出的一款多軸高性能EtherCAT總線運動控製器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC係列運動控製器可應用於各種需要脫機或聯機運行的場合。

ZMC408CE支持8軸運動控製,最多可擴展至32軸,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。
ZMC408CE支持8軸運動控製,可采用脈衝軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和16路輸出口,部分IO為高速IO,模擬量AD/DA各兩路,EtherCAT最快125us的刷新周期。
ZMC408CE支持8個通道的硬件比較輸出、硬件定時器、運動中精準輸出,還支持8通道PWM輸出,對應的輸出口為OUT0-7,支持8個通道同時觸發硬件比較輸出。
ZMC408CE可靈活進行硬件資源擴展,通過CAN或EtherCAT總線可擴展至4096個輸入和4096個輸出。

→ ZMC432,ZMC408CE均使用同一套 API函數 ,均支持C、C++、C#、LabVIEW、Python、Delphi等開發語言,支持VC6.0、VB6.0、Qt、.Net等平台,支持Windows、Linux、WinCE、iMac等操作係統。

上節課程中,我們介紹了ROS應用背景和Ubuntu18.04安裝ROS Melodic詳細過程,並且通過ROS編程案例“ 消息發布和訂閱 ”來詳細說明正運動技術EtherCAT運動控製器ROS的應用開發。詳情點擊→ EtherCAT運動控製器在ROS上的應用(上)。
01 配置正運動技術動態鏈接庫環境
1.添加動態鏈接庫
在程序包目錄zmotion(catkin_ws/src/zmotion/)下新建文件夾lib,存放動態鏈接庫libzmotion.so。


在CMakeLists.txt中添加第三方庫路徑(build下):
link_directories(
lib
${catkin_LIB_DIRS}
)
並在CMakeLists.txt文件中鏈接動態鏈接庫(調用鏈接庫時文件名去掉lib和.so):
target_link_libraries(talker ${catkin_LIBRARIES} zmotion)
2.添加庫函數zmcaux.cpp、zmotion.h、zmcaux.h
添加zmcaux.cpp文件到catkin_ws/src/zmotion/src目錄下:

添加頭文件zmotion.h、zmcaux.h到catkin_ws/src/zmotion/include/ zmotion目錄下:

並在CMakeLists.txt中添加這三個庫文件:
add_executable(talker
src/talker.cpp
src/zmcaux.cpp
include/zmotion/zmotion.h
include/zmotion/zmcaux.h
)
修改頭文件引用,如下圖所示(要填include文件的相對地址,zmotion為程序包名):
#include "zmotion/zmotion.h"
#include "zmotion/zmcaux.h"

02 正運動控製器在ROS下的單軸運動
talker節點實現軸0的運動,並將其位置實時發送給listener節點,修改talker.cpp如下:
1.添加句柄和頭文件
#include "zmotion/zmotion.h"
#include "zmotion/zmcaux.h"
ZMC_HANDLE g_handle=NULL;
2.通過EtherNET鏈接運動控製器
ZMC_LinuxLibInit();
//以太網(Ethernet)鏈接
char ipaddr[16] = {"192.168.0.11"};
int x =ZAux_OpenEth(ipaddr,&g_handle); //***ZMC
ROS_INFO("以太網鏈接控製器:%d",x);//返回0則連接成功
3.實現單軸運動
ZAux_Direct_SetSpeed(g_handle, 0, 200); //設置軸0運動速度為200units/s
ZAux_Direct_SetAccel(g_handle, 0, 2000); //設置軸0加速度為2000units/s/s
ZAux_Direct_SetDecel(g_handle, 0, 2000); //設置軸0減速度為2000units/s/s
ZAux_Direct_SetSramp(g_handle, 0, 100); //設置軸0 S曲線時間100ms
ZAux_Direct_Single_Move(g_handle, 0, 300); //軸0 相對與當前位置運動100 units
4.將實時位置發送給listener節點
float piValue;
while (ros::ok())
{
std_msgs::Float64 msg;
ZAux_Direct_GetMpos(g_handle, 0, & piValue);//獲取時候
msg.data = piValue;
//輸出,用來替代prinf/cout
ROS_INFO("Position is: %f", msg.data);
chatter_pub.publish(msg);
ros::spinOnce();
//休眠,來使發布頻率為10Hz
loop_rate.sleep();
}
5.編譯
cd ~/catkin_ws/
catkin_make
6.運行程序
//打開一個新終端
roscore
//打開另一個新終端
cd ~/catkin_ws/
rosrun zmotion talker
//打開另一個新終端
cd ~/catkin_ws/
rosrun zmotion listener
運行效果如下,實時輸出位置:

此外,我們在上位機上的示波器上可以看見,軸0做S曲線運動:

本次,正運動技術EtherCAT運動控製器在ROS上的應用(下) ,就分享到這裏。
更多精彩內容請關注“ 正運動小助手 ”公眾號,需要相關開發環境與例程代碼,請谘詢正運動技術銷售工程師:400-089-8936。
本(ben)文(wen)由(you)正(zheng)運(yun)動(dong)技(ji)術(shu)原(yuan)創(chuang),歡(huan)迎(ying)大(da)家(jia)轉(zhuan)載(zai),共(gong)同(tong)學(xue)習(xi),一(yi)起(qi)提(ti)高(gao)中(zhong)國(guo)智(zhi)能(neng)製(zhi)造(zao)水(shui)平(ping)。文(wen)章(zhang)版(ban)權(quan)歸(gui)正(zheng)運(yun)動(dong)技(ji)術(shu)所(suo)有(you),如(ru)有(you)轉(zhuan)載(zai)請(qing)注(zhu)明(ming)文(wen)章(zhang)來(lai)源(yuan)。
正運動技術專注於運動控製技術研究和通用運動控製軟硬件產品的研發,是國家級高新技術企業。正運動技術彙集了來自華為、中zhong興xing等deng公gong司si的de優you秀xiu人ren才cai,在zai堅jian持chi自zi主zhu創chuang新xin的de同tong時shi,積ji極ji聯lian合he各ge大da高gao校xiao協xie同tong運yun動dong控kong製zhi基ji礎chu技ji術shu的de研yan究jiu,是shi國guo內nei工gong控kong領ling域yu發fa展zhan最zui快kuai的de企qi業ye之zhi一yi,也ye是shi國guo內nei少shao有you、完整掌握運動控製核心技術和實時工控軟件平台技術的企業。主要業務有:運動控製卡_運動控製器_EtherCAT運動控製卡_EtherCAT控製器_運動控製係統_視覺控製器__運動控製PLC_運動控製_機器人控製器_視覺定位_XPCIe/XPCI係列運動控製卡等等。

|