当前位置: 首页 > news >正文

虚实结合双机导航-gazebo-ros

清单:

一个路由器;

幻尔机器人1台;

一个在gazebo中的虚拟机器人tbmn_01一台。

网络配置

查看无线接口名称

ip link

 我的接口是wlp3s0

连上wifi扫描当前局域网下ip(wlp3s0)

sudo arp-scan --interface= wlp3s0 --localnet

ssh链接小车

ssh wheeltec@192.168.31.161

 成功ssh链接上终端

查看主机ip

hostname -I

这一行设置了 ROS Master 的 URI(统一资源标识符)。ROS Master 是ROS网络的中心协调点,负责处理节点之间的通信。每个ROS节点都需要知道ROS Master的位置。
 ROS Master URI 是ROS Master节点的地址,其他节点通过这个地址与ROS Master进行通信。

所以所有的终端都要输入

export ROS_MASTER_URI=http://192.168.31.253:11311


这一行设置了 ROS节点的主机名。每个ROS节点需要一个唯一的主机名,以便于在ROS网络中识别和通信。
 

export ROS_HOSTNAME=192.168.31.253 

我要把节点放在pc端所以

需要在wheeltec的终端下输入主机的ip(所有的终端都输入)

export ROS_HOSTNAME=192.168.31.161

 pc终端

export ROS_HOSTNAME=192.168.31.253

 克隆文件夹到本地

sudo scp -r wheeltec@192.168.31.161:~/wheeltec_robot/src/ /mnt/ros1_7000

对于我来说最难分的就是主机和从机

时间同步问题

主机跟从机都要输入

sudo service ntp restart # 重启 NTP 服务

 从机上的终端也要使用仿真时间

export ROS_USE_SIM_TIME=true

或者navigation.launch文件中加上

<param name="use_sim_time" value="true"/>

查看时间

date

工作空间修改记录~/wheeltec_robot/src/turn_on_wheeltec_robot

gedit launch/include/teb_local_planner.launch
<launch>
<!-- 迷你机器人,基础参数 -->
  <arg name="robot_name" default="wheeltec_01" />
  <arg name="scan_topic" default="scan" />
  <arg name="odom_topic" default="odom_combined" />
  <arg name="cmd_vel_topic" default="cmd_vel" />
<!-- TF坐标变换,基础参数wxf -->
  <arg name="laser_frame_id" default="laser" />
  <arg name="global_frame_id" default="$(arg robot_name)/map" />
  <arg name="base_frame_id" default="base_link" />
  <arg name="odom_frame_id" default="$(arg robot_name)/odom_combined" />
   
  <!-- Arguments参数 -->
  <arg name="car_mode"  default="" />

  <!-- 导航路径规划公共参数 -->
  <rosparam file="$(find turn_on_wheeltec_robot)/params_nav_common/move_base_params.yaml"          command="load" ns="move_base"/>
  <rosparam file="$(find turn_on_wheeltec_robot)/params_nav_common/base_global_planner_param.yaml" command="load" ns="move_base"/>

  <!-- 导航TEB局部路径规划器参数 -->
  <param name="move_base/base_local_planner"    type="string" value="teb_local_planner/TebLocalPlannerROS"/>
  <rosparam file="$(find turn_on_wheeltec_robot)/params_nav_common/teb_local_planner_params.yaml"  command="load" ns="move_base"/>

  <!-- 导航代价地图公共参数 -->
  <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_common/costmap_common_params.yaml"     command="load" ns="move_base/global_costmap"/>
  <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_common/costmap_common_params.yaml"     command="load" ns="move_base/local_costmap"/>
  <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_common/local_costmap_params.yaml"      command="load" ns="move_base"/>
  <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_common/global_costmap_params.yaml"     command="load" ns="move_base"/>

  <!-- 启动导航节点 -->
  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <!-- 导航代价地图与路径规划器对应车型参数 -->
    <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_car/param_$(arg car_mode)/teb_local_planner_params.yaml"  command="load"/>
    <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_car/param_$(arg car_mode)/costmap_car_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find turn_on_wheeltec_robot)/params_costmap_car/param_$(arg car_mode)/costmap_car_params.yaml" command="load" ns="local_costmap" />
