cmd_to_robot 讨论及 G29 控制优化

这篇具有很好参考价值的文章主要介绍了cmd_to_robot 讨论及 G29 控制优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cmd_to_robot 讨论及 G29 控制优化

cmd_to_robot 讨论

转向电机控制代码中,补偿信息在循环中发布,转向完成信息在回调函数中发布

转动电机控制代码中,对转动电机的控制在转向完成的回调函数中实现

这就意味着如果一直没有 /cmd_vel 消息发布,那么就没有转动电机的控制,从而导致控制时的异常

简单的方法是上电时先启动手柄节点,轨迹跟踪时再关闭手柄节点,即由不同的节点发布 /cmd_vel 消息,后续再考虑优化

G29 控制优化

G29 的控制消息是间断的,即动一下发一下,不会像手柄那样连续发送,这样会导致两个问题:

  • 通信的不连续或者长时间未发送消息导致通信异常
  • 控制的不连续导致转动电机异常动作

因此考虑将 /joy 消息订阅后连续发送,代码如下

#include <ros/ros.h>
#include <sensor_msgs/Joy.h>
#include <mutex>
using namespace std;

ros::Publisher continuous_pub;
sensor_msgs::Joy steer_msg;
mutex mut;

const int axis_button_num = 20;

void joy_callback(const sensor_msgs::Joy::ConstPtr &msg)
{
    steer_msg = *msg;
    lock_guard<mutex> lck(mut);
    continuous_pub.publish(steer_msg);
    mut.unlock();
}

int main(int argc, char *argv[])
{
    ros::init(argc, argv, "g29_continuous");
    ros::NodeHandle nh;
    memset(&steer_msg, 0, sizeof(steer_msg));
    steer_msg.axes.resize(axis_button_num);
    steer_msg.buttons.resize(axis_button_num);

    continuous_pub = nh.advertise<sensor_msgs::Joy>("/g29_msg", 1);
    ros::Subscriber joy_sub = nh.subscribe("/joy", 1, joy_callback);

    ros::Rate loop(25);
    while (ros::ok())
    {
        lock_guard<mutex> lck(mut);
        continuous_pub.publish(steer_msg);
        mut.unlock();
        ros::spinOnce();
        loop.sleep();
    }

    return 0;
}

有新的 sensor_msgs::Joy 就更新 steer_msg,否则就发布之前的 msg

💡 注意 resize 键轴和按钮,否则 robot_steerpub 会因为越界访问而报段错误

远程控制的完整通信流程如下

cmd_to_robot 讨论及 G29 控制优化,开发,机器人文章来源地址https://www.toymoban.com/news/detail-811609.html

