moveit中RM65-B适配拓展轴一体规划

Moveit适配拓展轴

1.概述

睿尔曼关节模组和机械臂连接时可以被自动识别,并且睿尔曼机械臂提供同时控制机械臂和拓展关节模组的通信协议(限一个拓展关节)。因此,用户可以在RM机械臂的基础上添加外部关节,构建新的机器人结构并控制,方便客户针对自己的需求设计与拓展机器人以完成指定功能。

在连接外部拓展关节后,我们才仅仅可以通过机械臂json通信协议整体控制机械臂和拓展关节,运动轨迹需要我们自己设置与下发,对于场景应用不友好。    

ROS中的moveit插件提供了轨迹规划功能,能够自动计算机械臂运动轨迹并下发,是场景开发的常用功能插件。

RM机械臂提供ROS驱动,能够接收moveit的运动规划。工作空间中的功能包含义如下:

序号

名称

作用

1

rm_description

机器人描述功能包,其中有创建好的机器人模型和配置文件

2

rm_moveit_config

使用Setup Assistant工具根据机械臂URDF模型rm_65.urdf.xacro创建生成的一个MoveIt配置的功能包,它包含了大部分MoveIt启动所需的配置文件和启动文件,以及包含一个简单的演示demo

3

rm_gazebo

gazebo仿真机器人所用到参数和文件配置

4

rm_demo

MoveIt编程示例,包括场景规划、避障规划和pick and place

5

rm_msgs

RM机械臂所用到的所有控制消息和状态消息

6

rm_control

机器人控制器,将Moveit规划的机械臂轨迹,通过三次样条插值细分,按照20ms的控制周期发给rm_driver节点,周期可调,但是应大于10ms

7

rm_driver

(1)与机械臂通过以太网口建立socket连接,机器人IP地址:192.168.1.18,请保证上位机的IP在同一局域网内,使用ROS控制机械臂,请务必确认机械臂处于以太网口通信模式;                                                                         (2)订阅各topic数据,更新RVIZ内机械臂各关节角度

8

rm_bringup

启动机器人,运行对应的launch文件后,可自动运行rm_driver,rm_control和moveit交互RVIZ界面,直接在仿真界面中拖拽机器人即可控制真实机器人运动

但拓展关节模组在RM机械臂的ROS驱动包中并未定义。因此,若想通过Moveit一体控制RM机械臂,需要根据机器人修改对应的文件。所以整体思路应该如下:

2.适配操作

2.1确定对应话题及消息格式

首先在rm_driver下查找到对应的下发话题,可以看到moveit的规划轨迹通过jointPos_callback下发指定json消息给机械臂,所以这里的数据是最终到机械臂控制器的,我们需要将moveit规划的轨迹以正确的格式传进来。注意,官网源码中,拓展轴数据定义是expand = msg.expand,而我们需要将拓展轴和机械臂关节同时规划,保持数据一致,应该改为expand = msg.expand * RAD_DEGREE;

在rm_msgs下查找到joint_pos的消息类型,可以看到拓展轴消息expand构造,和关节一样都是float类型,因此后续发布joint_pos的消息时,如果带上拓展轴的数据,则会将拓展轴一起控制。

2.2制作urdf模型

需要根据自己的设计,给出对应的urdf模型,例如在rm_scr单臂复合机器人中,我们定义腰部旋转关节joint_arm_rotary是我们的拓展关节,因此在urdf模型中给出相应的物理关系,之后再将urdf模型转为xacro模型。这一步是后续拓展关节能够和机械臂一起运动的关键所在,只有模型关系正确,真实环境下的机器人才可以执行对应的规划轨迹。

2.3制作moveit_config

有了正确的xacro文件后,我们需要通过moveit setup assistant工具制作moveit_config功能包,自动生成MoveIt启动所需的配置文件和启动文件。

在配置moveit_config时,需要注意设置的动作规划组,如图中规划组我们设置为arm是包含拓展轴的,因此拓展轴是和机械臂一体的。

后续设置控制器,要注意控制器的名称,必须和后续文件中服务器名称保持一致才可以正确下发,否则机械臂无法接收到moveit下发的轨迹消息。设置完成后,选择生成文件,务必将所有文件勾选,以更新所有文件参数。

