色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

EtherCAT運動控制器在ROS上的應用開發案例(上)

伺服與運動控制 ? 來源:正運動小助手 ? 2024-03-17 11:06 ? 次閱讀

本文以正運動技術EtherCAT運動控制器ZMC432和ZMC408CE為例,介紹正運動技術運動控制器在ROS上的應用開發。

在正式學習之前,我們先了解一下正運動技術的EtherCAT運動控制器ZMC432和ZMC408CE。這兩款產品分別是32軸,8軸EtherCAT運動控制器。

ZMC432功能簡介

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

c4386954-e330-11ee-a297-92fbcf53809c.jpg

ZMC432最多可支持32軸運動控制,支持直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨等功能。

ZMC432支持32軸脈沖輸入與編碼器反饋,通用IO包含24路輸入口和12個輸出口;2路AD,2路DA;其中特定輸出口支持高速PWM控制。

ZMC432通過EtherCAT和CAN總線進行硬件資源擴展,可擴展至4096路輸入和4096路輸出。

c4445d90-e330-11ee-a297-92fbcf53809c.png

ZMC408CE功能簡介

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

c454572c-e330-11ee-a297-92fbcf53809c.jpg

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個輸出。

c45ca936-e330-11ee-a297-92fbcf53809c.png

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

01 ROS應用背景

ROS(robot operating system)是用于機器人的一種開源后操作系統(次級操作系統)。首要設計目標是在機器人研發領域提高代碼復用率。

ROS是一種分布式處理框架(又名Nodes)。這使可執行文件能被單獨設計,并且在運行時松散耦合。這些過程可以封裝到數據包(Packages)和堆棧(Stacks)中,以便于共享和分發。

ROS還支持代碼庫的聯合系統。使得協作亦能被分發。這種從文件系統級別到社區一級的設計讓獨立地決定發展和實施工作成為可能。上述所有功能都能由ROS的基礎工具實現。

簡單來說,ROS作為一個靈活的操作系統,系統上的節點具有很大的隨意性,它們可以位于不同的計算機上,甚至可以位于不同的網絡上。我們可以使用一個Arduino作為一個節點發布信息,使用一臺筆記本電腦作為一個節點訂閱上述信息以及使用一臺手機作為一個節點驅動電機等。

上述靈活性使得ROS可以適應很多不同場合的應用。

ROS的主要特點可以歸納為以下幾條

1.分布式點對點設計

ROS的點對點設計以及服務和節點管理器等機制可以分散由計算機視覺語音識別等功能帶來的實時計算壓力,能夠適應多機器人遇到的挑戰。

c480db58-e330-11ee-a297-92fbcf53809c.png

2.多語言支持

ROS支持許多種不同的語言,例如C++、Python、Octave和LISP,也包含其他語言的多種接口實現。

3.精簡與集成

ROS建立的系統具有模塊化的特點,各模塊中的代碼可以單獨編譯,而且編譯使用的CMake工具使它很容易的就實現精簡的理念。

ROS基本將復雜的代碼封裝在庫里,只是創建了一些小的應用程序為ROS顯示庫的功能,就允許了對簡單的代碼超越原型進行移植和重新使用。

4.工具包豐富

為了管理復雜的ROS軟件框架,我們利用了大量的小工具去編譯和運行多種多樣的ROS組建,從而設計成了內核,而不是構建一個龐大的開發和運行環境。

c4ab56d0-e330-11ee-a297-92fbcf53809c.png

5.免費并且開源

ROS所有的源代碼都是公開發布的。

ROS在行業中的一些應用

近年來,國內外機器人企業、無人駕駛企業,無人機企業(大疆無人機)都紛紛加入ROS陣營。且在各大招聘中,不管是騰訊、小馬智行、阿里巴巴的菜鳥網絡、百度Apollo等,招聘無人駕駛規劃算法工程師、自主導航工程師、機器人感知算法工程師、系統平臺研發架構師等崗位時,均要求“熟悉ROS”或者“具備ROS開發經驗者優先”。

從這些我們可以看出來ROS系統的發展趨勢,正在機器人行業一步一步的主導中國市場。

以下是一些ROS典型應用場景:

1.機器人控制器中的大佬人物 - KEBA,他們的控制器已經支持ROS。

c4b6fbc0-e330-11ee-a297-92fbcf53809c.png

