移植fake joint到ROS2總結

2021-10-04 05:56:19 字數 971 閱讀 8843

為了測試moveit2,需要fake_joint。然而找不到fake_joint的ros2版本,決定porting。另外還有幾個目的:

1. 可以深入了解ros2_control。

2. 實現真正的硬體驅動。

學習總結

ros2_control的作用:看國內的許多文章對於硬體驅動的實現都是自己實現乙個action server,以實現和moveit的對接。這樣就得自己處理trajectory等許多msg。ros_control包則是實現了對硬體層的抽象,驅動只需要實現兩個函式(read, write, )就好了。

ros1的ros_control有action server,但是ros2_control目前還沒有實現。這樣目前與moveit2之間的通訊只能夠告訴moveit2動作成功/失敗,但是不能反饋中間過程資料。

ros2_control的joint_trajectory_controller關於joints的名字是從controller的yaml配置檔案裡來的,其順序也是controller的順序。所以其接收jointtrajectory的訊息也是需要按照這個順序發布,因為joint_trajectory_controller在接收的時候並沒有檢查所接收訊息裡面joints的名字,只檢查其數目是否和controller本身的joints數目一致。

引數傳遞:現在實現的方法是fake_joint_driver_node_ros2.cpp裡面create乙個node,然後用node.declare_paramenter以及node.get_parameter實現。ros2的引數傳遞可以通過yaml的配置檔案實現。要注意的是如果直接把yaml檔名作為launc**件的node引數,那麼yaml檔案第一行是node的名字,說明這個配置檔案的引數是為這個node服務的。

fake_joint_driver_ros2.cpp要測試的話,是需要pos的初始值的。否則register_joint_state_handle的時候就會出錯。

最後的實現請參閱github上面我的**。

openwrt libubox 移植到ARM上

由於專案的需要,需要把openwrt 上的libubox庫移植到arm上,libubox是openwrt的基礎庫,是乙個事件驅動庫,具體的可以到openwrt官網上去了解。宿主機為 ubuntu 10.04 交叉編譯工具鏈版本為 arm linux gcc 4.5.1,目標機為 s3c6410 s5...

移植程式到symbian平台

symbian平台理論上可以平移標準的c c 語 言程式,以及標準庫。只需要在mmp檔案中進行如下編寫 target hello.exe targettype exe uid 0 sourcepath source slhello.c systeminclude epoc32 include lib...

原 移植madplay到arm linux

移植 madplay 需要如下檔案 madplay 0.15.2b.tar.gz,libmad 0.15.1b.tar.gz,libid3tag 0.15.1b.tar.gz 和 編譯方法如下 zlib configure prefix home madplay allokhere 修改makefi...