生成moveit_config文件夹后,进入config子文件夹中打开controller.yaml文件,将controller的名字改为和moveit setup assistant工具设置时的一致,并且joints要和设置的动作规划组一致。

之后再打开同级下的ros_controller.yaml,也需要保证对应的名称保持一致。

最后还需要在joint_limits.yaml文件中正确规定拓展轴的参数。

2.4修改robot_control

修改完参数文件后,还需要对应修改rm_control/src文件下的rm_control.cpp文件,这是moveit规划的轨迹点成功下发到机械臂执行的关节文件。

模仿机械臂关节的代码,写出拓展轴的代码,定义拓展轴的速度、加速度、位置。

参照机械臂关节的定义方式,将拓展关节加入规划算法中

后续将计算出的轨迹点,根据消息格式将拓展轴数据加入,然后发布到指定话题中。

最后再次确认此处编写的服务器名称和参数文件中的一致,否则数据无法正确传输,导致机械臂真实运动规划失败。

修改完代码后,重新编译整个工作空间,编译通过后就可以测试效果。

2.5测试

打开终端,执行以下命令先运行rm_control节点:

cd ~/你的工作空间/

source devel/setup.bash

roslaunch rm_control rm_control.launch

然后再打开一个新的终端,执行以下命令启动rm_driver节点和加载MoveIt的rviz:

cd ~/你的工作空间/

source devel/setup.bash

roslaunch rm_bringup rm_robot.launch

在弹出的rviz界面中,找到plan栏,在拖动机械臂后,点击paln and excute就可以看到机械臂与拓展轴一体规划轨迹了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/513225.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

顶级Layer-3 通证正在飙升,布局龙头Degen Chain(含bitget教程)

近期以太坊生态内,Base 一枝独秀,其 TVL 突破 25 亿美元,创历史新高。并且生态内的社交文化和 DeFi 板块的龙头都很惹眼。 Farcaster 协议上的 meme 币 DEGEN 目前价格为 0.018 美元,7 日涨幅达 376%。 DEGEN 兴起于 Farcaster 的…

备考2024年思维100春季线上比赛?来做做官方模拟题(附答案)

2024年春季思维100活动第一阶段线上比赛(4月20日,星期六,上午)的报名正在进行中,报名时间截止到为4月6日(本周六),请设置好闹钟提醒以免错过。更多安排和需要提前了解的关键点可以见…

制作一个一键运行的10多M的go-cqhttp最简docker镜像

一直有个想自己部署一个QQ机器人,虽然成功完成在Windows环境下基于 go-cqhttp 的搭建工作。但考虑到我有一台常年在线的群晖 NAS,并且已经配置并启用了 Docke r服务,可否将go-cqhttp 迁移至 NAS 上的 Docker 容器中运行吗呢?同时&…

rasa trian 报错解决---Project validation completed with errors.

rasa train 过程中:出现一下问题; Project validation completed with errors. 解决措施:python 3.10版本,rasa 3.6.19, 降低版本 pip3 install rasa3.5.17 -i https://pypi.tuna.tsinghua.edu.cn/simple成功解决

洛谷P1007独木桥(暴力枚举)

题目描述: 说明提示: 思路: 本题的核心思想在于:两人相遇后,转身不计入时间,所以我们可以看作直接穿过去,那么一个人走下桥的时间有两种,一个是本身所在位置x,另一个是l…

CSS基础选择器 小案例复习(画三个小盒子)

(大家好,前面我们学习了基础的选择器,俗话说:温故而知新。所以今天我们将通过小案例来复习前面学过的小知识点。另,十分感谢大家对我文章的支持❤️) 通过这个案例复习两个地方: 类选择器的使用…

MySQL的基本操作(超详细)

👨‍💻作者简介:👨🏻‍🎓告别,今天 📔高质量专栏 :☕java趣味之旅 📔(零基础)专栏:MSQL数据库 欢迎🙏点赞&…

基于k8s的web服务器构建

文章目录 k8s综合项目1、项目规划图2、项目描述3、项目环境4、前期准备4.1、环境准备4.2、ip划分4.3、静态配置ip地址4.4、修改主机名4.5、部署k8s集群4.5.1、关闭防火墙和selinux4.5.2、升级系统4.5.3、每台主机都配置hosts文件,相互之间通过主机名互相访问4.5.4、…

