ubuntu 18.04 IKFAST 运动学插件生成

本文详细介绍了如何在ROS环境中利用OpenRAVE和IKFast进行机器人逆运动学插件的生成。首先,详细列出了安装相关依赖的步骤,包括安装OpenRAVE、OSG和FCL库。接着,通过删除可能引起冲突的mpmath,确保安装过程顺利。然后,展示了如何使用MoveIt!的Setup Assistant创建工作空间和配置urdf文件,以及将urdf文件转换为dae文件。在生成IKFast插件过程中,详细说明了设置运动规划组、基础和末端执行器链接、自由关节等参数,并生成cpp文件。最后,创建IKFast插件功能包,编译并解决可能出现的问题,以实现机械臂的运动规划功能。
  • 相关环境和依赖配置安装

相关依赖:

sudo apt-get install cmake g++ git ipython minizip python-dev python-h5py python-numpy python-scipy qt4-dev-tools 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
  •  安装相关的库:
git clone https://github.com/crigroup/openrave-installation
cd openrave-installation
./install-dependencies.sh
proxychains ./install-osg.sh
proxychains ./install-fcl.sh
proxychains ./install-openrave.sh
  • 删除mpmath,防止冲突
sudo apt remove python-mpmath 
  • 查看openrav是否安装成功

打开终端:执行openrave,出现界面则安装成功

创建工作空间配置urdf文件

  1. 新建工作空间,将机器人描述文件放在工作空间,并编译
     

    mkdir -p catkin_ws_ikfast/src
    
    cd catkin_ws_ikfast
    
    catkin_make
  2.  终端执行机械臂配置指令,配置moveit
    roslaunch moveit_setup_assistant setup_assistant.launch

    注意:

    最后生成的时候将包名取为"$MYROBOT_NAME"_moveit_config

    MYROBOT_NAME 为机械臂描述文件xxxx.urdf的名称

将urdf文件转换为.da文件

  1. 进入上述建立的工作空间并roscd 到urdf文件下 
     

    export MYROBOT_NAME="XX" (设置机器人名字)
    rosrun collada_urdf urdf_to_collada "$MYROBOT_NAME".urdf "$MYROBOT_NAME".dae   

    将urdf文件转换为.dae文件

  2. 设置精度并重新加载.dae文件
     

    export IKFAST_PRECISION="5"  
    rosrun moveit_kinematics round_collada_numbers.py "$MYROBOT_NAME".dae "$MYROBOT_NAME".dae "$IKFAST_PRECISION"

    最后会在urdf文件夹下生成MYROBOT_NAME".dae文件
    查看上述的.dae文件和可视化(选):

    openrave-robot.py "$MYROBOT_NAME".dae --info links
    openrave "$MYROBOT_NAME".dae

 生成IKFAST文件

设置运动规划组(与Setup Assistant配置出来的group要一致)
export PLANNING_GROUP="****"
(配置相关关节,根据上面查看的关节,配置base关节和最后一个关节)
export BASE_LINK="base_link"
export EEF_LINK="link7"
若关节数量大于6需设置一自由关节,若无则无需设置
export FREE_INDEX="**"
设置IKFAST输出路径:
export IKFAST_OUTPUT_PATH=`pwd`/ikfast_"$MYROBOT_NAME".cpp
生成ikfast的插件文件.cpp
python `openrave-config --python-dir`/openravepy/_openravepy_/ikfast.py --robot="$MYROBOT_NAME".dae --iktype=transform6d --baselink="$BASE_LINK" --eelink="$EEF_LINK" --freeindex="$FREE_INDEX" --savefile="$IKFAST_OUTPUT_PATH"

 生成IKFAST插件功能包

  1. 设置插件包的名字
    export MOVEIT_IK_PLUGIN_PKG="$MYROBOT_NAME"_ikfast_"$PLANNING_GROUP"_plugin2

  2. 进入之前建立的工作空间创建插件包:
    cd ~/catkin_ws_ikfast/src
    source 工作空间
    catkin_create_pkg "$MOVEIT_IK_PLUGIN_PKG"    

  3. 最后生成插件库
    rosrun moveit_kinematics create_ikfast_moveit_plugin.py "$MYROBOT_NAME" "$PLANNING_GROUP" "$MOVEIT_IK_PLUGIN_PKG" "$BASE_LINK" "$EEF_LINK" "$IKFAST_OUTPUT_PATH"

  4. 最后编译即可

运行机械臂的demo.launch

  1. 如出现未定义的错误:

undefined symbol: xxx的错误信息,修改插件功能包下面的ikfast.h文件

IKFAST_API int* GetFreeParameters() { static int freeparams[] = {0}; return freeparams; }
参考:
https://blog.csdn.net/m0_46235605/article/details/125971339

如果出现:

[1664043894.286469581]: Tried to advertise on topic [/move_group/filtered_cloud] with md5sum [060021388200f6f0f447d0fcd9c64743] and datatype [sensor_msgs/Image], but the topic is already advertised as md5sum [1158d486dd51d683ce2f1be655c3c181] and datatype [sensor_msgs/PointCloud2]错误
修改sensors.yaml文件,将重复的话题名修改下就行 

最后应该可以看到rviz下成功的机械臂模型,同时能够实现该IKFAST插件下的运动规划

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值