当前位置: 首页 > news >正文

ROS IkFast运动学插件

ikFast运动学插件生成

  • 环境
  • 安装ROS依赖
  • 安装openrave依赖
  • 下载依赖代码
  • 工具使用
    • urdf转dae
    • 设置精度
    • 查看模型关节
    • 生成代码
    • 代码测试
    • 生成插件

环境

  • ubuntu 20.04
  • ROS版本:noetic

安装ROS依赖

	sudo apt-get install -y ros-noetic-desktop ros-noetic-collada-urdf ros-noetic-movit* 

安装openrave依赖

sudo apt-get install -y --no-install-recommends build-essential cmake doxygen \g++ git octave python-dev python-setuptools wget mlocate qt5-default minizip \ann-tools libann-dev  libassimp-dev libavcodec-dev libavformat-dev libeigen3-dev libfaac-dev          \libflann-dev libfreetype6-dev liblapack-dev libglew-dev libgsm1-dev             	\libmpfi-dev  libmpfr-dev liboctave-dev libode-dev libogg-dev libpcre3-dev       \libqhull-dev libswscale-dev libtinyxml-dev libvorbis-dev libx264-dev           	\libxml2-dev libxvidcore-dev libbz2-dev libsoqt520-dev libccd-dev                  \libcollada-dom2.4-dp-dev liblog4cxx-dev libminizip-dev octomap-tools			\libboost-all-dev libboost-python-dev
pip install ipython h5py numpy scipy wheel pyopengl==3.1.5  -i https://mirrors.aliyun.com/pypi/simple/

下载依赖代码

  • 下载依赖代码
    根据提供的编译脚本直接编译即可
    可参考:https://github.com/crigroup/openrave-installation

工具使用

参考视频
注意:以下部分的操作均需要在ROS工程目录下,否则会报错

urdf转dae

  • rosrun collada_urdf urdf_to_collada urdf名 dae名
rosrun collada_urdf urdf_to_collada robot.urdf robot.dae

设置精度

  • rosrun moveit_kinematics round_collada_numbers.py dae名 生成dae名 精度值
rosrun moveit_kinematics round_collada_numbers.py robot.dae robot.dae 2

查看模型关节

openrave-robot.py dae名 --info links
openrave dae名

生成代码

python /usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.py --robot=robot.dae \--iktype=Transform6D --baselink=0 --eelink=6 --savefile=./ikfast.cpp --lang=cpp

其中:

  • –baselink --eelink的值中 openrave-robot.py dae名 --info links 关节的值

代码测试

  • 拷贝openravepy的头文件 ikfast.h 到当前目录下
cp /usr/local/lib/python2.7/dist-packages/openravepy/_openravepy_/ikfast.h ./
  • 编译cpp
g++ ikfast.cpp -llapack -std=c++11 -o ikfast

– 编译错误问题解决
ikfast.cpp:146155:15: error: ‘x30365’ was not declared in this scope; did you mean ‘x30369’?
原因:在生成代码时会加 {}导致变量的作用域有问题
修改:在变量定义的地方把外部 {}删除。可通过查询变量的位置,进行删除,可参考报错范围,并不一定所有的地方都需要修改。如果有更好的办法,欢迎分享

生成插件

  • catkin_create_pkg 功能包 # 创建功能包
catkin_create_pkg  ikfast_plugin
  • rosrun moveit_kinematics create_ikfast_moveit_plugin.py 机器人名1 规划组名2 功能包3 规划起点 规划末端 ikfast.cpp --moveit_config_pkg=规划配置包名称4
rosrun moveit_kinematics create_ikfast_moveit_plugin.py myrobot arm ikfast_plugin base_link tool \ikfast.cpp   --moveit_config_pkg=myrobot_srdf
  • 编译生成库
catkin_make

  1. 机器人名: urdf文件中 robot节点的 name字段的值 ↩︎

  2. 规划组名称:srdf 规划组group 节点的name 字段的值 ↩︎

  3. 功能包:生成的代码在该功能包下 ↩︎

  4. 规划配置包名称:srdf规划的工程包,自动会在工程包下找config/kinematics.yaml 也不修改规划组的关联算法 ↩︎


http://www.mrgr.cn/news/98567.html

相关文章:

  • 半导体设备通信标准—SECS协议包含哪些协议,分别都有什么作用,又都有什么分别
  • 原子操作CAS(Compare-And-Swap)和锁
  • 软件测试——BUG概念
  • android11 DevicePolicyManager浅析
  • Materials Studio学习笔记(一)——Materials Studio软件介绍
  • 系统分析师(六)-- 计算机网络
  • 音视频之H.265/HEVC编码框架及编码视频格式
  • 深度学习之微积分
  • Git_获取GitLab的token方法(访问令牌)
  • ES DSL 常用修改语句
  • 三、The C in C++
  • MyBatis持久层框架
  • uniapp的通用页面及组件基本封装
  • 基于Espressif-IDE的esp32开发
  • 第 2 篇:快速上手 Framer Motion(实操入门)
  • 从0到1构建企业级消息系统服务体系(一):产品架构视角下的高并发设计与动态响应能力建设
  • Asp.Net Core学习随笔
  • 【版本控制】git命令使用大全
  • netty-socketio + springboot 消息推送服务
  • 爬虫框架 - Coocan