四轮阿克曼(前轮转向、后轮驱动)车子仿真控制
目录
- 写在前面的话
- 调用 libgazebo_ros_ackermann_drive.so 插件
- 属性介绍
- 补充 steering_wheel_joint 配置
- 键盘控制命令
- 结果演示
写在前面的话
这里增加一个四轮阿克曼(前轮转向、后轮驱动)车子仿真控制的版本,使用的事gazebo的插件
参考资料:gazebo plugins文档
调用 libgazebo_ros_ackermann_drive.so 插件
这段代码要添加到车子描述的xacro文件
属性介绍
- plugin 声明调用的插件,name可以随便
- ros 声明环境和话题映射
- update_rate 更新频率
- 底盘车轮控制
- front_left_joint 这些跟自身的车子进行匹配就行,控制车轮转动的
- left_steering_joint 这是控制车轮转向的
- steering_wheel_joint 这个不是一个真正的轮子,类似是车子的方向盘,需要另外添加,后面有代码补充
- max_steer 车轮最大转向角度,大约是37度(弧度制=0.6458)
- max_steering_angle 方向盘(steering_wheel_joint)的最大转向角度,大概一圈半(弧度制=7.85)
- publish_wheel_tf 官方代码是true,但github上很多代码是false
- robot_base_frame 机器人的基准轴
- odometry_frame 里程计odom的链接
<gazebo><plugin name="gazebo_ros_ackermann_drive" filename="libgazebo_ros_ackermann_drive.so"><ros><namespace>/car_nav2</namespace><remapping>cmd_vel:=cmd_demo</remapping><remapping>odom:=odom_demo</remapping><remapping>distance:=distance_demo</remapping></ros><update_rate>100.0</update_rate><!-- wheels --><front_left_joint>left_front_wheel_joint</front_left_joint><front_right_joint>right_front_wheel_joint</front_right_joint><rear_left_joint>left_back_wheel_joint</rear_left_joint><rear_right_joint>right_back_wheel_joint</rear_right_joint><left_steering_joint>left_front_orient_joint</left_steering_joint><right_steering_joint>right_front_orient_joint</right_steering_joint><steering_wheel_joint>virtual_steering_wheel_joint</steering_wheel_joint><!-- Max absolute steer angle for tyre in radians--><!-- Any cmd_vel angular z greater than this would be capped --><max_steer>0.6458</max_steer><!-- Max absolute steering angle of steering wheel --><max_steering_angle>7.85</max_steering_angle><!-- Max absolute linear speed in m/s --><max_speed>5</max_speed><!-- PID tuning --><left_steering_pid_gain>1500 0 1</left_steering_pid_gain><left_steering_i_range>0 0</left_steering_i_range><right_steering_pid_gain>1500 0 1</right_steering_pid_gain><right_steering_i_range>0 0</right_steering_i_range><linear_velocity_pid_gain>1000 0 1</linear_velocity_pid_gain><linear_velocity_i_range>0 0</linear_velocity_i_range><!-- output --><publish_odom>true</publish_odom><publish_odom_tf>true</publish_odom_tf><publish_wheel_tf>false</publish_wheel_tf><publish_distance>true</publish_distance><odometry_frame>odom_demo</odometry_frame><robot_base_frame>base_link</robot_base_frame></plugin></gazebo>
补充 steering_wheel_joint 配置
需要把这段代码添加到车子描述的xacro文件中
- virtual_steer_link 可以看到都是虚的,惯性啥的都是0,也就是不存在的
- virtual_steering_wheel_joint 这个设置是前轮的转向的中间位置,z轴高度随意,我这里两个左右两个车轮分别是
0.22654 0.5868 -0.068和0.22654 -0.5868 -0.068,跟 base_link 绑定上即可
<!-- Virtual Steering wheel --><link name="virtual_steer_link"><visual><origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /><geometry><box size="0.01 0.15 0.075" /></geometry><material name=""><color rgba="1.0 1.0 0.0 1" /></material></visual><inertial> <!-- Gazebo won't show this link without this inertial mass --><origin xyz="0.0 0.0 0.0" rpy="0.0 0.0 0.0" /><mass value="0.001" /><inertia ixx="0.0" ixy="0.0" ixz="0.0" iyy="0.0" iyz="0.0" izz="0.0" /></inertial></link><joint name="virtual_steering_wheel_joint" type="revolute"><origin xyz="0.22654 0 0" rpy="0.0 0.0 0.0" /><parent link="base_link" /><child link="virtual_steer_link" /><axis xyz="0 0 -1" /><limit lower="-3" upper="3" effort="200" velocity="10" /></joint>
键盘控制命令
注意,这里需要进行cmd_vel的进行映射,因为我们在调用 gazebo 插件的时候进行了 remapping 映射,可以查看上面的描述,同时要加上命名空间(namespace)
ros2 run teleop_twist_keyboard teleop_twist_keyboard cmd_vel:=/car_nav2/cmd_demo
结果演示
前轮转向,后轮驱动