<!--wxf-->
    <param name="base_global_planner" value="TC_planner/TCPlannerROS" /> 
      <!-- reset frame_id parameters using user input data -->
      <param name="global_costmap/global_frame" value="$(arg global_frame_id)" />
      <param name="global_costmap/robot_base_frame" value="$(arg base_frame_id)" />
      <param name="local_costmap/global_frame" value="$(arg odom_frame_id)" />
      <param name="local_costmap/robot_base_frame" value="$(arg base_frame_id)" />
      <!-- 我多点规划的参数设置 -->
      <!-- <param name="mark" value="1" /> -->
      <!-- 设置base_global_planner,注意这里是/不是:: -->
      <!-- <param name="base_global_planner" value="AC_planner/ACPlannerROS" />-->
      <!-- <param name="DWAPlannerROS/global_frame_id" value="$(arg odom_frame_id)" /> -->
      <!-- <remap from="cmd_vel" to="$(arg cmd_vel_topic)" /> -->
      <!-- <remap from="odom" to="$(arg odom_topic)" /> -->
      <!-- <remap from="scan" to="$(arg scan_topic)" /> -->
  </node>

</launch>

gedit launch/robot_model_visualization.launch 

相关工具代码

<launch>
<!--wxf-->
  <arg name="robot_name" default="wheeltec_01" />
  <!-- Arguments参数 -->
  <arg name="car_mode"  default="" />
  <arg name="if_voice" default="false"/>
  
  <!-- 用于robot_state_publisher节点-->
  <node pkg="tf" type="static_transform_publisher" name="base_to_link" args="0 0 0 0 0 0 $(arg robot_name)/base_footprint base_link 100" />
  
  <!--坐标变换,需要实测 -->
  <!--阿克曼系列 -->
  <!-- car_mode and tf  mini_akm-->
  <group if="$(eval car_mode == 'mini_akm')">
   <!-- 用于雷达节点,后面同理不再赘述-->
   <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.125 0.00 0.15 3.14 0 0  base_footprint laser 100" />
   <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
   <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.185 0.00 0.1 0 0 0   base_footprint camera_link 100" />
   <!-- 用于robot_pose_ekf节点,后面同理不再赘述-->
   <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  senior_akm-->
  <group if="$(eval car_mode == 'senior_akm')">
   <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.26 0.00 0.228 3.14 0 0  base_footprint laser 100" />
   <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.34 0.00 0.178 0 0 0   base_footprint camera_link 100" />
   <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_akm_bs-->
  <group if="$(eval car_mode == 'top_akm_bs')">
   <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.53 0.00 0.278 3.14 0 0  base_footprint laser 100" />
   <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.59 0.00 0.228 0 0 0   base_footprint camera_link 100" />
   <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_akm_dl-->
  <group if="$(eval car_mode == 'top_akm_dl')">
   <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.52 0.00 0.350 3.14 0 0  base_footprint laser 100" />
   <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.58 0.00 0.30 0 0 0   base_footprint camera_link 100" />
   <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>

  <!--麦轮系列 wxf 加了$(arg robot_name)/-->
  <!-- car_mode and tf  mini_mec-->
  <group if="$(eval car_mode == 'mini_mec')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <!-- <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.06 0.00 0.20 3.14 0 0  base_footprint laser 100" /> -->
       <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.06 0.00 0.20 3.14 0 0  $(arg robot_name)/base_footprint laser 100" />
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <!-- <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.12 0 0.15 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" /> -->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.12 0 0.15 0 0 0   $(arg robot_name)/base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 $(arg robot_name)/base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  mini_mec_moveit-->
  <group if="$(eval car_mode == 'mini_mec_moveit_four')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <!--node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.925 0 0  base_footprint laser 100" /--> <!--A2 laser-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.14 0 0  base_footprint laser 100" /> <!--A1 laser-->
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="-0.118 0 0.50 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
    <group if="$(eval car_mode == 'mini_mec_moveit_six')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <!--node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.925 0 0  base_footprint laser 100" /--> <!--A2 laser-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.11 3.14 0 0  base_footprint laser 100" /> <!--A1 laser-->
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="-0.118 0 0.55 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  senior_mec_bs-->
  <group if="$(eval car_mode == 'senior_mec_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.12 0.00 0.165 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.18 0 0.115 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  senior_mec_dl-->
  <group if="$(eval car_mode == 'senior_mec_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.32 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.27 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_mec_bs-->
  <group if="$(eval car_mode == 'top_mec_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.32 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.27 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_mec_dl-->
  <group if="$(eval car_mode == 'top_mec_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.32 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.27 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  senior_mec_EightDrive-->
  <group if="$(eval car_mode == 'senior_mec_EightDrive')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.26 0.00 0.23 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.320 0 0.18 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_mec_EightDrive-->
  <group if="$(eval car_mode == 'top_mec_EightDrive')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.26 0.00 0.23 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.320 0 0.18 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>

  <!-- car_mode and tf  flagship_mec_dl-->
  <group if="$(eval car_mode == 'flagship_mec_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.20 0.00 0.34 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.27 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>

  <!-- car_mode and tf  flagship_mec_bs-->
  <group if="$(eval car_mode == 'flagship_mec_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.20 0.00 0.34 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.27 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>

 <!--全向轮系列 -->
 <!-- car_mode and tf  mini_omni-->
 <group if="$(eval car_mode == 'mini_omni')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.015 0.00 0.17 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.075 0.00 0.12 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  senior_omni-->
  <group if="$(eval car_mode == 'senior_omni')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.09 0.00 0.25 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.15 0.00 0.20 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_omni-->
  <group if="$(eval car_mode == 'top_omni')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.28 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.24 0.00 0.23 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>

  <!--四驱系列 -->
 <!-- car_mode and tf  mini_4wd-->
  <group if="$(eval car_mode == 'mini_4wd')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.06 0.00 0.20 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.12 0 0.15 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
    <!-- car_mode and tf  mini_4wd_moveit_four-->
  <group if="$(eval car_mode == 'mini_4wd_moveit_four')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <!--node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.925 0 0  base_footprint laser 100" /--> <!--A2 laser-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.14 0 0  base_footprint laser 100" /> <!--A1 laser-->
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="-0.118 0 0.50 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  mini_4wd_moveit_six-->
  <group if="$(eval car_mode == 'mini_4wd_moveit_six')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <!--node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.925 0 0  base_footprint laser 100" /--> <!--A2 laser-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.14 0 0  base_footprint laser 100" /> <!--A1 laser-->
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="-0.118 0 0.50 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>

  <!-- car_mode and tf  senior_4wd_bs-->
  <group if="$(eval car_mode == 'senior_4wd_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.12 0.00 0.228 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.18 0 0.178 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  senior_4wd_dl-->
  <group if="$(eval car_mode == 'senior_4wd_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.36 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.31 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_4wd_bs-->
  <group if="$(eval car_mode == 'top_4wd_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.36 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.31 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  top_4wd_dl-->
  <group if="$(eval car_mode == 'top_4wd_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.18 0.00 0.37 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.240 0 0.32 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
