Ubuntu18.04 melodic ros1下启动Mapviz

首先启动核心

roscore

然后手动运行TF广播脚本

rosrun my_transform_broadcaster wgs84_to_map_broadcaster.py

如果报错ERROR未找到文件就进行如下操作

cd catkin_ws
catkin_make
source devel/setup.bash

在重新手动运行

rosrun my_transform_broadcaster wgs84_to_map_broadcaster.py

使用rosrun tf tf_echo 检查 TF 变换

rosrun tf tf_echo /wgs84 /map

同时可以使用rqt_tf_tree 检查 TF 变换

rosrun rqt_tf_tree rqt_tf_tree

没问题后启动mapviz

roslaunch mapviz mapviz.launch

 一、启动mapviz后出现问题Error: No transform between /wgs84 and map创建wgs84_to_map_broadcaster.py 脚本

1.创建并配置 ROS 包

确保你的脚本在一个正确配置的 ROS 包中。假设你的包名是 my_transform_broadcaster

创建 ROS 包(如果还没有)
cd ~/catkin_ws/src
catkin_create_pkg my_transform_broadcaster rospy tf
创建wgs84_to_map_broadcaster.py 脚本
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import rospy
import tf
from geometry_msgs.msg import TransformStamped

def broadcaster():
    rospy.init_node('wgs84_to_map_broadcaster')
    br = tf.TransformBroadcaster()
    rate = rospy.Rate(10.0)
    rospy.loginfo("wgs84_to_map_broadcaster node started")
    while not rospy.is_shutdown():
        br.sendTransform((0.0, 0.0, 0.0),  # 平移 (x, y, z)
                         tf.transformations.quaternion_from_euler(0, 0, 0),  # 旋转 (roll, pitch, yaw)
                         rospy.Time.now() - rospy.Duration(0.1),  # 100ms 缓存
                         'map',  # 子坐标系
                         'wgs84')  # 父坐标系
	rospy.loginfo("Broadcasting transform from /wgs84 to /map")
        rate.sleep()

if __name__ == '__main__':
    try:
        broadcaster()
    except rospy.ROSInterruptException:
        pass
确保脚本具有可执行权限
chmod +x ~/catkin_ws/src/my_transform_broadcaster/scripts/wgs84_to_map_broadcaster.py

2. 修改 CMakeLists.txt

编辑 my_transform_broadcaster 包中的 CMakeLists.txt 文件,确保添加以下内容以便于安装脚本:

catkin_install_python(PROGRAMS scripts/wgs84_to_map_broadcaster.py
  DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
)

3. 编译工作空间

返回工作空间的根目录,并编译工作空间:

cd ~/catkin_ws
catkin_make
source devel/setup.bash

4. 运行脚本

使用 rosrun 命令运行脚本:

rosrun my_transform_broadcaster wgs84_to_map_broadcaster.py

二、修改Mapviz的launch文件

<launch>

  <node pkg="mapviz" type="mapviz" name="mapviz"></node>

  <node pkg="swri_transform_util" type="initialize_origin.py" name="initialize_origin" >
    <param name="local_xy_frame" value="/map"/>
    <param name="local_xy_origin" value="tianditu"/>
    <rosparam param="local_xy_origins">
      [{ name: tianditu,
         latitude: 29.45196669,
         longitude: 98.61370577,
         altitude: 233.719,
         heading: 0.0},
         
       { name: xihu,
         latitude: 30.2458333,
         longitude: 120.1416666,
         altitude: 0.0,
         heading: 0.0}]
    </rosparam>
  </node>

  <node pkg="tf" type="static_transform_publisher" name="swri_transform" args="0 0 0 0 0 0 /map /origin 100" />

  <node pkg="my_transform_broadcaster" type="wgs84_to_map_broadcaster.py" name="wgs84_to_map_broadcaster"/>

</launch>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值