相关文章:
四轮阿克曼(前轮转向、后轮驱动)车子仿真控制
目录 写在前面的话调用 libgazebo_ros_ackermann_drive.so 插件属性介绍补充 steering_wheel_joint 配置键盘控制命令 结果演示 写在前面的话 这里增加一个四轮阿克曼(前轮转向、后轮驱动)车子仿真控制的版本,使用的事gazebo的插件 参考资料…...
Blender均匀放缩模型
解决办法: 首先选中模型,按下“s”键,如下图所示,此时模型根据鼠标的移动放缩 或者在按下“s”后输入数值,再按回车键Enter,模型会根据你该数值进行均匀放缩 指定放大2倍结果——...
Python基于 Opencv+wxPython 的人脸识别上课考勤系统,附源码
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
【AI工具】强大的AI编辑器Cursor详细使用教程
目录 一、下载安装与注册 二、内置模型与配置 三、常用快捷键 四、项目开发与问答 五、注意事项与技巧 参考资料 近日,由四名麻省理工学院(MIT)本科生共同创立的Anysphere公司宣布,其开发的AI代码编辑器Cursor在成立短短两年…...
DApp开发与APP开发的五大区别
随着比特币与区块链技术的不断发展,DApp应用会逐渐成为主流。与APPAPP相比,DApp有许多不同之处,尤其是在架构、数据存储、用户隐私等方面。本文将通过五大关键点,深入探讨DApp开发与APP开发之间的主要区别。 1. 后端架构ÿ…...
哪款云手机适合多开?常用云手机功能对比
在全球化和数字化时代,云手机以其独特的灵活性和高效性,成为多账号运营和数字营销的热门工具。云手机能够解决传统设备管理的诸多痛点,例如账号关联、硬件成本高等问题。本文将为您推荐多款优质云手机品牌,帮助您选择最适合的工具…...
Python几种常用数据结构(重制版)
一、列表 [List] 定义:有序可重复的数据集合。示例:my_list [element1, element2, element3]增加元素方法: append():在列表末尾增加单个元素(列表特有方法),例如 my_list.append(element)。e…...
C++ 游戏开发:开启游戏世界的编程之旅(2)
三、游戏输入处理 (一)键盘输入处理 在游戏中,玩家通过键盘输入来控制角色的行动。我们需要在游戏循环中不断检测键盘事件,并根据不同的按键按下或松开状态来执行相应的操作。例如,在 SDL 中,可以这样处理…...
用 Python 做数据分析需要掌握哪些基础?
用 Python 做数据分析,需要掌握以下几个基础方面: 1. Python 编程基础 语法基础:变量、数据类型(如字符串、整数、浮点数、布尔值)、条件语句(if-else)、循环(for、while࿰…...
UE5 像素流进行内网https证书创建
确定证书需求 内网 HTTPS 通信通常需要以下内容: 自签名证书(适用于内网环境,不需要通过公开的证书颁发机构 CA) 或者通过内部的企业 CA 签发的证书(更安全)。 生成自签名证书 使用工具(如 Ope…...
Envoy-istio
最近研究envoy-istio,发现这个博客,觉得很不错,这里记录一下 envoy-istio介绍 envoy-istio - 随笔分类 - yaowx - 博客园 envoy部分七:envoy的http流量管理基础 envoy部分六:envoy的集群管理 envoy部分五ÿ…...
CTF-PWN: WEB_and_PWN [第一届“吾杯”网络安全技能大赛 Calculator] 赛后学习(不会)
附件 calculate.html <!DOCTYPE html> <html lang"en"> <head><!-- 设置字符编码为 UTF-8,支持多语言字符集 --><meta charset"UTF-8"><!-- 设置响应式视图,确保页面在不同设备上自适应显示 --&…...
【数据结构与算法】排序算法(上)——插入排序与选择排序
文章目录 一、常见的排序算法二、插入排序2.1、直接插入排序2.2、希尔排序( 缩小增量排序 ) 三、选择排序3.1、直接选择排序3.2、堆排序3.2.1、堆排序的代码实现 一、常见的排序算法 常见排序算法中有四大排序算法,第一是插入排序,二是选择排序ÿ…...
Linux操作系统性能优化
Linux操作系统性能优化 1. TCP连接出现大量ESTABLISHED连接解决方法 1. TCP连接出现大量ESTABLISHED连接解决方法 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于…...
iOS与Windows间传文件
想用数据线从 windows 手提电脑传文件入 iPhone,有点迂回。 参考 [1],要在 windows 装 Apple Devices。装完、打开、插线之后会检测到手机,界面: 点左侧栏「文件」,不是就直接可以传,而是要通过某个应用传…...
在数据库设计中同步冗余字段的思考与实践
目录 前言1. 冗余字段设计的背景与场景1.1 场景描述1.2 冗余字段的必要性 2. 冗余字段设计的优点2.1 提高查询效率2.2 简化应用逻辑 3. 冗余字段设计的缺点与挑战3.1 数据不一致问题3.2 更新开销增加3.3 数据冗余占用存储空间 4. 如何同步更新冗余字段4.1 手动更新方式4.2 使用…...
Qt 带数据库功能的项目部署之后,数据库无法打开问题解决方法
前言:最近项目添加了sqlite数据库功能,在qtcreator直接运行时,打开数据库正常,但是部署之后,发现数据库打开会失败,提示“driver not loaded”错误,后来发现是因为sqldrivers文件夹目录不对导致…...
汇编语言学习-二
好吧,已经隔了两天,下完班看了两天,在电脑上装了虚拟机版的MS_DOS,主要是怕折腾坏我的电脑系统; 这个第二天应该是称为第二章更为合适,目前第二章已经看完,基本的命令也是敲了敲; 下面就进行一…...
【嘟嘟早教卡】 小程序源码分享带后台管理
【嘟嘟早教卡】是专门为 3-6 岁婴幼儿童学习普通话、英语研发的早教启蒙认知识字的小程序 小程序由 Taro 及 Tailwind CSS 构建而成,后台管理使用 Laravel 及 Tailwind CSS 想法源于小时候玩的认知卡片,基本大部分家庭都买过认知卡片,我按照…...
JavaEE-经典多线程样例
文章目录 单例模式设计模式初步引入为何存在单例模式饿汉式单例模式饿汉式缺陷以及是否线程安全懒汉式单例模式基础懒汉式缺陷以及是否线程安全懒汉式单例模式的改进完整代码(变量volatile) 阻塞队列生产者消费者模型生产者消费者模型的案例以及优点请求与响应案例解耦合削峰填…...
仿真波形截图](https://example.com/waveform.jpg
永磁同步电机全速域无位置传感器控制仿真,高频注入改进滑膜控制,PMSM矢量控制仿真 1,在零低速域,采用无数字滤波器高频方波注入法,减少滤波的相位影响,且对凸极性要求不高; 2,在中高…...
GHelper:华硕笔记本性能优化的轻量解决方案 - 告别Armoury Crate臃肿体验
GHelper:华硕笔记本性能优化的轻量解决方案 - 告别Armoury Crate臃肿体验 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Fl…...
如何设计高效的Emscripten与WebAssembly接口:平衡简洁与完整的终极指南
如何设计高效的Emscripten与WebAssembly接口:平衡简洁与完整的终极指南 【免费下载链接】emscripten Emscripten: An LLVM-to-WebAssembly Compiler 项目地址: https://gitcode.com/gh_mirrors/em/emscripten Emscripten作为一款强大的LLVM-to-WebAssembly编…...
抖音批量下载工具高效应用全攻略:从单视频到批量采集的完整指南
抖音批量下载工具高效应用全攻略:从单视频到批量采集的完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallb…...
项目介绍 MATLAB实现基于栅格地图法(Grid Map)进行无人机三维路径规划的详细项目实例(含模型描述及部分示例代码) 专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励是我前行的动力
MATLAB实现基于栅格地图法(Grid Map)进行无人机三维路径规划的详细项目实例 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面(含完整的程序,GUI设计和代码详解) 随着无人机技术的迅速…...
利用 Worker Threads 优化 Vite 构建性能的实战
背景在我们的前端工程化实践中,随着项目规模的扩大,构建效率问题逐渐凸显。特别是在生产环境构建流程中,为了保护源码逻辑,我们通常会引入 JavaScript 混淆工具(如 javascript-obfuscator)。这一步虽然必要…...
目标跟踪模型在LaSOT上表现不佳?可能是这14个属性在‘捣鬼’——深度属性分析指南
LaSOT目标跟踪性能优化:14种挑战属性的深度解析与实战应对 当你的目标跟踪模型在LaSOT基准测试中表现不如预期时,问题可能隐藏在数据集精心设计的14种挑战属性中。这些属性不是简单的标签,而是揭示了模型在不同复杂场景下的真实能力边界。本文…...
家长选择赶考状元AI学伴的五大理由:解锁学习新体验与核心好处
在AI技术蓬勃发展的今天,教育领域正经历一场深刻的变革。赶考状元AI学伴作为创新教育模式的代表,为孩子们带来了前所未有的学习新体验。越来越多的家长开始关注并选择这一系统,其背后的理由和好处值得深入探讨。本文将从行业角度,…...
基于jqktrader的自动化交易解决方案:技术架构与实战应用
基于jqktrader的自动化交易解决方案:技术架构与实战应用 【免费下载链接】jqktrader 同花顺自动程序化交易 项目地址: https://gitcode.com/gh_mirrors/jq/jqktrader 自动化交易技术正逐步改变传统量化投资的运作模式,jqktrader作为一款基于Pytho…...
2023年最新YOLO模型对比:YOLOv7 vs YOLOX vs YOLOv5,哪个更适合你的项目?
2023年YOLO模型实战选型指南:从原理到落地的深度对比 在计算机视觉领域,目标检测一直是核心任务之一,而YOLO(You Only Look Once)系列作为其中的佼佼者,凭借其出色的实时性能赢得了广泛关注。2023年,随着YOLOv7的发布&…...
