本篇文章我們主要介紹正運(yùn)動技術(shù)動態(tài)鏈接庫環(huán)境配置以及EtherCAT運(yùn)動控制器在ROS下的單軸運(yùn)動。
在正式學(xué)習(xí)之前,我們先了解一下正運(yùn)動技術(shù)的EtherCAT運(yùn)動控制器ZMC432和ZMC408CE。這兩款產(chǎn)品分別是32軸,8軸EtherCAT運(yùn)動控制器。
ZMC432功能簡介

ZMC432是正運(yùn)動推出的一款多軸高性能EtherCAT總線運(yùn)動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運(yùn)動控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場合。

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

ZMC408CE是正運(yùn)動推出的一款多軸高性能EtherCAT總線運(yùn)動控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤等通訊接口,ZMC系列運(yùn)動控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場合。

ZMC408CE支持8軸運(yùn)動控制,最多可擴(kuò)展至32軸,支持直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨等功能。
ZMC408CE支持8軸運(yùn)動控制,可采用脈沖軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和16路輸出口,部分IO為高速IO,模擬量AD/DA各兩路,EtherCAT最快125us的刷新周期。
ZMC408CE支持8個通道的硬件比較輸出、硬件定時器、運(yùn)動中精準(zhǔn)輸出,還支持8通道PWM輸出,對應(yīng)的輸出口為OUT0-7,支持8個通道同時觸發(fā)硬件比較輸出。
ZMC408CE可靈活進(jìn)行硬件資源擴(kuò)展,通過CAN或EtherCAT總線可擴(kuò)展至4096個輸入和4096個輸出。
→ZMC432,ZMC408CE均使用同一套API函數(shù),均支持C、C++、C#、LabVIEW、Python、Delphi等開發(fā)語言,支持VC6.0、VB6.0、Qt、.Net等平臺,支持Windows、Linux、WinCE、iMac等操作系統(tǒng)。

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


在CMakeLists.txt中添加第三方庫路徑(build下):
link_directories( lib ${catkin_LIB_DIRS} )
并在CMakeLists.txt文件中鏈接動態(tài)鏈接庫(調(diào)用鏈接庫時文件名去掉lib和.so):
target_link_libraries(talker ${catkin_LIBRARIES} zmotion)
2.添加庫函數(shù)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 正運(yùn)動控制器在ROS下的單軸運(yùn)動
talker節(jié)點實現(xiàn)軸0的運(yùn)動,并將其位置實時發(fā)送給listener節(jié)點,修改talker.cpp如下:
1.添加句柄和頭文件
#include "zmotion/zmotion.h" #include "zmotion/zmcaux.h" ZMC_HANDLE g_handle=NULL;
2.通過EtherNET鏈接運(yùn)動控制器
ZMC_LinuxLibInit(); //以太網(wǎng)(Ethernet)鏈接 char ipaddr[16] = {"192.168.0.11"}; int x =ZAux_OpenEth(ipaddr,&g_handle); //***ZMC ROS_INFO("以太網(wǎng)鏈接控制器:%d",x);//返回0則連接成功
3.實現(xiàn)單軸運(yùn)動
ZAux_Direct_SetSpeed(g_handle, 0, 200); //設(shè)置軸0運(yùn)動速度為200units/s ZAux_Direct_SetAccel(g_handle, 0, 2000); //設(shè)置軸0加速度為2000units/s/s ZAux_Direct_SetDecel(g_handle, 0, 2000); //設(shè)置軸0減速度為2000units/s/s ZAux_Direct_SetSramp(g_handle, 0, 100); //設(shè)置軸0 S曲線時間100ms ZAux_Direct_Single_Move(g_handle, 0, 300); //軸0 相對與當(dāng)前位置運(yùn)動100 units
4.將實時位置發(fā)送給listener節(jié)點
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(); //休眠,來使發(fā)布頻率為10Hz loop_rate.sleep(); }
5.編譯
cd ~/catkin_ws/ catkin_make
6.運(yùn)行程序
//打開一個新終端 roscore //打開另一個新終端 cd ~/catkin_ws/ rosrun zmotion talker //打開另一個新終端 cd ~/catkin_ws/ rosrun zmotion listener
運(yùn)行效果如下,實時輸出位置:

