技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(下)

運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(下)

時(shí)間:2021-09-26 17:43:21來(lái)源:深圳市正運(yùn)動(dòng)技術(shù)有限公司

導(dǎo)語(yǔ):?今天,正運(yùn)動(dòng)技術(shù)為大家分享一下《運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(下)》。本章節(jié)在《運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(上)》程序的基礎(chǔ)上稍作修改,實(shí)現(xiàn)在ROS下正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制卡的開發(fā)。

  今天,正運(yùn)動(dòng)技術(shù)為大家分享一下《運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(下)》。本章節(jié)在《運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(上)》程序的基礎(chǔ)上稍作修改,實(shí)現(xiàn)在ROS下正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制卡的開發(fā)。

  在正式學(xué)習(xí)之前,我們先了解一下正運(yùn)動(dòng)技術(shù)的運(yùn)動(dòng)控制卡ECI2618和ECI2828。這兩款產(chǎn)品分別是6軸,8軸運(yùn)動(dòng)控制卡。

運(yùn)動(dòng)控制

  ECI2618支持6軸脈沖輸入與編碼器反饋,板載24點(diǎn)輸入,16點(diǎn)輸出,2AD,2DA,支持手輪接口,其中特定輸出口支持高速PWM控制。

運(yùn)動(dòng)控制

  ECI2828支持8軸總線型輸入與編碼器反饋,板載24點(diǎn)輸入,16點(diǎn)輸出,2路AD,2路DA,支持手輪接口,其中特定輸出口支持高速PWM控制。

  ECI2618,ECI2828均使用同一套API函數(shù),均支持C、C++、C#、LabVIEW、Python、Delphi等開發(fā)語(yǔ)言,支持VC6.0、VB6.0、Qt、.Net等平臺(tái),支持Windows、Linux、WinCE、iMac等操作系統(tǒng)。

  在《運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(上)》里,我們講了ROS應(yīng)用背景,以及Ubuntu18.04安裝ROS Melodic詳細(xì)過(guò)程,并且通過(guò)ROS編程案例——消息發(fā)布和訂閱,來(lái)詳細(xì)說(shuō)明正運(yùn)動(dòng)技術(shù)運(yùn)動(dòng)控制卡ROS的應(yīng)用開發(fā)。

  從上篇中,我們得知,ROS作為一個(gè)靈活的操作系統(tǒng),系統(tǒng)上的節(jié)點(diǎn)具有很大的隨意性,它們可以位于不同的計(jì)算機(jī)上,甚至可以位于不同的網(wǎng)絡(luò)上。我們可以使用一個(gè)Arduino作為一個(gè)節(jié)點(diǎn)發(fā)布信息,使用一臺(tái)筆記本電腦作為一個(gè)節(jié)點(diǎn)訂閱上述信息以及使用一臺(tái)手機(jī)作為一個(gè)節(jié)點(diǎn)驅(qū)動(dòng)電機(jī)等。上述靈活性使得ROS可以適應(yīng)很多不同場(chǎng)合的應(yīng)用。

  ROS具有分布式點(diǎn)對(duì)點(diǎn)設(shè)計(jì)、多語(yǔ)言支持、精簡(jiǎn)與集成、工具包豐富以及免費(fèi)并且開源等特點(diǎn)。ROS系統(tǒng)正在機(jī)器人行業(yè)一步一步的主導(dǎo)中國(guó)市場(chǎng)。

  本篇文章我們主要講配置正運(yùn)動(dòng)技術(shù)動(dòng)態(tài)鏈接庫(kù)環(huán)境以及運(yùn)動(dòng)控制卡在ROS下的單軸運(yùn)動(dòng)。

  一、配置正運(yùn)動(dòng)技術(shù)動(dòng)態(tài)鏈接庫(kù)環(huán)境

  1.添加動(dòng)態(tài)鏈接庫(kù)

  在程序包目錄zmotion(catkin_ws/src/zmotion/)下新建文件夾lib,存放動(dòng)態(tài)鏈接庫(kù)libzmotion.so。

運(yùn)動(dòng)控制

運(yùn)動(dòng)控制

  在CMakeLists.txt中添加第三方庫(kù)路徑(build下):

  link_directories( lib ${catkin_LIB_DIRS})

  并在CMakeLists.txt文件中鏈接動(dòng)態(tài)鏈接庫(kù)(調(diào)用鏈接庫(kù)時(shí)文件名去掉lib和.so):

  target_link_libraries(talker ${catkin_LIBRARIES} zmotion)

  2.添加庫(kù)函數(shù)zmcaux.cpp、zmotion.h、zmcaux.h

  添加zmcaux.cpp文件到catkin_ws/src/zmotion/src目錄下:

