日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ROS技术点滴 —— MoveIt!中的运动学插件

發(fā)布時(shí)間:2023/12/10 编程问答 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS技术点滴 —— MoveIt!中的运动学插件 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

MoveIt!是ROS中一個(gè)重要的集成化開(kāi)發(fā)平臺(tái),由一系列移動(dòng)操作的功能包組成,提供運(yùn)動(dòng)規(guī)劃、操作控制、3D感知、運(yùn)動(dòng)學(xué)等功能模塊,是ROS社區(qū)中使用度排名前三的功能包,目前已經(jīng)支持眾多機(jī)器人硬件平臺(tái)。

MoveIt!中的眾多功能都使用插件機(jī)制集成,其中有一個(gè)重要的功能模塊——運(yùn)動(dòng)學(xué)插件。

今天我們就來(lái)聊下MoveIt!中的運(yùn)動(dòng)學(xué)求解器。

一、KDL

Kinematics and Dynamics Library (KDL)是MoveIt!中的默認(rèn)運(yùn)動(dòng)學(xué)插件,在使用MoveIt! Setup Assistant進(jìn)行模型配置時(shí),可以進(jìn)行配置。

配置完成后,就可以運(yùn)行demo.launch控制虛擬機(jī)械臂進(jìn)行運(yùn)動(dòng)規(guī)劃了。但是KDL有自己的優(yōu)缺點(diǎn):

比如一次逆解的求解時(shí)間:0.062192秒。。。

很多時(shí)候我們?cè)谧鲞\(yùn)動(dòng)規(guī)劃的時(shí)候,MoveIt!經(jīng)常會(huì)提示規(guī)劃失敗、求解失敗等錯(cuò)誤,很多都是因?yàn)镵DL這款運(yùn)動(dòng)學(xué)插件導(dǎo)致的,那么問(wèn)題就來(lái)了——能不能更換一個(gè)運(yùn)動(dòng)學(xué)插件?

當(dāng)然可以,以下介紹兩個(gè)用的最多的運(yùn)動(dòng)學(xué)插件:TRAC-IK和IKFAST

二、TRAC-IK

TRAC-IK和KDL類似,也是一種基于數(shù)值解的運(yùn)動(dòng)學(xué)插件,但是在算法層面上進(jìn)行了很多改進(jìn),求解效率高了很多。比如在下邊這張圖中,左側(cè)的紅點(diǎn)是KDL無(wú)法求解的姿態(tài)點(diǎn),但是在右側(cè)使用TRAC-IK是可以求解的。

那么如何將KDL更換成TRAC-IK呢,方法很簡(jiǎn)單,ROS的軟件源中已經(jīng)集成了TRAC-IK的安裝包,可以直接使用以下命令安裝:

sudo apt-get install ros-kinetic-trac-ik-kinematics-plugin

然后修改機(jī)械臂MoveIt!配置功能包下的kinematics.yaml文件就可以使用啦:

arm:kinematics_solver: tarc_ik_kinematics_plugin/trac_ikKinematicsPluginkinematics_solver_attempts: 3kinematics_solver_search_resolution: 0.005kinematics_solver_timeout: 0.05

接下來(lái)再次運(yùn)行demo.launch,默認(rèn)加載的就是TRAC-IK運(yùn)動(dòng)學(xué)插件了,試試規(guī)劃求解的效率是不是高了很多!

但是TRAC-IK也有問(wèn)題,它是一種數(shù)值算法,每次求解得到的關(guān)節(jié)位置不一定相同。

三、IKFAST

?

IKFAST是一種基于解析算法的運(yùn)動(dòng)學(xué)插件,可以保證每次求解的一致性。

相比KDL和TRAC-IK,IKFAST的安裝過(guò)程就比較復(fù)雜了,不過(guò)就筆者的使用經(jīng)驗(yàn)來(lái)講,IKFAST的效果還是很推薦的,所以不妨一試,以下就是IKFAST的安裝配置過(guò)程。

  • 安裝程序:
sudo apt-get install cmake g++ git ipython minizip python-dev python-h5py python-numpy python-scipy qt4-dev-tools
  • 安裝依賴庫(kù):
