0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

机器人里程计数据可视化

麦辣鸡腿堡 来源:CSDN博客 作者:白鸟无言 2023-11-16 16:58 次阅读

STM32端返回的x轴线速度、y轴线速度是相对于自身的机体坐标系的速度,而机器人的位置信息是相对于世界坐标系的位置,所以在对速度进行积分前, 要先将机体坐标系下的x轴线速度、y轴线速度转换到世界坐标系 ,如图:

图片

这个坐标变换可以通过一个简单的旋转矩阵来实现

图片

其中θ就是机器人的偏航角。相应的程序如下:

/* 对速度进行积分得到位移 */
// 获取当前时间
current_time = ros::Time::now();
// 获取积分间隔
double dt = (current_time - last_time).toSec();
last_time = current_time;
// 将机体系速度转换到里程计坐标系
double delta_x = (vx * cos(th) - vy * sin(th)) * dt;
double delta_y = (vx * sin(th) + vy * cos(th)) * dt;
// 速度积分
x += delta_x;
y += delta_y;

在机器人中,一般使用四元数/旋转矩阵的形式来表示机器人的姿态,而不是欧拉角形式。所以需要将STM32返回的偏航角转换为四元数,程序如下:

geometry_msgs::Quaternion odom_quat = tf::createQuaternionMsgFromYaw(th);

以上就获取了完整的机器人里程计数据,接下来需要将里程计数据发布到ROS中。

nav_msgs::Odometry odom;
geometry_msgs::TransformStamped odom_trans;


odom_trans.header.stamp = current_time;
odom_trans.header.frame_id = "odom";
odom_trans.child_frame_id = "base_link";


odom_trans.transform.translation.x = x;
odom_trans.transform.translation.y = y;
odom_trans.transform.translation.z = 0.0;
odom_trans.transform.rotation = odom_quat;
// 发布坐标变换
odom_broadcaster.sendTransform(odom_trans);


odom.header.stamp = current_time;
odom.header.frame_id = "odom";
odom.child_frame_id = "base_link";


// 设置机器人的位置和姿态
odom.pose.pose.position.x = x;
odom.pose.pose.position.y = y;
odom.pose.pose.position.z = 0.0;
odom.pose.pose.orientation = odom_quat;


// 设置机器人的速度
odom.twist.twist.linear.x = vx;
odom.twist.twist.linear.y = vy;
odom.twist.twist.angular.z = vth;


// 发布里程计消息
odom_pub.publish(odom);

运行后,打开PC上的Ubuntu,配置ip从而实现远程连接嵌入式处理器上的ROS系统,参照:ROS多机通信(https://blog.csdn.net/qq_42688495/article/details/115260247)

配置完成后,重新打开一个终端,输入:rviz,打开ROS的可视化工具,按照下图操作即可

图片

可视化结果如下:

图片

最后将该rviz配置保存至文件,点击File→Save Config As,将配置保存为xxxx.rviz。下次打开时,在命令行运行:rosrun rviz rviz -d xxxx.rviz即可。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    211

    文章

    28418

    浏览量

    207102
  • STM32
    +关注

    关注

    2270

    文章

    10900

    浏览量

    356041
  • ROS
    ROS
    +关注

    关注

    1

    文章

    278

    浏览量

    17010
收藏 人收藏

    评论

    相关推荐

    可视化机器人

    机器人配有两个直流电机作为动力来源,采用履带式行进,机器人上面有四个摆臂,可以自由灵活摆动。我们给该机器人开发有相应的上位机,和控制手柄。该机器人有三中控制模式:通过手柄控制的手动控
    发表于 07-31 13:14

    出租车行驶里程计数

    proteus仿真单片机实验实训仿真文件 出租车行驶里程计数
    发表于 10-22 10:59

    关于机器人定位与建图,这些小技巧你懂吗

    说到机器人自主定位导航解决方案及技术,大家脑海里肯定会浮现“定位”、“建图”、“避障”、“路径规划”等字眼。定位 在思岚提供的自主定位导航解决方案中,主要是通过雷达和里程计数据来进行定位。虽然
    发表于 03-28 15:48

    采用MATLAB设计下的可视化与控制

    1、前言:MATLAB下机器人可视化与控制---simulink篇(1)主要内容:是利用smimport('YourRobot.urdf');函数将含有机器人文件的机器人导入到MATL
    发表于 05-21 09:38

    Python数据可视化

    Python数据可视化:网易云音乐歌单
    发表于 07-19 08:30

    服务型智能扫地机器人的主要功能有哪些呢

    ,实现扫地机器人运动中的自我保护。(2) 姿态感知:包括运动里程计数和航向测量等功能,需要获取扫地机器人的运动速
    发表于 11-08 09:26

    如何去实现一种送餐机器人产品设计

    漂移,环境中移动物体过多时容易出错UWB定位误差十几厘米,信号容易遮挡视觉二维码 + 轮子里程计对比后最优方案是 视觉二维码+轮子里程计基于二维码+轮子里程计方法,主要的传感器数据来源
    发表于 11-11 07:10

    机器人焊装工位的可视化仿真研究

    由于机器人焊装工位仿真对象复杂以及传统仿真方法难以建立其准确的仿真模型,本文提出了基于EM-Engineer仿真平台的机器人焊装工位可视化仿真系统。研究了仿真建模、焊接工
    发表于 12-18 11:49 9次下载

    汽车里程计数项目PCB文件

    汽车里程计数项目PCB文件
    发表于 02-27 16:43 8次下载

    使用Python可视化数据,机器人开发编程

    机器学习开发,与Mail.Ru Search数据分析负责人Egor Polusmak和Mail.Ru Group数据科学家Yury Kashnitsky一起探索如何使用Python可视化
    的头像 发表于 03-15 16:56 8989次阅读

    如何设计液压式双足机器人运动数据可视化系统

    液压双足机器人由于具有高负载、快速动态响应等优点,逐渐地应用于军事、救灾等复杂危险的任务中。设计一个稳定、高效的运动数据感知获取系统并实现数据可视化显示,对双足
    发表于 03-19 16:03 6次下载
    如何设计液压式双足<b class='flag-5'>机器人</b>运动<b class='flag-5'>数据</b><b class='flag-5'>可视化</b>系统

    轮式移动机器人里程计分析

    但凡涉及到可移动的机器人的导航系统,大概率会涉及到里程计的计算,比如轮式移动机器人、无人机、无人艇,以及多足机器人等,而计算里程计的方案也有
    的头像 发表于 04-19 10:17 1929次阅读

    介绍一种基于编码器合成里程计的方案

    摘要:本文主要分析轮式移动机器人的通用里程计模型,并以两轮差速驱动机器人里程计计算为案例,给出简化后的两轮差速驱动机器人
    的头像 发表于 04-19 10:16 2243次阅读

    ROS机器人导航调参手册

    在 ROS 中,我们可以输出带有时间戳的里程计数据,然后看机器人达到恒定的最大平移速度(ti)需要多长时间,然后使用来自里程计数据(nav_msgs/Odometry message)来计算这个过程的加速度。多做几次实验求平均值
    的头像 发表于 11-03 17:04 1948次阅读
    ROS<b class='flag-5'>机器人</b>导航调参手册

    机器人里程计数据的上传与接收

    1.通信协议 里程计数据格式(19字节) 2.STM32端 /** * @brief 发送里程计数据 */ void DataTrans_Odom ( void ) { uint8_t _cnt
    的头像 发表于 11-16 16:48 507次阅读
    <b class='flag-5'>机器人</b><b class='flag-5'>里程计数据</b>的上传与接收