運(yùn)動(dòng)控制

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

運(yùn)動(dòng)控制

  并在CMakeLists.txt中添加這三個(gè)庫(kù)文件:

  add_executable(talker src/talker.cppsrc/zmcaux.cppinclude/zmotion/zmotion.hinclude/zmotion/zmcaux.h)

  修改頭文件引用,如下圖所示(要填include文件的相對(duì)地址,zmotion為程序包名)

  #include "zmotion/zmotion.h"#include "zmotion/zmcaux.h"

運(yùn)動(dòng)控制

  二、ROS下的單軸運(yùn)動(dòng)

  這部分主要講運(yùn)動(dòng)控制卡在ROS下的單軸運(yùn)動(dòng)。

  talker節(jié)點(diǎn)實(shí)現(xiàn)軸0的運(yùn)動(dòng),并將其位置實(shí)時(shí)發(fā)送給listener節(jié)點(diǎn),修改talker.cpp如下:

  1.添加句柄和頭文件

  ·

  #include "zmotion/zmotion.h"#include "zmotion/zmcaux.h"ZMC_HANDLE g_handle=NULL;

  2.通過(guò)EtherNET鏈接運(yùn)動(dòng)控制卡

  ·

  ZMC_LinuxLibInit();//以太網(wǎng)(Ethernet)鏈接char ipaddr[16] = {"192.168.0.11"};int x =ZAux_OpenEth(ipaddr,&g_handle); //***ZMCROS_INFO("以太網(wǎng)鏈接控制器:%d",x);//返回0則連接成功

  3.實(shí)現(xiàn)單軸運(yùn)動(dòng)

  ·

  ZAux_Direct_SetSpeed(g_handle, 0, 200); //設(shè)置軸0運(yùn)動(dòng)速度為200units/sZAux_Direct_SetAccel(g_handle, 0, 2000); //設(shè)置軸0加速度為2000units/s/sZAux_Direct_SetDecel(g_handle, 0, 2000); //設(shè)置軸0減速度為2000units/s/sZAux_Direct_SetSramp(g_handle, 0, 100); //設(shè)置軸0 S曲線時(shí)間100msZAux_Direct_Single_Move(g_handle, 0, 300); //軸0 相對(duì)與當(dāng)前位置運(yùn)動(dòng)100 units

  4.將實(shí)時(shí)位置發(fā)送給listener節(jié)點(diǎn)

  ·

  float piValue;while (ros::ok()){ std_msgs::Float64 msg; ZAux_Direct_GetMpos(g_handle, 0, & piValue);//獲取時(shí)候 msg.data = piValue; //輸出,用來(lái)替代prinf/cout ROS_INFO("Position is: %f", msg.data); chatter_pub.publish(msg); ros::spinOnce(); //休眠,來(lái)使發(fā)布頻率為10Hz loop_rate.sleep();}

  5.編譯

  ·

  cd ~/catkin_ws/catkin_make

  6.運(yùn)行程序

  ·

  //打開一個(gè)新終端roscore//打開另一個(gè)新終端cd ~/catkin_ws/rosrun zmotion talker//打開另一個(gè)新終端cd ~/catkin_ws/rosrun zmotion listener

  運(yùn)行效果如下,實(shí)時(shí)輸出位置:

運(yùn)動(dòng)控制

  此外,我們?cè)谏衔粰C(jī)上的示波器上可以看見,軸0做S曲線運(yùn)動(dòng):

運(yùn)動(dòng)控制

  【參考文獻(xiàn)】

  1.ROS Wiki:http://wiki.ros.org/

  2.正運(yùn)動(dòng)技術(shù):ZMotion PC函數(shù)庫(kù)編程手冊(cè)

  3.https://blog.csdn.net/weixin_42544625/article/details/86802753

  本次,正運(yùn)動(dòng)技術(shù)的《運(yùn)動(dòng)控制卡在ROS上的應(yīng)用(下)》就分享到這里,更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào)。

  本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國(guó)智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來(lái)源。

標(biāo)簽: 運(yùn)動(dòng)控制

點(diǎn)贊

分享到:

上一篇:CC-Link 網(wǎng)絡(luò)在三菱 ROBOT 與...

下一篇:到底什么是“無(wú)源物聯(lián)網(wǎng)”?

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.wangxinlc.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)