2.美國NASA基于ROS開發的Robonaut 2已經在國際空間站里干活了。

3.百度apollo無人車的底層是基于ROS開發的,差點改成了ROS 2,可以在github上找到(apollo-platform)。

4.ROS-I最近正準備和微軟、寶馬合作,開發一套自動化解決方案(參考:A ROS-Industrial Collaboration with Microsoft and BMW)。

5.許多工業機械臂已經開始使用ROS系統,其中2017年底ROS-I官方發布的五周年視頻不乏四大家族中的機器人。

02 軟件安裝過程

此部分主要講Ubuntu18.04安裝ROS Melodic詳細過程(本文以Ubuntu18.04為例,其他同理,并不影響運動控制器的運用)。

1.設置sources.list

$ sudo sh -c '. /etc/lsb-release && echo "deb 
http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main" > 
/etc/apt/sources.list.d/ros-latest.list'
2.設置key(公鑰已更新)
$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 
421C365BD9FF1F717815A3895523BAEEB01FA116

c541ad2e-e330-11ee-a297-92fbcf53809c.png

3.更新package(時間有點長,耐心等待)

$ sudo apt-get update
此時可能會遇到以下問題:

c55031a0-e330-11ee-a297-92fbcf53809c.png

解決辦法如下,在終端輸入:

$sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F42ED6FBAB17C654
$ sudo apt-get update
c56030f0-e330-11ee-a297-92fbcf53809c.png

當出現Reading package lists… Done說明更新完成。

4.安裝ROS melodic完整版

$ sudo apt-get install ros-melodic-desktop-full
5.初始化rosdep
$sudo rosdep init
$rosdep update
$echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc

效果示意圖:

c5707334-e330-11ee-a297-92fbcf53809c.png

c580ad08-e330-11ee-a297-92fbcf53809c.png

輸入指令sudo rosdep init若遇到以下問題:

(1)sudo : rosdep : command not found問題

在終端輸入:sudo apt install rospack-tools

(2)ERROR : cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list Website may be down.

①在終端輸入:sudo gedit / etc / hosts,打開hosts文件,內容如下;

c59058de-e330-11ee-a297-92fbcf53809c.png

②將:199.232.28.133 raw.githubusercontent.com添加在文件中,添加后的文件如下;

c59e98cc-e330-11ee-a297-92fbcf53809c.png

③然后保存文件后退出;

c5afe6e0-e330-11ee-a297-92fbcf53809c.png

④在終端執行:sudo rosdep init,問題解決。

6.測試ROS是否安裝成功

$ roscore
成功打開如下圖所示:

c5be0626-e330-11ee-a297-92fbcf53809c.png

03 ROS編程案例

這部分主要講“消息發布”和“訂閱”兩個ROS編程案例。

1.創建一個ROS工作空間。

$mkdir -p ~/catkin_ws/src
$cd ~/catkin_ws/
$ catkin_make

2.創建ROS程序包(zmotion為程序包名,也可以定義為其他)。

$cd ~/catkin_ws/src
$catkin_create_pkg zmotion std_msgs roscpp
$cd ~/catkin_ws
$ catkin_make
3.在創建完程序包后,每次運行需要source ~ / catkin_ws / devel / setup.bash,否則無法找到文件。

解決每次都要source方法:

在終端輸入:
$gedit ~/.bashrc
在文件末尾添加并保存:
$ source ~/catkin_ws/devel/setup.bash
4.新建節點文件。

在zmotion包目錄中創建一個src目錄:

$cd ~/catkin_ws/src/zmotion //進入zmotion程序包路徑下
$mkdir -p src    //新建src文件夾,用來存放c++程序
$cd src/    //進入src文件夾路徑下
$touch talker.cpp   //新建發布消息節點cpp文件
$ touch listener.cpp //新建訂閱消息節點cpp文件
5.撰寫發布節點(talker.cpp)。

實現功能:

(1)初始化ROS系統;

(2)在chatter topic上發布std_msgs/Float64消息;

(3)以每秒10次頻率發布消息。