<!-- car_mode and tf  flagship_4wd_bs-->
  <group if="$(eval car_mode == 'flagship_4wd_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="-0.05 0.00 0.364 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.01 0.00 0.324 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  flagship_4wd_dl-->
  <group if="$(eval car_mode == 'flagship_4wd_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="-0.05 0.00 0.364 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.01 0.00 0.324 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  
  <!--差速系列 -->
  <!-- car_mode and tf  mini_tank-->
  <group if="$(eval car_mode == 'mini_tank')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.04 0.00 0.21 3.14 0 0  base_footprint laser 100" />
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.1 0.00 0.16 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  mini_tank_moveit-->
  <group if="$(eval car_mode == 'mini_tank_moveit_four')">
      <!-- 用于雷达节点,后面同理不再赘述-->
      <!--node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.925 0 0  base_footprint laser 100" /--> <!--A2 laser-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.048 0.00 0.18 3.14 0 0  base_footprint laser 100" /> <!--A1 laser-->
      <!-- 用于摄像头相关节点,如3d建图导航,后面同理不再赘述-->
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="-0.118 0 0.50 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  mini_diff-->
  <group if="$(eval car_mode == 'mini_diff')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.125 0.00 0.16 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.185 0.00 0.11 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
   

  <!-- car_mode and tf  senior_diff-->
  <group if="$(eval car_mode == 'senior_diff')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.23 0.00 0.20 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.29 0.00 0.15 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  four_wheel_diff_bs-->
  <group if="$(eval car_mode == 'four_wheel_diff_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="-0.05 0.00 0.36 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.01 0.00 0.31 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  four_wheel_diff_dl-->
  <group if="$(eval car_mode == 'four_wheel_diff_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="-0.05 0.00 0.36 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.01 0.00 0.31 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  flagship_four_wheel_diff_dl-->
  <group if="$(eval car_mode == 'flagship_four_wheel_diff_dl')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="-0.05 0.00 0.36 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.01 0.00 0.31 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  flagship_four_wheel_diff_bs-->
  <group if="$(eval car_mode == 'flagship_four_wheel_diff_bs')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="-0.05 0.00 0.36 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.01 0.00 0.31 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="0 0 0 0 0 0 base_footprint gyro_link 100" />
  </group>
  <!-- car_mode and tf  brushless_senior_diff-->
  <group if="$(eval car_mode == 'brushless_senior_diff')">
      <node pkg="tf" type="static_transform_publisher" name="base_to_laser" args="0.036 0.00 0.26 3.14 0 0  base_footprint laser 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_camera" args="0.073 0.00 0.34 0 0 0   base_footprint camera_link 100" />
      <node pkg="tf" type="static_transform_publisher" name="base_to_gyro" args="-0.194 -0.092 0.22 0 0 0 base_footprint gyro_link 100" />
  </group>

  <!-- URDF 标准化机器人描述格式 -->
  <!--阿克曼系列 -->
  <group if="$(eval car_mode == 'mini_akm')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_akm_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_akm')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_akm_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_akm_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_akm_bs_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_akm_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_akm_dl_robot.urdf"/> 
  </group>

  <!--麦轮系列 wxf-->
  <group if="$(eval car_mode == 'mini_mec')">
    <param name="robot_description" textfile="$(find turn_on_wheeltec_robot)/urdf/mini_mec_robot.urdf"/>
    <!-- <param name="robot_name" value="$(arg robot_name)"/> -->
  </group>
  

  <group if="$(eval car_mode == 'mini_mec_moveit_four')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_mec_moveit_four.urdf"/> 
  </group>
   <group if="$(eval car_mode == 'mini_mec_moveit_six')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_mec_moveit_six.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_mec_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_mec_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_mec_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_mec_dl_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_mec_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_mec_bs_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_mec_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_mec_dl_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_mec_EightDrive' or car_mode == 'top_mec_EightDrive')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mec_EightDrive_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'flagship_mec_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/flagship_mec_dl_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'flagship_mec_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/flagship_mec_bs_robot.urdf"/> 
  </group>

  <!--全向轮系列 -->
  <group if="$(eval car_mode == 'mini_omni')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_omni_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_omni')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_omni_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_omni')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_omni_robot.urdf"/> 
  </group>

  <!--四驱系列 -->
  <group if="$(eval car_mode == 'mini_4wd')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_4wd_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'mini_4wd_moveit_four')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_4wd_moveit_four.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'mini_4wd_moveit_six')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_4wd_moveit_six.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_4wd_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_4wd_bs_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_4wd_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_4wd_dl_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_4wd_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_4wd_bs_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'top_4wd_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/top_4wd_dl_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'flagship_4wd_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/flagship_4wd_bs_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'flagship_4wd_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/flagship_4wd_dl_robot.urdf"/> 
  </group>

  <!--差速系列 -->
  <group if="$(eval car_mode == 'mini_tank')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_4wd_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'mini_tank_moveit_four')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_tank_moveit_four.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'mini_diff')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/mini_diff_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'senior_diff')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/senior_diff_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'four_wheel_diff_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/four_wheel_diff_bs_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'four_wheel_diff_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/four_wheel_diff_dl_robot.urdf"/> 
  </group>
  <group if="$(eval car_mode == 'flagship_four_wheel_diff_dl')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/flagship_four_wheel_diff_dl_robot.urdf"/>
  </group>
  <group if="$(eval car_mode == 'flagship_four_wheel_diff_bs')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/flagship_four_wheel_diff_bs_robot.urdf"/>
  </group>
  <group if="$(eval car_mode == 'brushless_senior_diff')">
      <param name = "robot_description" textfile = "$(find turn_on_wheeltec_robot)/urdf/brushless_senior_diff.urdf"/> 
  </group>
  
  <!-- 读取urdf信息(robot_description) 发布话题:/joint_states-->
  <node unless="$(eval (car_mode=='mini_mec_moveit_six' or car_mode=='mini_4wd_moveit_six') and if_voice==true)" name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
  <!-- 订阅话题:/joint_states,发布小车TF信息-->
  <node unless="$(eval (car_mode=='mini_mec_moveit_six' or car_mode=='mini_4wd_moveit_six') and if_voice==true)" name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />

 </launch>


