92
社区成员
发帖
与我相关
我的任务非常感谢上交开源了XLRobot_ROS2_Chassis_Controller包,这个包可以从机器人底盘调取机器人的pose、lazer数据,并用controller控制。但在导航实测中发现,机器人面临前进和转向的双重命令时,会卡顿。原因是机器人底盘只能同时处理前进或转向一个请求。
这个问题的解决思路是确立前进和转向的优先级顺序。
最简单的解决方式是前进优先于转向,在chassis_controller/controller_node.py代码第59行添加else。原理是之前线速度和角速度都不为0时,两段都会执行(既平移又旋转)。改成 else if:当linear.x!=0时只执行移动,不会再执行旋转;只有 linear.x ==e时才会去判断并执行旋转。让"移动"和"旋转"变成互斥逻辑。
try:
# Send move commands to chassis
if msg.linear.x != 0.0:
self.controller.move_x(
100 * self.cmd_interval * msg.linear.x, msg.linear.x
)
else if msg.angular.z != 0.0:
self.controller.move_theta(
self.cmd_interval * msg.angular.z / pi * 180, msg.angular.z
)
except Exception as e:
self.get_logger().error(f"Failed to send command to chassis: {e}")
源码链接
https://github.com/Hydroiodic/XLRobot_ROS2_Chassis_Controller
感谢分享
牛的!
cool
牛牛牛
抛砖引玉,欢迎大家来交流分享
感谢分享
what!
感谢分享!
92
社区成员
发帖
与我相关
我的任务加载中
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地
试试用AI创作助手写篇文章吧