#include "ros/ros.h"
#include "std_msgs/Float64.h"
#include 
int main(int argc, char **argv)
{
  //初始化ROS,名稱重映射(唯一),必須為base name,不含/
  ros::init(argc, argv, "talker"); 
  //為進程的節點創建一個句柄,第一個創建的NodeHandle初始化節點
  ros::NodeHandle n;
  //告訴主機要在chatter topic上發布一個std_msgs消息
  //主機會訂閱所有chatter topic節點,參數表示發布隊列的大?。ㄏ冗M先出)
  ros::Publisher chatter_pub = n.advertise("chatter", 1000);
  ros::Rate loop_rate(10);  //自循環頻率
  int count = 0;
  while (ros::ok())
  {
std_msgs::Float64msg;
    msg.data = count*1.0;
    //輸出,用來替代prinf/cout
    ROS_INFO("Position is: %f", msg.data); 
chatter_pub.publish(msg);
    ros::spinOnce();
    //休眠,來使發布頻率為10Hz
    loop_rate.sleep();
    ++count;
  }
  return 0;
}
6.撰寫訂閱節點(listener.cpp)。

實現功能:

(1)初始化ROS系統;

(2)訂閱chatter topic消息;

(3)進入自循環,等待消息到達;

(4)消息到達,調用chatterCallback()函數。

#include "ros/ros.h"
#include "std_msgs/Float64.h"
//回調函數
void chatterCallback(const std_msgs::ConstPtr& msg)
{
  ROS_INFO("I heard: %f", msg->data);
}
int main(int argc, char **argv)
{
  ros::init(argc, argv, "listener");
  ros::NodeHandle n;
  //告訴master需要訂閱chatter topic消息
  ros::Subscriber sub = n.subscribe("chatter", 1000, chatterCallback);
  ros::spin(); //自循環
  return 0;
}

7.修改CMakeLists.txt。

(1)打開程序包zmotion(catkin_ws / src / zmotion)路徑,找到CMakeLists.txt文件。

c5c965fc-e330-11ee-a297-92fbcf53809c.png

(2) 最低版本修改為2.8.3。

cmake_minimum_required(VERSION 2.8.3)
(3) 找到find_package,添加依賴包message_generation。
find_package(catkin REQUIRED COMPONENTS
   roscpp
   std_msgs
   message_generation
)
(4)確保generate_message被調用。
generate_messages(
   DEPENDENCIES
   std_msgs
)
(5)確保在運行時依賴中也添加了該消息的依賴。
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES beginner_tutorials
# CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
  CATKIN_DEPENDS message_runtime
)
(6)修改build下的設置

c5d310fc-e330-11ee-a297-92fbcf53809c.png

①將include_directories中include解注釋。

c5e42b1c-e330-11ee-a297-92fbcf53809c.png

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)

②在指定位置添加下列代碼下面的代碼可以任意添加在build中,我為了美觀所以添加在相應位置的,只要在build中添加都生效。

add_executable(talker src/talker.cpp)
add_executable(listener src/listener.cpp)
add_dependencies(talker $zmotion_generate_messages_cpp)//zmotion為程序包名
target_link_libraries(talker
   ${catkin_LIBRARIES}
)
target_link_libraries(listener
   ${catkin_LIBRARIES}
)

c5f146b2-e330-11ee-a297-92fbcf53809c.png

(7)最后,列出完整的CMakeLists.txt。

cmake_minimum_required(VERSION 2.8.3)
project(zmotion)
find_package(catkin REQUIRED COMPONENTS
  roscpp
  std_msgs
  message_generation
)
## Generate added messages and services with any dependencies listed here
generate_messages(
   DEPENDENCIES
   std_msgs
)
###################################
## catkin specific configuration ##
###################################
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES zmotion
# CATKIN_DEPENDS roscpp std_msgs
# DEPENDS system_lib
CATKIN_DEPENDS message_runtime
)
###########
## Build ##
###########
## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
  include
  ${catkin_INCLUDE_DIRS}
)
## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
add_executable(talker src/talker.cpp)
add_executable(listener src/listener.cpp)
## Rename C++ executable without prefix
add_dependencies(talker $zmotion_generate_messages_cpp)
## Specify libraries to link a library or executable target against
target_link_libraries(talker
   ${catkin_LIBRARIES}
)
target_link_libraries(listener
   ${catkin_LIBRARIES}
)
8.修改package.xml文件。
 
message_generation
message_generation
 
message_runtime

c6065dd6-e330-11ee-a297-92fbcf53809c.png

