当前位置: 首页 > news >正文

ros学习笔记15~40

本学习内容来自机器人工匠阿杰,本人仅作学习笔记记录,方便后续查看学习。详细内容可自行搜索去看机器人工匠阿杰up主,讲的很好。

launch文件启动多个节点

单独调试某个节点

发发送cmd_vel话题让机器人原地沿z轴正向旋转

同时订阅发布进行避障模拟

#include<ros/ros.h> #include<sensor_msgs/LaserScan.h> #include<geometry_msgs/Twist.h> ros::Publisher vel_pub; int nCount = 0; void LidarCallback(const sensor_msgs::LaserScan msg){ float fMidDist = msg.ranges[180]; ROS_INFO("前方测距 range[180] = %.2f 米", fMidDist); geometry_msgs::Twist vel_cmd; if(nCount>0){ nCount--; return; } if (fMidDist<1.5) { vel_cmd.angular.z=0.3; nCount = 50; }else{ vel_cmd.linear.x=0.05; } vel_pub.publish(vel_cmd); } int main(int argc, char *argv[]) { ros::init(argc, argv, "lidar_node"); ros::NodeHandle n; ros::Subscriber lidar_sub = n.subscribe("/scan", 10, &LidarCallback); vel_pub = n.advertise<geometry_msgs::Twist>("cmd_vel",10); ros::spin(); return 0; }

imu航向锁定

#include<ros/ros.h> #include<sensor_msgs/Imu.h> #include<tf/tf.h> #include<geometry_msgs/Twist.h> ros::Publisher vel_pub; void IMUCallback(const sensor_msgs::Imu msg){ // 检测消息包中四元数数据是否存在 if(msg.orientation_covariance[0]<0) return; // 四元数转换 转换后的四元术对象quaternion tf::Quaternion quaternion( msg.orientation.x, msg.orientation.y, msg.orientation.z, msg.orientation.w ); // 欧拉角 double roll,pitch,yaw; tf::Matrix3x3(quaternion).getRPY(roll,pitch,yaw); // 弧度转角度 roll = roll*180/M_PI; pitch = pitch*180/M_PI; yaw = yaw*180/M_PI; ROS_INFO("滚转= %.0f 仰俯= %0.f 朝向= %0.f",roll,pitch,yaw); // 速度消息包 geometry_msgs::Twist vel_cmd; // 目标朝向角 double target_yaw = 90; // 当前机器人与目标朝向角差 double diff_angle = target_yaw-yaw; // 计算速度 vel_cmd.angular.z = diff_angle*0.01; vel_cmd.linear.x = 0.1; vel_pub.publish(vel_cmd); } int main(int argc, char *argv[]) { setlocale(LC_ALL,""); ros::init(argc,argv,"imu_node"); ros::NodeHandle n; ros::Subscriber imu_sub = n.subscribe("/imu/data",10,IMUCallback); vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel",10); ros::spin(); }

catkin_create_pkg qq_msgs roscpp rospy std_msgs message_generation message_runtime

修改完毕直接catkin_ws 进行 catkin_make 编译

sxd@sxd:~/catkin_ws$ rosmsg show qq_msgs/Carry string grade int64 star string data sxd@sxd:~/catkin_ws$

http://www.jsqmd.com/news/549234/

相关文章:

  • 实战复盘:我用Python+ddddocr破解某网站字体加密(woff2)的全过程
  • 东莞模具配件源头工厂 金盘模具标准件非标件定制加工 - 企业推荐官【官方】
  • BMP388气压计在无人机定高中的实战性能评估
  • 【RAG】【embeddings19】IBM watsonx.ai
  • MusePublic功能体验:内置安全过滤,保障健康艺术创作环境
  • 2026化妆品快递防震气泡袋评测报告:满城反光膜、满城塑料膜、满城塑料袋、满城大棚膜、满城气泡膜、满城气泡袋、满城珍珠棉选择指南 - 优质品牌商家
  • BiliTools:跨平台资源管理的高效下载解决方案
  • 2026年细聊宁夏太阳能光伏厂家,产品价格多少钱 - 工业品牌热点
  • 基于AntV G6与Vue 3的动态流程图状态管理与交互实践
  • 铜钟音乐:打造纯粹无扰的Web端音乐聆听解决方案
  • 如何用LivePortrait轻松实现静态照片动画化:面向创作者的完整指南
  • DeepSeek-OCR-2开源模型教程:模型权重本地加载+自定义后处理逻辑
  • 2026年上海叶语教育托福课程多少钱,校区分布情况及品牌可信度分析 - 工业推荐榜
  • Pixel Mind Decoder 命令行工具开发:使用Typora风格交互进行情绪随笔分析
  • 2026无油轴承市场主流产品深度评测报告:自润滑关节轴承/自润滑铜套/金属复合无油润滑轴承/石墨铜套/固体镶嵌自润滑轴承/选择指南 - 优质品牌商家
  • (17)ArcGIS Pro 标注设置:自动标注、字体颜色、位置与转注记
  • 如何用VideoFusion实现视频批量处理?超简单指南
  • 2026想找靠谱的工厂?这家不容错过! - 企业推荐官【官方】
  • 法线贴图自动化:重新定义2D游戏光照的技术革命
  • 超市货架摆放的秘密:手把手教你用Excel和Power BI做购物篮分析,零代码也能玩转关联规则
  • 管理学的发展阶段及理论
  • 【Altium】Draftsman 中钻表信息显示不全
  • 前端开发实战:用D3.js在网页上动态绘制直角坐标系图表(2023最新版)
  • 别再死记硬背API了!用这3个真实JS开发案例,带你玩转泛微Ecology9前端定制
  • Python经典100题:程序1~10(附详细解析与代码)
  • DeepSeek-OCR部署教程:RTX 4090显卡下模型加载加速与显存优化技巧
  • Qwen2-VL-2B-Instruct C语言项目集成案例:嵌入式设备视觉辅助系统
  • 告别乱码!手把手教你用阿里妈妈数黑体+LVGL 8.3打造炫酷中文界面(附图标字体生成全流程)
  • 技术选型不内卷:架构师如何用底层逻辑避开 90% 的过度设计陷阱
  • 革新性开源工具Win11Debloat:突破Windows 11性能瓶颈的系统优化方案