鱼香ROS介绍:
鱼香ROS是由机器人爱好者共同组成的社区,欢迎一起参与机器人技术交流。 进群加V:fishros2048
文章信息:
标题:Gazebo与RViz联合仿真时odom消失 原文地址:https://fishros.org.cn/forum/topic/34 关键词: 参与者: 924453613,小鱼,小伊, 版权声明: 文章中所有知识产权归鱼香ROS及原作者所有。
1. 924453613听着歌说:irobot.urdf(sw2urdf导出urdf+differ_controller+laser) odom_gazebo.launch odom_rviz.launch
联合仿真时出现问题:
RViz单独仿真无问题:
irobot.urdf
Gazebo/Black
Gazebo/Green
Gazebo/Red
Gazebo/Red
Gazebo/White
Gazebo/White
Gazebo/White
transmission_interface/SimpleTransmission
hardware_interface/VelocityJointInterface
hardware_interface/VelocityJointInterface
1
transmission_interface/SimpleTransmission
hardware_interface/VelocityJointInterface
hardware_interface/VelocityJointInterface
1
Debug
true
/
1
true
true
100.0
true
left_wheel_joint
right_wheel_joint
0.277
0.073
1
30
1.8
cmd_vel
odom
odom
base_footprint
0 0 0 0 0 0
true
5.5
360
1
-3
3
0.10
30.0
0.01
gaussian
0.0
0.01
/scan
laser_link
odom_gazebo.launch
odom_rviz.launch
3. 小鱼苦兮兮的说:
初步估计是TF问题,晚点我看一下,代码可以改成用代码块包裹一下,太长了,不好看。
4. 924453613掰着手指头说:[[topic:post_is_deleted]]
5. 小伊掰着手指头说:@924453613 每个帖子都可以再次编辑和删除的,不用再发一个哈哈,菜单在右下角。
6. 小鱼看着代码说:@924453613 需要补充一些内容
- 补充一下rqt_tf_tree的截图
- 补充一下gazebo版本系统版本和ros版本
- 补充
config/diff_controller.yaml
文件内容
同时做如下的尝试:
- 从
odom_rviz.launch
删除arbotix节点后运行
@小鱼 rqt_tf_tree
ubuntu18.04-melodic-gazebo11
config/diff_controller.yaml
# 该文件是控制器配置,一个机器人模型可能有多个控制器,比如: 底盘、机械臂、夹持器(机械手)....
# 因此,根 name 是 controller
controllers: {
# 单控制器设置
base_controller: {
#类型: 差速控制器
type: diff_controller,
#参考坐标
base_frame_id: base_footprint,
#两个轮子之间的间距
base_width: 0.277,
#控制频率
ticks_meter: 2000,
#PID控制参数,使机器人车轮快速达到预期速度
Kp: 12,
Kd: 12,
Ki: 0,
Ko: 50,
#加速限制
accel_limit: 1.0
}
}
删除arbotix结果
@924453613 看一下rqt_grapher,有几个joint_states的发布者。
9. 924453613看着电脑说:@小鱼 只有一个
@924453613 这个rqt_graph看起来非常不对劲。因为两轮差速这边也会发布机器人的joint_states
,所以不需要再启动joint_state_publisher
。
修改odom_rviz.py
11. 924453613掰着手指头说:
@小鱼 有rqt_graph了 RViz中tf还是断开的
@924453613 你看这里,一个话题有两个发布者,robot_state_publisher都不知道听谁的,所以导致TF错误,按照我上一条回复把joint_state_publisher干掉试试。
13. 924453613听着歌说:@小鱼 干掉之后是这样的 RViz中tf还是断开的
@924453613 现在还是有两个发布者在发布joint_states,只需要一个gazebo即可,请按照之前帖子里的提示删掉arbotix控制器程序。
另外需要注意的是,arbotix的功能和urdf中配置的differential_drive_controller功能是相同(从两者的配置可以看出,都有轮子名称,轮子间距等配置),但differential_drive_controller才是用于gazebo仿真使用的。
15. 924453613看着代码说:@小鱼 感谢鱼总这么晚还在解答我的问题 我删除arbotix后 我重新查看tf树发现以下问题 1.odom到base_link断开 2.tf树与最初发布帖子时不同 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7dG7i3QA-1665484583961)(https://fishros.org.cn/static/files/60cf532a37a05cc07b5ff14a79ba6526.png)] rqt_graph如下
@924453613 首先恭喜你,离成功越来越近了,注意两轮差速模型的配置项robotBaseFrame
,该项为其发布的joint_states参考的frame名称。
base_footprint
尝试进一步修改:
- 将
的
base_footprint
->base_link
,这样gazebo发布数据时应该会将base_link
->left/right_joint
- 尝试删除静态发布
footprint
->base_link
,因为在我看来,它也是多余的,两者之间的关系在URDF中已经给出。
17. 924453613看着电脑说:
@小鱼 感谢鱼总,目前tf树仍有问题,夜已深鱼总早点休息,明早我会继续尝试,非常感谢。
@924453613 ok,目前看到对应的tf还是没有链接起来,需要注意的地方就是上文中提到的,可以多次修改尝试,祝早日成功,早点休息。
19. 924453613听着歌说:@小鱼 非常感谢鱼总的解答目前已经解决,问题大概率是出现在odom_rviz.launch中重复出现了/arbotix,导致tf树出错了,谢谢👍
@924453613 很高兴能够看到该问题被解决掉,如果方便可以贴一下解决后的代码在本帖子中,方便其他小伙伴在遇到相同问题提供帮助。