gedit launch/include/robot_pose_ekf.launch

<launch>
<arg name="robot_name" default="wheeltec_01" />
  <!--选择cartogapher算法时不开启滤波节点-->
  <arg name="is_cartographer" default="false"/>
  <!-- Robot pose ekf 拓展卡尔曼滤波-->
  <node pkg="robot_pose_ekf" type="robot_pose_ekf" name="robot_pose_ekf" output="screen" unless="$(arg is_cartographer)">
    <!-- <param name="output_frame" value="odom_combined"/> 
    <param name="base_footprint_frame" value="base_footprint"/>-->
    <!-- wxf s -->
    <param name="output_frame" value="$(arg robot_name)/odom_combined"/>
    <param name="base_footprint_frame" value="base_footprint"/>
    <!-- wxf e -->
    <param name="freq" value="30.0"/>
    <param name="sensor_timeout" value="2.0"/>
    <param name="odom_used" value="true"/>
    <param name="imu_used" value="true"/>
    <param name="vo_used" value="false"/>
    <remap from="imu_data" to="imu" />
  </node>

</launch>



rosrun rqt_tf_tree rqt_tf_tree

相关文章:

  • Nacos + Dubbo 实现微服务的Rpc调用
  • # GaussDB 学习进阶路线-基础篇:从零入门到核心操作实战指南
  • 中国历代政治得失读书笔记
  • 【Win10】Anaconda + Pycharm 环境搭建教程
  • Linux下安装Nginx服务及systemctl方式管理nginx详情
  • Linux 基本开发工具的使用(yum、vim、gcc、g++、gdb、make/makefile)
  • 前景光明的Goggles($GOGLZ)登陆SONIC
  • FreeRTOS系列---信号量详解
  • ktransformers 上的 DeepSeek-R1 671B open-webui
  • Jmeter插件下载及安装
  • 【HTML— 快速入门】HTML 基础
  • word中对插入的图片修改背景色
  • 机器人“战场”:创新、落地与未来
  • 如何通过 Deepseek + Dify 实现零成本部署本地智能体
  • DP学习第七篇之最小路径和
  • 安宝特方案 | 电力行业的“智能之眼”,AR重新定义高效运维!
  • 计算机网络:应用层 —— 电子邮件
  • 微信小程序组件封装与复用:提升开发效率
  • Docker 常用命令大全
  • FastAPI高级特性(二):错误处理、中间件与应用生命周期
  • 地级市政府网站建设评估/安装百度到手机桌面
  • 郑州企业网站优化哪家便宜/怎么样免费做网站
  • 柳市做公司网站/平台推广渠道
  • 上海中国国际进口博览会/系统优化的例子
  • 哪个网站建站比较好/图片外链工具
  • 网站建设河北石家庄/谷歌广告代理公司