9.編譯。

$ cd ~/catkin_ws
$ catkin_make

10.運行程序。

(1)打開一個新終端,啟動ROS系統;

$ roscore
(2)打開一個新終端,運行發布節點;
$ cd ~/catkin_ws //進入工作控件目錄下
$ rosrun zmotion talker //運行發布節點程序
(3)打開一個新終端,運行訂閱節點;
$ cd ~/catkin_ws
$ rosrun zmotion listener
(4)結果。

運行發布節點程序的結果:

[INFO] [WallTime: 1314931831.774057] Position is: 1.000000
[INFO] [WallTime: 1314931832.775497] Position is: 2.000000
[INFO] [WallTime: 1314931833.778937] Position is: 3.000000
[INFO] [WallTime: 1314931834.782059] Position is: 4.000000
[INFO] [WallTime: 1314931835.784853] Position is: 5.000000

運行訂閱節點程序的結果:

[INFO] [WallTime: 1314931970.262246] I heard: 1.000000
[INFO] [WallTime: 1314931971.266348] I heard: 2.000000
[INFO] [WallTime: 1314931972.270429] I heard: 3.000000
[INFO] [WallTime: 1314931973.274382] I heard: 4.000000
[INFO] [WallTime: 1314931974.277694] I heard: 5.000000
本次,正運動技術EtherCAT運動控制器在ROS上的應用(上),就分享到這里。


審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼器
    +關注

    關注

    45

    文章

    3638

    瀏覽量

    134426
  • 運動控制器
    +關注

    關注

    2

    文章

    401

    瀏覽量

    24703
  • PWM控制
    +關注

    關注

    7

    文章

    194

    瀏覽量

    26278
  • ROS
    ROS
    +關注

    關注

    1

    文章

    278

    瀏覽量

    17001
  • EtherCAT總線
    +關注

    關注

    5

    文章

    72

    瀏覽量

    5375

原文標題:EtherCAT運動控制器在ROS上的應用(上)