到了这里,关于cmd_to_robot 讨论及 G29 控制优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 织梦DEDECMS robots优化设置的具体方法

    DEDECMS自带的robots.txt文件设置很简单,并不能完全满足网站的优化要求,那怎样才能结合自己网站的情况,做好robots.txt优化呢?以下介绍一下 织梦DEDECMS robots优化设置的具体方法 。 适用于未伪静态的DEDECMS网站 User-agent: * Disallow: /dede 管理后台目录,需要改名,具体设置后面具

    2024年02月03日
    浏览(12)
  • Robot Dynamics Lecture Notes学习笔记之关节空间动力学控制

    Robot Dynamics Lecture Notes学习笔记之关节空间动力学控制

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目前的工业机器人几乎完全依赖于关节位置控制的概念。它们建立在PID控制器的基础上,独立调节机器人每个关节的位置或速度。这样的控制器补偿了调节器和整个机器人中的干扰,并在理想情况下导致

    2024年02月05日
    浏览(13)
  • 论文笔记(三十九)Learning Human-to-Robot Handovers from Point Clouds

    论文笔记(三十九)Learning Human-to-Robot Handovers from Point Clouds

    作者:Sammy Christen,Wei Yang,Claudia P´erez-D’Arpino,Otmar Hilliges,Dieter Fox,Yu-Wei Chao 来源:Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 9654-9664) 原文:https://openaccess.thecvf.com/content/CVPR2023/papers/Christen_Learning_Human-to-Robot_Handovers_From_Point_Clouds_CVPR_2023_paper.pdf 代

    2024年01月16日
    浏览(14)
  • 6轴关节机械手仿真和控制QtQuick3D 和 CodeSys Robotics

    6轴关节机械手仿真和控制QtQuick3D 和 CodeSys Robotics

    本工程利用QtQuick3D做上位机 ,基于CodeSys的控制器,使用 Robotics的库,进行6轴垂直机械手仿真和控制。 2.1.1程序组织 2.1.2代码 2.1.2.1 pro文件 2.1.2.2 armgeometry.h 2.1.2.3 armgeometry.cpp 2.1.2.4 plccomm.h 2.1.2.5 plccomm.cpp 2.1.2.6 main.cpp 2.1.2.7 main.qml 2.2.1 程序组织 2.2.2 程序代码 2.2.2.1 KinGroup 2.2

    2024年02月08日
    浏览(18)
  • 【Nuxt】04 Nuxt2-SEO: sitemap.xml、seo优化、robots.txt

    1 SiteMap设置 环境准备 注意生成sitemap依赖于@nuxtjs/sitemap,并且需要用axios进行请求,不要使用@nuxtjs/axios,不然会报错 sitemap.xml配置 在nuxt.config.js中配置下面的内容 在static/sitemap.js中配置下面的内容 在nuxt.config.js中配置下面的内容 2 robots.txt协议 在nuxt项目的static文件夹下,配置

    2024年02月07日
    浏览(23)
  • 【UiPath】解决办法:Foreground job requires an unattended robot to be defined on your user (#1230)

    【UiPath】解决办法:Foreground job requires an unattended robot to be defined on your user (#1230)

    本文收录于【#摸鱼需会 UiPath】专栏中,记录在 RPA(UiPath)使用过程中,遇到的问题以及解决办法。 本文同步于个人公众号:【云计算技术】 更多关于 RPA 技术内容敬请关注:CSDN【#摸鱼需会 UiPath】专栏。 成功解决:Foreground job requires an unattended robot to be defined on your user (#

    2024年02月04日
    浏览(16)
  • [足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

    [足式机器人]Part4 南科大高等机器人控制课 CH12 Robotic Motion Control

    本文仅供学习使用 本文参考: B站:CLEAR_LAB 笔者带更新-运动学 课程主讲教师: Prof. Wei Zhang 课程链接 : https://www.wzhanglab.site/teaching/mee-5114-advanced-control-for-robotics/ 机器人—— 运动能力 、计算能力、感知决策能力 的机电系统 Steady-state error : e s s = lim ⁡ t → ∞ θ e ( t ) e_{m

    2024年02月03日
    浏览(10)
  • 机器人控制算法——TEB算法—Obstacle Avoidance and Robot Footprint Model(避障与机器人足迹模型)

    机器人控制算法——TEB算法—Obstacle Avoidance and Robot Footprint Model(避障与机器人足迹模型)

    1.1处罚条款 避障是作为整体轨迹优化的一部分来实现的。显然,优化涉及到找到指定成本函数(目标函数)的最小成本解(轨迹)。简单地说:如果一个计划的(未来)姿势违反了与障碍物的期望分离,那么成本函数的成本必须增加。理想情况下,在这些情况下,成本函数值

    2024年02月06日
    浏览(11)
  • 解决Elasticsearch windows cmd控制台乱码问题

    当在Windows操作系统下使用Elasticsearch控制台时,可能会遇到乱码问题。 打开Elasticsearch安装目录,找到config文件夹下的jvm.options文件。 使用文本编辑器打开jvm.options文件。 在文件中找到一个空白的位置,可以在文件末尾添加该行,也可以选择其他位置。 添加以下配置参数: 保

    2024年02月13日
    浏览(16)
  • OPENMV巡线转弯代码 适用于电赛优化版2022.6.29

    OPENMV通过UART进行通信 ROIS为5块感性区域,在160x120范围内分为5块,方便遇到路口和前方无道路的处理 largest_blob为blob模块[2]为色块w,[3]为色块h,官方docs上有说明 对out_str进行设置可看到串口输出的内容 然后就是一些变量有用没用的自己使用的时候删一下,这一份的逻辑还是

    2024年02月15日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包