iMessage是怎么成为“黑灰产的乐园”

垃圾/骚扰/色情/钓鱼短信已经成为苹果手机iMessage无法解决的难题。几乎每一位iPhone用户都曾收到过这类短信,被吐槽“每一个iPhone里都藏着一个澳门葡京赌场”。 对于这些垃圾短信,最好的办法就是别点开直接删除,上当/被骗的第一步就是从点开…

go包下载时报proxyconnect tcp: dial tcp 127.0.0.1:80: connectex错误的解决方案

一大早的GoLand就开始抽风了,好几个文件import都红了,于是我正常操作点击提示的sync,但是却报了一堆错: go: downloading google.golang.org/grpc v1.61.1 go: downloading google.golang.org/genproto v0.0.0-20240228224816-df9…

Lambda表达式,Stream流

文章目录 Lambda表达式作用前提函数式接口特点 语法省略模式和匿名对象类的区别 Stream流思想作用三类方法获取方法单列集合(Collection[List,Set双列集合Map(不能直接获取)数组同一类型元素(Stream中的静态方法) 常见的中间方法终结方法收集方法 Optional类 Lambda表达式 作用…

C 回调函数的两种使用方法

对回调(callback)函数的一点粗陋理解,在我小时候,隔壁村有家月饼小作坊(只在中秋那段时间手工制作一些月饼出售,后来好像不做了),做出的月饼是那种很传统很经典的款式,里…

C 练习实例97 - 读磁盘 写磁盘

题目&#xff1a;从键盘输入一些字符&#xff0c;逐个把它们送到磁盘上去&#xff0c;直到输入一个‘#’为止 在桌面新建一个hello.txt文件&#xff0c;内容示例&#xff1a; 代码&#xff1a; #include <stdio.h> #include <stdlib.h>int main() {FILE *fp; //文…

CSS样式-字体类型,文本对齐,外观修饰,文本缩进,文本行间距,外部引用css样式

字体类型和字体属性调整 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Css字体类型大小</title&…

【软路由】iStoreOS全量备份或数据迁移思路

背景&#xff1a;之前是在我的i3小主机上面搭建了iStoreOS&#xff0c;因为有段时间爱折腾&#xff0c;于是乎不知道什么情况就造成首页无法登录&#xff0c;改了的东西无法回滚&#xff0c;好在使用“万能重启”法又可以登录了&#xff0c;于是我就在想把这玩意定期备份一下。…

算法打卡day25

今日任务&#xff1a; 1&#xff09;491.递增子序列 2&#xff09;46.全排列 3&#xff09;47.全排列 II 491.递增子序列 题目链接&#xff1a;491. 非递减子序列 - 力扣&#xff08;LeetCode&#xff09; 给定一个整型数组, 你的任务是找到所有该数组的递增子序列&#xff0c…

选数异或(DP)

题目描述 给定一个长度为 n 的数列 A1, A2, , An 和一个非负整数 x&#xff0c;给定 m 次查询, 每次询问能否从某个区间 [l,r] 中选择两个数使得他们的异或等于 x 。 输入格式 输入的第一行包含三个整数 n, m, x 。 第二行包含 n 个整数 A1, A2, , An 。 接下来 m 行…

Redis高可用技术

一.Redis高可用介绍&#xff1a; 高可用是指&#xff1a;服务器正常访问的时间 衡量的标准是&#xff1a;在多长时间内可以提供正常服务99.9%、99.99%、99.999%等等 但是在Redis语境中&#xff0c; 高可用的含义似乎要宽泛一些&#xff0c;除了保证提供正常服务(如主从分离、…

Find a way (DFS BFS)

//新生训练 #include <iostream> #include <algorithm> #include <queue> using namespace std; using PII pair<int, int>;const int N 205; const int inf 0x3f3f3f3f; int n, m; int l;int dis1[N][N]; int dis2[N][N];int dx[] {0, 0, -1, 1};…

springboot实战---6.项目发布

&#x1f388;个人主页&#xff1a;靓仔很忙i &#x1f4bb;B 站主页&#xff1a;&#x1f449;B站&#x1f448; &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;Springboot &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&…