sudo apt-get install libassimp-dev libavcodec-dev libavformat-dev libavformat-dev libboost-all-dev libboost-date-time-dev libbullet-dev libfaac-dev libglew-dev libgsm1-dev liblapack-dev liblog4cxx-dev libmpfr-dev libode-dev libogg-dev libpcrecpp0v5 libpcre3-dev libqhull-dev libqt4-dev libsoqt-dev-common libsoqt4-dev libswscale-dev libswscale-dev libvorbis-dev libx264-dev libxml2-dev libxvidcore-dev
  • 安裝OpenSceneGraph-3.4:
sudo apt-get install libcairo2-dev libjasper-dev libpoppler-glib-dev libsdl2-dev libtiff5-dev libxrandr-dev git clone https://github.com/openscenegraph/OpenSceneGraph.git --branch OpenSceneGraph-3.4 cd OpenSceneGraph mkdir build; cd build cmake .. -DDESIRED_QT_VERSION=4 make -j$(nproc) sudo make install
  • 安裝sympy
pip install --upgrade --user sympy==0.7.1
  • 刪除mpmath
sudo apt remove python-mpmath
  • 安裝IKFast功能包
sudo apt-get install ros-kinetic-moveit-kinematics
  • 安裝OpenRave
sudo apt-get install ros-kinetic-openrave
  • 創(chuàng)建collada文件
export MYROBOT_NAME="marm" rosrun xacro xacro --inorder -o "$MYROBOT_NAME".urdf "$MYROBOT_NAME".xacro rosrun collada_urdf urdf_to_collada "$MYROBOT_NAME".urdf "$MYROBOT_NAME".dae
  • 創(chuàng)建dae文件
export IKFAST_PRECISION="5" cp "$MYROBOT_NAME".dae "$MYROBOT_NAME".backup.dae # create a backup of your full precision dae. rosrun moveit_kinematics round_collada_numbers.py "$MYROBOT_NAME".dae "$MYROBOT_NAME".dae "$IKFAST_PRECISION"
  • 查看生成的模型
openrave-robot.py "$MYROBOT_NAME".dae --info links

openrave "$MYROBOT_NAME".dae

  • 生成六軸機(jī)器人配置
$ export PLANNING_GROUP="arm" $ export BASE_LINK="1" $ export EEF_LINK="11" $ export IKFAST_OUTPUT_PATH=`pwd`/ikfast61_"$PLANNING_GROUP".cpp $ python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=transform6d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --savefile="$IKFAST_OUTPUT_PATH"
  • 創(chuàng)建插件
export MOVEIT_IK_PLUGIN_PKG="$MYROBOT_NAME"_ikfast_"$PLANNING_GROUP"_plugincd ~/catkin_ws/src catkin_create_pkg "$MOVEIT_IK_PLUGIN_PKG" rosrun moveit_kinematics create_ikfast_moveit_plugin.py "$MYROBOT_NAME" "$PLANNING_GROUP" "$MOVEIT_IK_PLUGIN_PKG" "$IKFAST_OUTPUT_PATH"
  • 重新編譯工作空間
catkin_make
  • 修改使用的插件
rosed "$MYROBOT_NAME"_moveit_config/config/kinematics.yaml<planning_group>: kinematics_solver: <myrobot_name>_<planning_group>_kinematics/IKFastKinematicsPlugin -INSTEAD OF- kinematics_solver: kdl_kinematics_plugin/KDLKinematicsPlugin 注意以上步驟中的機(jī)器人名稱、運(yùn)動(dòng)規(guī)劃組名稱、坐標(biāo)系序號(hào)等需要和自己所使用的機(jī)器人匹配,也可以參考官方教程配置:
http://docs.ros.org/kinetic/api/moveit_tutorials/html/doc/ikfast/ikfast_tutorial.html

現(xiàn)在運(yùn)行demo.launch文件時(shí),使用的運(yùn)動(dòng)學(xué)插件就是IKFAST了,快試一試效果是不是還不錯(cuò)!


總結(jié)

以上是生活随笔為你收集整理的ROS技术点滴 —— MoveIt!中的运动学插件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。