文章出處:【微信號:伺服與運動控制,微信公眾號:伺服與運動控制】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    EtherCAT運動控制器ROS的應用(

    本文以正運動技術EtherCAT運動控制器ZMC432和ZMC408CE為例,介紹正運動技術運動
    的頭像 發表于 03-06 11:47 ?1198次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>ROS</b><b class='flag-5'>上</b>的應用(<b class='flag-5'>上</b>)

    EtherCAT運動控制器ROS的應用開發案例(下)

    本篇文章我們主要介紹正運動技術動態鏈接庫環境配置以及EtherCAT運動控制器ROS下的單軸
    的頭像 發表于 03-17 11:11 ?917次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>ROS</b><b class='flag-5'>上</b>的應用<b class='flag-5'>開發案</b>例(下)

    EtherCAT總線運動控制器硬件是如何進行接線的?

    EtherCAT總線運動控制器硬件是如何進行接線的?EtherCAT總線運動控制器有哪些參數設置
    發表于 07-15 13:02

    EtherCAT運動控制器的PLC編程(一) 直線插補 精選資料推薦

    、ZPlC編程語言,以及可以使用正運動技術ZHMI界面編程的EtherCAT運動控制器。正式學習直線插補之前...
    發表于 09-01 08:44

    運動技術運動控制器EtherCAT總線快速入門

      之前正運動技術與大家分享了,運動控制器的固件升級、ZBasic 程序開發、ZPLC 程序開發、與觸摸屏通訊和輸入/輸出IO 的應用、
    發表于 09-07 06:59

    運動技術運動控制器EtherCAT總線的基礎使用

    EtherCAT總線擴展模塊包含哪些?怎樣去使用正運動技術運動控制器EtherCAT總線?
    發表于 09-27 08:34

    EtherCAT總線運動控制的優勢主要體現在哪?

    自由切換;f、方便上位機遠程診斷與遠程維護電氣系統,預測性維護也更方便。5、沒有實際的運動控制器也能仿真與調試運動控制系統:虛擬仿真與調試日漸成為工業自動化行業的剛需,一是可以
    發表于 02-20 10:20

    經濟型EtherCAT運動控制器EtherCAT總線快速入門

    本文主要介紹XPLC006E多軸經濟型EtherCAT總線運動控制器控制EtherCAT總線驅動
    發表于 05-11 09:49

    EtherCAT總線運動控制的優勢主要體現在哪?

    )/CSV(周期速度)/CST(周期轉矩)可以自由切換; f、方便上位機遠程診斷與遠程維護電氣系統,預測性維護也更方便。 5、沒有實際的運動控制器也能仿真與調試運動控制系統: 虛擬仿真
    發表于 12-13 11:37

    全國產EtherCAT運動控制邊緣控制器(五):IO配置與回零運動的Python+Qt開發

    全國產EtherCAT運動控制邊緣控制器ZMC432H是正運動的一款軟硬件全國產自主可控,運動
    的頭像 發表于 10-22 10:51 ?978次閱讀
    全國產<b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制</b>邊緣<b class='flag-5'>控制器</b>(五):IO配置與回零<b class='flag-5'>運動</b>的Python+Qt<b class='flag-5'>開發</b>

    EtherCAT運動控制器ROS的應用(下)

    運動技術動態鏈接庫環境配置以及EtherCAT運動控制器ROS下的單軸
    的頭像 發表于 03-13 14:54 ?573次閱讀
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制器</b><b class='flag-5'>在</b><b class='flag-5'>ROS</b><b class='flag-5'>上</b>的應用(下)

    ZMC900E控制器ROS2環境安裝指南

    ZMC900E是致遠電子研發的最新一代高性能EtherCAT控制器,支持ROS2系統,兼備強大功能和實時性,為工業應用帶來新的可能。本文將詳述ROS2特點和安裝,助力用戶
    的頭像 發表于 04-29 08:24 ?583次閱讀
    ZMC900E<b class='flag-5'>控制器</b>之<b class='flag-5'>ROS</b>2環境安裝指南

    EtherCAT運動控制器與PLC的區別

    工業自動化領域,EtherCAT運動控制器和PLC(Programmable Logic Controller,可編程邏輯控制器)都是不可
    的頭像 發表于 06-12 15:47 ?904次閱讀

    BissC絕對值編碼EtherCAT運動控制器中的應用

    BissC多圈絕對值編碼EtherCAT運動控制器中的應用!
    的頭像 發表于 07-24 10:02 ?602次閱讀
    BissC絕對值編碼<b class='flag-5'>器</b><b class='flag-5'>在</b><b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制器</b>中的應用

    SSI絕對值編碼EtherCAT運動控制器中的應用

    SSI絕對值編碼EtherCAT運動控制器中的應用
    的頭像 發表于 10-09 10:13 ?580次閱讀
    SSI絕對值編碼<b class='flag-5'>器</b><b class='flag-5'>在</b><b class='flag-5'>EtherCAT</b><b class='flag-5'>運動</b><b class='flag-5'>控制器</b>中的應用
    主站蜘蛛池模板: 大学生第一次破苞疼哭了| 亚洲视频91| 2021国产在线视频| 国产成人a视频在线观看| 蜜芽无码亚洲资源网站| 特级毛片全部免费播放免下载| 真实国产乱子伦精品一区二区三区| 风情韵味人妻HD| 免费中文字幕视频| 在线视频 国产 日韩 欧美| 大胸美女脱内衣黄网站| 女人久久WWW免费人成看片| 校园刺激全黄H全肉细节文| yellow日本高清在线| 久久久久琪琪精品色| 色欲AV精品人妻一区二区三区 | 久久亚洲AV成人无码国产漫画 | 花蝴蝶免费版高清版| 色偷偷成人网免费视频男人的天堂| 在线看片福利无码网址| 99久久免热在线观看6| 国产成人cao在线| 毛片免费观看的视频| 偷拍 拍自 欧美色区| 99精品久久精品一区二区| JAPANRCEP老熟妇乱子伦视频| 久久er99热精品一区二区| 亚洲精品久久一区二区三区四区| 国产亚洲精品a在线观看app| 亚洲国产成人在线视频| 簧片高清在线观看| 中文字幕在线视频网站| 暖暖视频免费观看社区| 扒开 浓密 毛| 亚洲AV无码影院在线播放 | 高清AV熟女一区| 午夜福利在线观看6080| 狠狠色噜噜狠狠狠狠米奇777| 夜夜女人国产香蕉久久精品| 女人爽得直叫免费视频| 国产成人精选免费视频|