2026.8.08-8.09-初入ros+slam+opencv第十三天-学习机器人控制
·
一、机器人运动
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;
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)