一、机器人运动

1.分为矢量运动和旋转运动 单位为m/s 和rad/s
2.以底盘为中心建立右手坐标系中指代表x方向食指代表y方向大拇指代表z反向
3.旋转方向也是以矢量方向建立起来的 用右手螺旋定则 大拇指指向xyz方向 四指旋转的方向为正方向

在这里插入图片描述

二、geometry_msgs/Twist消息包

在这里插入图片描述
这里的liner和angular指的是线性和有角度的
Vector3 是三个float64类型的数据
指的就是上面的xyz分量

三、ros的机器人仿真 使用wpr_simulation开源工程

https://github.com/6-robot/wpr_simulation.git
在这里插入图片描述
在这里插入图片描述

四、cpp代码实现

建立一个速度发布节点 发布速度控制话题 让机器人核心节点订阅(自带)
实现思路:
1.新建一个pkg叫做vel_pkg
2.新建一个node叫做vel_node
3.在节点中向NodeHandle申请发布话题/cmd_vel,并拿到发布对象vel_pub
4.构建geometry_msgs/Twist类型的消息包vel_msg,用来承载要发送的速度值
5.开启一个while循环,不停的用vel_pub对象发送速度消息包vel_msg

#include "ros/ros.h"
#include "geometry_msgs/Twist.h"

int main(int argc, char *argv[])
{
    ros::init(argc,argv,"vel_node");
    ros::NodeHandle n;
    ros::Publisher vel_pub=n.advertise<geometry_msgs::Twist>("/cmd_vel",10);
    geometry_msgs::Twist vel_msg;
    vel_msg.linear.x=0.1;
    vel_msg.linear.y=0;
    vel_msg.linear.z=0;
    vel_msg.angular.x=0;
    vel_msg.angular.y=0;
    vel_msg.angular.x=0;

    ros::Rate r(30);
    while(ros::ok())
    {
        vel_pub.publish(vel_msg);
        r.sleep();
    }
    return 0;
}

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