You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ROS Noetic中moveit_commander无MoveGroupCommander属性问题求助

ROS Melodic到Noetic迁移:moveit_commander.MoveGroupCommander属性错误解决

问题原因

是ROS版本差异导致的。ROS Noetic对moveit_commander的模块结构做了调整:

  • 在Melodic(Python2环境)中,MoveGroupCommander直接属于moveit_commander根模块;
  • 但在Noetic(Python3环境)中,MoveGroupCommander被移到了moveit_commander.move_group子模块下,直接调用moveit_commander.MoveGroupCommander就会触发AttributeError。

解决办法

1. 调整导入方式

将原来的导入语句:

import moveit_commander

替换为以下两种方式之一:

  • 直接导入需要的类:
    from moveit_commander import MoveGroupCommander
    
  • 保留原导入,使用子模块路径调用:
    import moveit_commander
    

2. 修改实例化代码

对应导入方式,修改代码中实例化MoveGroupCommander的行:

  • 如果用直接导入类的方式,修改为:
    left_arm = MoveGroupCommander("l_arm_waist_group")
    
  • 如果保留原导入,修改为:
    left_arm = moveit_commander.move_group.MoveGroupCommander("l_arm_waist_group")
    

3. 额外检查事项

  • 确保Noetic环境下已正确安装moveit_commander包:
    sudo apt install ros-noetic-moveit-commander
    
  • 由于Noetic使用Python3,检查代码中是否存在Python2到Python3的语法差异(比如字符串编码、print语句等),你的代码中print("done")已经符合Python3要求,无需修改。

修改后的关键代码片段

# 导入调整示例(二选一)
from moveit_commander import MoveGroupCommander
# 或者 import moveit_commander

def pick1(self, forward, side, object, euler, nanko):
    # ... 其他代码不变 ...
    
    # 左手实例化修改
    left_arm = MoveGroupCommander("l_arm_waist_group")  # 对应直接导入的方式
    # 或者 left_arm = moveit_commander.move_group.MoveGroupCommander("l_arm_waist_group")
    
    # ... 后续代码不变 ...

内容的提问来源于stack exchange,提问作者Wuxx959

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:30:33