此外,我們在上位機(jī)上的示波器上可以看見,軸0做S曲線運(yùn)動:

本次,正運(yùn)動技術(shù)EtherCAT運(yùn)動控制器在ROS上的應(yīng)用(下),就分享到這里。
更多精彩內(nèi)容請關(guān)注“正運(yùn)動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師。
本文由正運(yùn)動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。
審核編輯 黃宇
-
運(yùn)動控制器
+關(guān)注
關(guān)注
2文章
491瀏覽量
26136 -
ethercat
+關(guān)注
關(guān)注
20文章
1568瀏覽量
45989 -
ROS
+關(guān)注
關(guān)注
1文章
296瀏覽量
18854
發(fā)布評論請先 登錄
C#運(yùn)動控制開源(一): CAD導(dǎo)圖和小線段速度前瞻的優(yōu)化之CAD導(dǎo)圖# 正運(yùn)動技術(shù)# 運(yùn)動控制器# 開源
6路高性能PCIe EtherCAT運(yùn)動控制卡XPCIE6032H#運(yùn)動控制卡# 正運(yùn)動# 正運(yùn)動控制卡
EtherCAT運(yùn)動控制器配套用手持示教器ZHD301X快速入門# 正運(yùn)動技術(shù)# 運(yùn)動控制器# 正運(yùn)動
示教盒與PC連接,再進(jìn)行示教盒與控制器的連接# 正運(yùn)動技術(shù)# 運(yùn)動控制器# 正運(yùn)動# 示教器# 正運(yùn)動控制器
示教盒直連控制器,在示教盒刷新識別控制器IP# 運(yùn)動控制器# 正運(yùn)動技術(shù)# 手持示教器#正運(yùn)動
強(qiáng)實時運(yùn)動控制內(nèi)核MotionRT750(九):內(nèi)置C語言的自定義機(jī)械手模型實現(xiàn) #正運(yùn)動技術(shù) #運(yùn)動控制器
強(qiáng)實時運(yùn)動控制內(nèi)核MotionRT750(四):高速貼裝應(yīng)用中的拱形運(yùn)動 #正運(yùn)動技術(shù) #運(yùn)動控制器
激光振鏡運(yùn)動控制器在流水線激光打標(biāo)上的應(yīng)用 #正運(yùn)動技術(shù) #運(yùn)動控制器 #運(yùn)動控制 #正運(yùn)動
步進(jìn)控制的光柵尺全閉環(huán)EtherCAT運(yùn)動控制器ZMC432CL-V2(五):Python編程調(diào)試 #正運(yùn)動
激光振鏡運(yùn)動控制器在玻璃激光鉆孔上的應(yīng)用#正運(yùn)動技術(shù) #運(yùn)動控制器 #激光振鏡 #EtherCAT #正運(yùn)動
機(jī)器視覺運(yùn)動控制一體機(jī)在背靠背點膠焊錫機(jī)上的應(yīng)用#正運(yùn)動技術(shù) #運(yùn)動控制器 #運(yùn)動控制系統(tǒng)方案 #正運(yùn)動
運(yùn)動控制模塊:Delta機(jī)械手柔性上下料開發(fā)零門檻! #正運(yùn)動技術(shù) #運(yùn)動控制器 #Delta機(jī)械手
激光振鏡運(yùn)動控制器在大幅面激光薄膜切割的應(yīng)用 #正運(yùn)動技術(shù) #運(yùn)動控制器 #運(yùn)動控制 #E
LabVIEW運(yùn)動控制(五):EtherCAT運(yùn)動控制器的心跳檢測功能 #正運(yùn)動技術(shù) #運(yùn)動控制器 #正運(yùn)動
EtherCAT轉(zhuǎn)CANopen轉(zhuǎn)換機(jī)制:運(yùn)動控制器與傳感器數(shù)據(jù)交互的核心技術(shù)解析
EtherCAT運(yùn)動控制器在ROS上的應(yīng)用(下)
評論