move_base

    1》准备导航所需要的包。

           a.ros-indigo-gampping :我们不需要修改包内的东西,所以直接安装可执行文件就好了。

 sudo apt-get install ros-indigo-slam-gmapping

           b.安装雷达的驱动(我的是robopack),直接将提供的ros驱动包拷贝到工作空间中,

           c.安装导航定位包,navigation 进入git:https://github.com/ros-planning/navigation/tree/indigo-devel,下载和自己ros版本匹配的包,解压到自己的工作空间中,

cd ~/catkin_ws
catkin_make

indigo的navigation包会出现一个依赖问题,:Orocos-bfl not found while installing navigation stack ROS indigo + Ubuntu 14.04

解决方法:
rosdep install --from-paths src --ignore-src --rosdistro indigo -y

       d.由于导航包在/cmd_val下发布的移动数据加速度会过于不友好,所以我们需要对速度做平滑处理,其实就是控制加速,一般通过滤波即可实现,在此我们采用turtlebot的平滑包即可,

 安装平滑包yocs_velocity_smoother,具体的平滑算法和输入切换请自己阅读源码。

apt-get install ros-indigo-yocs-velocity-smoother

所有的包准包好后,我们去准备启动所需的launch文件,首先是机器人地盘的启动文件base_controller.launch:

复制代码
<launch>

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

    <node name="link_laser" pkg="tf" type="static_transform_publisher" args="0.15 0 0.15 0 0 0 base_link laser 50"/> 
    <node name="link_footprint" pkg="tf" type="static_transform_publisher" args="0 0 0 0 0 0 base_link base_footprint 50"/>

    <node pkg="odom_tf_package" type="tf_broadcaster_node" name="serial_send_recevice" output="screen"/>


    <include file="$(find odom_tf_package)/launch/include/rplidar_ros.launch.xml">
</include> <arg name="node_name" value="velocity_smoother"/> <arg name="nodelet_manager_name" value="nodelet_manager"/> <arg name="config_file" value="$(find odom_tf_package)/config/yocs_velocity_smoother.yaml"/> <arg name="raw_cmd_vel_topic" value="cmd_vel"/> <arg name="smooth_cmd_vel_topic" value="smoother_cmd_vel"/> <arg name="robot_cmd_vel_topic" value="robot_cmd_vel"/> <arg name="odom_topic" value="odom"/> <!-- nodelet manager --> <node pkg="nodelet" type="nodelet" name="$(arg nodelet_manager_name)" args="manager"/> <!-- velocity smoother --> <include file="$(find yocs_velocity_smoother)/launch/velocity_smoother.launch"> <arg name="node_name" value="$(arg node_name)"/> <arg name="nodelet_manager_name" value="$(arg nodelet_manager_name)"/> <arg name="config_file" value="$(arg config_file)"/> <arg name="raw_cmd_vel_topic" value="$(arg raw_cmd_vel_topic)"/> <arg name="smooth_cmd_vel_topic" value="$(arg smooth_cmd_vel_topic)"/> <arg name="robot_cmd_vel_topic" value="$(arg robot_cmd_vel_topic)"/> <arg name="odom_topic" value="$(arg odom_topic)"/> </include> </launch>
复制代码

2.然后去准备建图包的启动文件gmapping.launch

复制代码
<launch>

  <arg name="scan_topic" default="scan" />

  <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true">

    <!--because my used rtabmap_ros -->
    <param name="odom_frame" value="/odom""/>
    <!--param name="odom_frame" value="/base_controller/odom""/-->
    <param name="map_update_interval" value="30.0"/>

    <!-- Set maxUrange < actual maximum range of the Laser -->
    <param name="maxRange" value="5.0"/>
    <param name="maxUrange" value="4.5"/>
    <param name="sigma" value="0.05"/>
    <param name="kernelSize" value="1"/>
    <param name="lstep" value="0.05"/>
    <param name="astep" value="0.05"/>
    <param name="iterations" value="5"/>
    <param name="lsigma" value="0.075"/>
    <param name="ogain" value="3.0"/>
    <param name="lskip" value="0"/>
    <param name="srr" value="0.01"/>
    <param name="srt" value="0.02"/>
    <param name="str" value="0.01"/>
    <param name="stt" value="0.02"/>
    <param name="linearUpdate" value="0.5"/>
    <param name="angularUpdate" value="0.436"/>
    <param name="temporalUpdate" value="-1.0"/>
    <param name="resampleThreshold" value="0.5"/>
    <param name="particles" value="80"/>
  <!--
    <param name="xmin" value="-50.0"/>
    <param name="ymin" value="-50.0"/>
    <param name="xmax" value="50.0"/>
    <param name="ymax" value="50.0"/>
  make the starting size small for the benefit of the Android client's memory...
  -->
    <param name="xmin" value="-1.0"/>
    <param name="ymin" value="-1.0"/>
    <param name="xmax" value="1.0"/>
    <param name="ymax" value="1.0"/>

    <param name="delta" value="0.05"/>
    <param name="llsamplerange" value="0.01"/>
    <param name="llsamplestep" value="0.01"/>
    <param name="lasamplerange" value="0.005"/>
    <param name="lasamplestep" value="0.005"/>
    <remap from="scan" to="$(arg scan_topic)"/>
  </node>
</launch>
复制代码

3,导航包(move_base)和定位(amcl)的启动文件:savvy_amcl.launch

复制代码
<launch>

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

  <!-- Set the name of the map yaml file: can be overridden on the command line. -->
  <arg name="map" default="map.yaml" />

  <!--node name="map_odom" pkg="tf" type="static_transform_publisher" args="0 0 0 0 0 0 map odom 50"/-->  

  <!-- Run the map server with the desired map -->
  <node name="map_server" pkg="map_server" type="map_server" args="$(find savvy)/maps/$(arg map)"/>

  <!-- The move_base node -->
  <include file="$(find savvy)/launch/move_base_amcl.launch" />
  
  <!--zxw add Fire up AMCL-->
  <include file="$(find savvy)/launch/tb_amcl.launch" />
  

</launch>
复制代码
move_base_amcl.launch:
复制代码
<launch>

  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen" clear_params="true">
    <rosparam file="$(find savvy)/config/savvyconfig/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find savvy)/config/savvyconfig/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find savvy)/config/savvyconfig/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find savvy)/config/savvyconfig/global_costmap_params.yaml" command="load" />
    <rosparam file="$(find savvy)/config/savvyconfig/base_local_planner_params.yaml" command="load" />

    <rosparam file="$(find savvy)/config/nav_obstacles_params.yaml" command="load" />
  </node>
  
</launch>
复制代码
tb_amcl.launch:
复制代码
<launch>

  <arg name="use_map_topic" default="false"/>


  <arg name="scan_topic" default="scan"/>

  <node pkg="amcl" type="amcl" name="amcl" clear_params="true">


    <param name="use_map_topic" value="$(arg use_map_topic)"/>
    <!-- Publish scans from best pose at a max of 10 Hz -->
    <param name="odom_model_type" value="diff"/>
    <param name="odom_alpha5" value="0.1"/>
    <param name="gui_publish_rate" value="10.0"/>
    <param name="laser_max_beams" value="60"/>
    <param name="laser_max_range" value="12.0"/>
    <param name="min_particles" value="500"/>
    <param name="max_particles" value="2000"/>
    <param name="kld_err" value="0.05"/>
    <param name="kld_z" value="0.99"/>
    <param name="odom_alpha1" value="0.2"/>
    <param name="odom_alpha2" value="0.2"/>
    <!-- translation std dev, m -->
    <param name="odom_alpha3" value="0.2"/>
    <param name="odom_alpha4" value="0.2"/>
    <param name="laser_z_hit" value="0.5"/>
    <param name="laser_z_short" value="0.05"/>
    <param name="laser_z_max" value="0.05"/>
    <param name="laser_z_rand" value="0.5"/>
    <param name="laser_sigma_hit" value="0.2"/>
    <param name="laser_lambda_short" value="0.1"/>
    <param name="laser_model_type" value="likelihood_field"/>
    <!-- <param name="laser_model_type" value="beam"/> -->
    <param name="laser_likelihood_max_dist" value="2.0"/>
    <param name="update_min_d" value="0.25"/>
    <param name="update_min_a" value="0.2"/>

    <param name="odom_frame_id" value="odom"/>

    <param name="resample_interval" value="1"/>
    <!-- Increase tolerance because the computer can get quite busy -->
    <param name="transform_tolerance" value="1.0"/>
    <param name="recovery_alpha_slow" value="0.0"/>
    <param name="recovery_alpha_fast" value="0.0"/>
    <remap from="scan" to="$(arg scan_topic)"/>
  </node>
</launch>
复制代码

4.导航的配置参数如下:

base_local_planner_params.yaml

复制代码
controller_frequency: 2.0
recovery_behavior_enabled: false
clearing_rotation_allowed: false

TrajectoryPlannerROS:
   max_vel_x: 0.3
   min_vel_x: 0.05
   max_vel_y: 0.0  # zero for a differential drive robot
   min_vel_y: 0.0
   min_in_place_vel_theta: 0.5
   escape_vel: -0.1
   acc_lim_x: 2.5
   acc_lim_y: 0.0 # zero for a differential drive robot
   acc_lim_theta: 3.2

   holonomic_robot: false
   yaw_goal_tolerance: 0.1 # about 6 degrees
   xy_goal_tolerance: 0.15  # 10 cm
   latch_xy_goal_tolerance: false
   pdist_scale: 0.8
   gdist_scale: 0.6
   meter_scoring: true

   heading_lookahead: 0.325
   heading_scoring: false
   heading_scoring_timestep: 0.8
   occdist_scale: 0.1
   oscillation_reset_dist: 0.05
   publish_cost_grid_pc: false
   prune_plan: true

   sim_time: 2.5
   sim_granularity: 0.025
   angular_sim_granularity: 0.025
   vx_samples: 8
   vy_samples: 0 # zero for a differential drive robot
   vtheta_samples: 20
   dwa: true
   simple_attractor: false
复制代码

costmap_common_params.yaml

复制代码
obstacle_range: 2.5
raytrace_range: 3.0
robot_radius: 0.30
inflation_radius: 0.15
max_obstacle_height: 0.6
min_obstacle_height: 0.0
observation_sources: scan
scan: {data_type: LaserScan, topic: /scan, marking: true, clearing: true, expected_update_rate: 0}
复制代码

global_costmap_params.yaml

复制代码
global_costmap:
   global_frame: /map
   robot_base_frame: /base_link
   update_frequency: 1.0
   publish_frequency: 0
   static_map: true
   rolling_window: false
   resolution: 0.01
   transform_tolerance: 0.5
   map_type: costmap
复制代码

local_costmap_params.yaml

复制代码
local_costmap:
   global_frame: /odom
   robot_base_frame: /base_link
   update_frequency: 1.0
   publish_frequency: 1.0
   static_map: false
   rolling_window: true
   width: 6.0
   height: 6.0
   resolution: 0.01
   transform_tolerance: 0.5
   map_type: costmap
复制代码

四,准备好以上所有的启动文件和配置参数后,我们开始创建地图和导航,

1.创建地图:

复制代码
roslaunch savvy base_controller.launch   //启动地盘控制器
roslaunch savvy gmapping.launch        
roscd savvy/maps/
rosrun map_server map_saver -f mymap


然后会产生以下地图文件
mymap.pgm  mymap.yaml
复制代码

2.开始导航

roslaunch savvy base_controller.launch //启动地盘控制器
roslaunch savvy savvy_amcl.launch map:=mymap.yaml
rosrun rviz rviz -d `rospack find savvy`/nav_test.rviz

然后指定导航目标,开始自己慢慢玩吧,不过因为我的TF变换主要是里程计更新的,车体打滑或者地盘电机震荡都会积累误差,所以我们必须添加视觉里成计或者闭环检测。

转载于:https://www.cnblogs.com/lvchaoshun/p/6925828.html

EPRobot@EPRobot:~/robot_ws/src/eprobot_start/script/one_car_pkg$ roscd usb_cam EPRobot@EPRobot:/opt/ros/melodic/share/usb_cam$ source /opt/ros/melodic/setup.bash EPRobot@EPRobot:/opt/ros/melodic/share/usb_cam$ cd ~/robot_ws EPRobot@EPRobot:~/robot_ws$ source devel/setup.bash EPRobot@EPRobot:~/robot_ws$ roslaunch eprobot_start one_car_start.launch ... logging to /home/EPRobot/.ros/log/9641654e-6234-11f0-a6b3-e45f0131f240/roslaunch-EPRobot-2443.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://EPRobot:45445/ SUMMARY ======== CLEAR PARAMETERS * /ekf_se/ PARAMETERS * /amcl/base_frame_id: base_footprint * /amcl/global_frame_id: map * /amcl/gui_publish_rate: 10.0 * /amcl/initial_pose_a: 0.0 * /amcl/initial_pose_x: 0.0 * /amcl/initial_pose_y: 0.0 * /amcl/kld_err: 0.05 * /amcl/kld_z: 0.99 * /amcl/laser_lambda_short: 0.1 * /amcl/laser_likelihood_max_dist: 5.0 * /amcl/laser_max_beams: 60 * /amcl/laser_max_range: 12.0 * /amcl/laser_model_type: likelihood_field * /amcl/laser_sigma_hit: 0.2 * /amcl/laser_z_hit: 0.7 * /amcl/laser_z_max: 0.1 * /amcl/laser_z_rand: 0.3 * /amcl/laser_z_short: 0.1 * /amcl/max_particles: 2000 * /amcl/min_particles: 600 * /amcl/odom_alpha1: 0.2 * /amcl/odom_alpha2: 0.2 * /amcl/odom_alpha3: 0.2 * /amcl/odom_alpha4: 0.2 * /amcl/odom_alpha5: 0.1 * /amcl/odom_frame_id: odom * /amcl/odom_model_type: diff * /amcl/recovery_alpha_fast: 0.2 * /amcl/recovery_alpha_slow: 0.005 * /amcl/resample_interval: 0.4 * /amcl/transform_tolerance: 0.5 * /amcl/update_min_a: 0.05 * /amcl/update_min_d: 0.05 * /amcl/use_map_topic: True * /base_control/base_kd: 0.0 * /base_control/base_ki: 100.0 * /base_control/base_kp: 1000.0 * /base_control/base_kv: 1.0 * /base_control/is_send_anger: false * /camera_uri: http://192.168.3.... * /ekf_se/base_link_frame: /base_footprint * /ekf_se/debug: False * /ekf_se/debug_out_file: /path/to/debug/fi... * /ekf_se/frequency: 30 * /ekf_se/imu0: /imu_data * /ekf_se/imu0_config: [False, False, Fa... * /ekf_se/imu0_differential: False * /ekf_se/imu0_nodelay: True * /ekf_se/imu0_pose_rejection_threshold: 0.8 * /ekf_se/imu0_queue_size: 8 * /ekf_se/imu0_relative: True * /ekf_se/imu0_remove_gravitational_acceleration: True * /ekf_se/initial_estimate_covariance: ['1e-9', 0, 0, 0,... * /ekf_se/map_frame: /map * /ekf_se/odom0: /odom * /ekf_se/odom0_config: [False, False, Fa... * /ekf_se/odom0_differential: False * /ekf_se/odom0_nodelay: True * /ekf_se/odom0_queue_size: 5 * /ekf_se/odom0_relative: True * /ekf_se/odom_frame: /odom * /ekf_se/print_diagnostics: True * /ekf_se/process_noise_covariance: [0.01, 0, 0, 0, 0... * /ekf_se/publish_acceleration: True * /ekf_se/publish_tf: True * /ekf_se/sensor_timeout: 0.025 * /ekf_se/transform_time_offset: 0.0001 * /ekf_se/transform_timeout: 0.025 * /ekf_se/two_d_mode: True * /ekf_se/world_frame: /odom * /image_view/autosize: True * /laser_filter/scan_filter_chain: [{'type': 'laser_... * /lslidar_driver_node/angle_disable_max: 0 * /lslidar_driver_node/angle_disable_min: 0 * /lslidar_driver_node/compensation: False * /lslidar_driver_node/frame_id: base_laser_link * /lslidar_driver_node/high_reflection: False * /lslidar_driver_node/interface_selection: serial * /lslidar_driver_node/lidar_name: M10 * /lslidar_driver_node/max_range: 100.0 * /lslidar_driver_node/min_range: 0.1 * /lslidar_driver_node/pubPointCloud2: False * /lslidar_driver_node/pubScan: True * /lslidar_driver_node/scan_topic: scan * /lslidar_driver_node/serial_port: /dev/EPRobot_laser * /lslidar_driver_node/use_gps_ts: False * /map_server/frame_id: map * /move_base/TebLocalPlannerROS/acc_lim_theta: 0.3 * /move_base/TebLocalPlannerROS/acc_lim_x: 0.2 * /move_base/TebLocalPlannerROS/allow_init_with_backwards_motion: True * /move_base/TebLocalPlannerROS/cmd_angle_instead_rotvel: False * /move_base/TebLocalPlannerROS/costmap_converter_plugin: * /move_base/TebLocalPlannerROS/costmap_converter_rate: 5 * /move_base/TebLocalPlannerROS/costmap_converter_spin_thread: True * /move_base/TebLocalPlannerROS/costmap_obstacles_behind_robot_dist: 1.0 * /move_base/TebLocalPlannerROS/dt_hysteresis: 0.1 * /move_base/TebLocalPlannerROS/dt_ref: 0.3 * /move_base/TebLocalPlannerROS/dynamic_obstacle_inflation_dist: 0.2 * /move_base/TebLocalPlannerROS/enable_homotopy_class_planning: False * /move_base/TebLocalPlannerROS/enable_multithreading: True * /move_base/TebLocalPlannerROS/exact_arc_length: False * /move_base/TebLocalPlannerROS/feasibility_check_no_poses: 3 * /move_base/TebLocalPlannerROS/footprint_model/line_end: [0.1, 0.0] * /move_base/TebLocalPlannerROS/footprint_model/line_start: [-0.1, 0.0] * /move_base/TebLocalPlannerROS/footprint_model/type: line * /move_base/TebLocalPlannerROS/force_reinit_new_goal_dist: 0.5 * /move_base/TebLocalPlannerROS/free_goal_vel: False * /move_base/TebLocalPlannerROS/global_plan_overwrite_orientation: True * /move_base/TebLocalPlannerROS/global_plan_viapoint_sep: 3.0 * /move_base/TebLocalPlannerROS/h_signature_prescaler: 0.5 * /move_base/TebLocalPlannerROS/h_signature_threshold: 0.1 * /move_base/TebLocalPlannerROS/include_costmap_obstacles: True * /move_base/TebLocalPlannerROS/include_dynamic_obstacles: True * /move_base/TebLocalPlannerROS/inflation_dist: 0.35 * /move_base/TebLocalPlannerROS/is_footprint_dynamic: False * /move_base/TebLocalPlannerROS/legacy_obstacle_association: False * /move_base/TebLocalPlannerROS/max_global_plan_lookahead_dist: 10.0 * /move_base/TebLocalPlannerROS/max_number_classes: 2 * /move_base/TebLocalPlannerROS/max_vel_theta: 1.0 * /move_base/TebLocalPlannerROS/max_vel_x: 0.6 * /move_base/TebLocalPlannerROS/max_vel_x_backwards: 0.3 * /move_base/TebLocalPlannerROS/max_vel_y: 0.0 * /move_base/TebLocalPlannerROS/min_obstacle_dist: 0.55 * /move_base/TebLocalPlannerROS/min_turning_radius: 0.6 * /move_base/TebLocalPlannerROS/no_inner_iterations: 5 * /move_base/TebLocalPlannerROS/no_outer_iterations: 4 * /move_base/TebLocalPlannerROS/obstacle_association_cutoff_factor: 5.0 * /move_base/TebLocalPlannerROS/obstacle_association_force_inclusion_factor: 1.5 * /move_base/TebLocalPlannerROS/obstacle_cost_exponent: 5.5 * /move_base/TebLocalPlannerROS/obstacle_heading_threshold: 0.45 * /move_base/TebLocalPlannerROS/obstacle_keypoint_offset: 0.1 * /move_base/TebLocalPlannerROS/obstacle_poses_affected: 15 * /move_base/TebLocalPlannerROS/odom_topic: odom * /move_base/TebLocalPlannerROS/optimization_activate: True * /move_base/TebLocalPlannerROS/optimization_verbose: False * /move_base/TebLocalPlannerROS/oscillation_recovery: True * /move_base/TebLocalPlannerROS/penalty_epsilon: 0.08 * /move_base/TebLocalPlannerROS/roadmap_graph_area_length_scale: 1.0 * /move_base/TebLocalPlannerROS/roadmap_graph_area_width: 5 * /move_base/TebLocalPlannerROS/roadmap_graph_no_samples: 15 * /move_base/TebLocalPlannerROS/selection_alternative_time_cost: False * /move_base/TebLocalPlannerROS/selection_cost_hysteresis: 1.0 * /move_base/TebLocalPlannerROS/selection_obst_cost_scale: 1.0 * /move_base/TebLocalPlannerROS/selection_viapoint_cost_scale: 1.0 * /move_base/TebLocalPlannerROS/shrink_horizon_backup: True * /move_base/TebLocalPlannerROS/simple_exploration: False * /move_base/TebLocalPlannerROS/teb_autosize: True * /move_base/TebLocalPlannerROS/via_points_ordered: False * /move_base/TebLocalPlannerROS/visualize_hc_graph: False * /move_base/TebLocalPlannerROS/weight_acc_lim_theta: 1 * /move_base/TebLocalPlannerROS/weight_acc_lim_x: 1 * /move_base/TebLocalPlannerROS/weight_adapt_factor: 1.0 * /move_base/TebLocalPlannerROS/weight_dynamic_obstacle: 100 * /move_base/TebLocalPlannerROS/weight_dynamic_obstacle_inflation: 0.6 * /move_base/TebLocalPlannerROS/weight_inflation: 1.0 * /move_base/TebLocalPlannerROS/weight_kinematics_forward_drive: 800 * /move_base/TebLocalPlannerROS/weight_kinematics_nh: 1000 * /move_base/TebLocalPlannerROS/weight_kinematics_turning_radius: 6.0 * /move_base/TebLocalPlannerROS/weight_max_vel_theta: 1 * /move_base/TebLocalPlannerROS/weight_max_vel_x: 2 * /move_base/TebLocalPlannerROS/weight_obstacle: 190 * /move_base/TebLocalPlannerROS/weight_optimaltime: 15 * /move_base/TebLocalPlannerROS/weight_shortest_path: 5.0 * /move_base/TebLocalPlannerROS/weight_viapoint: 10.0 * /move_base/TebLocalPlannerROS/wheelbase: 0.3 * /move_base/TebLocalPlannerROS/xy_goal_tolerance: 0.1 * /move_base/TebLocalPlannerROS/yaw_goal_tolerance: 0.1 * /move_base/base_local_planner: teb_local_planner... * /move_base/clearing_rotation_allowed: False * /move_base/conservative_reset_dist: 0.2 * /move_base/controller_frequency: 5.0 * /move_base/controller_patience: 15.0 * /move_base/global_costmap/footprint: [[-0.18, -0.18], ... * /move_base/global_costmap/global_frame: map * /move_base/global_costmap/inflation_layer/cost_scaling_factor: 10.0 * /move_base/global_costmap/inflation_layer/enabled: True * /move_base/global_costmap/inflation_layer/inflation_radius: 0.3 * /move_base/global_costmap/inflation_radius: 0.4 * /move_base/global_costmap/laser_scan_sensor/clearing: True * /move_base/global_costmap/laser_scan_sensor/data_type: LaserScan * /move_base/global_costmap/laser_scan_sensor/marking: True * /move_base/global_costmap/laser_scan_sensor/topic: scan * /move_base/global_costmap/map_type: costmap * /move_base/global_costmap/observation_sources: laser_scan_sensor * /move_base/global_costmap/obstacle_layer/combination_method: 1 * /move_base/global_costmap/obstacle_layer/enabled: True * /move_base/global_costmap/obstacle_layer/inflation_radius: 0.2 * /move_base/global_costmap/obstacle_layer/obstacle_range: 6.5 * /move_base/global_costmap/obstacle_layer/raytrace_range: 6.0 * /move_base/global_costmap/obstacle_layer/track_unknown_space: False * /move_base/global_costmap/plugins: [{'type': 'costma... * /move_base/global_costmap/publish_frequency: 5.0 * /move_base/global_costmap/robot_base_frame: base_footprint * /move_base/global_costmap/static_layer/enabled: True * /move_base/global_costmap/static_layer/map_topic: /map * /move_base/global_costmap/static_map: True * /move_base/global_costmap/transform_tolerance: 0.5 * /move_base/global_costmap/update_frequency: 5.0 * /move_base/local_costmap/cost_scaling_factor: 10 * /move_base/local_costmap/footprint: [[-0.18, -0.18], ... * /move_base/local_costmap/global_frame: map * /move_base/local_costmap/height: 3 * /move_base/local_costmap/inflation_layer/cost_scaling_factor: 10.0 * /move_base/local_costmap/inflation_layer/enabled: True * /move_base/local_costmap/inflation_layer/inflation_radius: 0.3 * /move_base/local_costmap/inflation_radius: 0.16 * /move_base/local_costmap/laser_scan_sensor/clearing: True * /move_base/local_costmap/laser_scan_sensor/data_type: LaserScan * /move_base/local_costmap/laser_scan_sensor/marking: True * /move_base/local_costmap/laser_scan_sensor/topic: scan * /move_base/local_costmap/map_type: costmap * /move_base/local_costmap/observation_sources: laser_scan_sensor * /move_base/local_costmap/obstacle_layer/combination_method: 1 * /move_base/local_costmap/obstacle_layer/enabled: True * /move_base/local_costmap/obstacle_layer/inflation_radius: 0.2 * /move_base/local_costmap/obstacle_layer/obstacle_range: 6.5 * /move_base/local_costmap/obstacle_layer/raytrace_range: 6.0 * /move_base/local_costmap/obstacle_layer/track_unknown_space: False * /move_base/local_costmap/plugins: [{'type': 'costma... * /move_base/local_costmap/publish_frequency: 5.0 * /move_base/local_costmap/resolution: 0.05 * /move_base/local_costmap/robot_base_frame: base_footprint * /move_base/local_costmap/rolling_window: True * /move_base/local_costmap/static_layer/enabled: True * /move_base/local_costmap/static_layer/map_topic: /map * /move_base/local_costmap/static_map: False * /move_base/local_costmap/transform_tolerance: 0.5 * /move_base/local_costmap/update_frequency: 5.0 * /move_base/local_costmap/width: 3 * /move_base/oscillation_distance: 0.2 * /move_base/oscillation_timeout: 10.0 * /move_base/planner_frequency: 1.0 * /move_base/planner_patience: 5.0 * /robot_description: <?xml version="1.... * /rosdistro: melodic * /rosversion: 1.14.13 * /time0: 5.0 * /time1: 15.0 * /time2: 2.0 * /time3: 10.0 * /time4: 2.0 * /time5: 5.0 * /usb_cam/camera_frame_id: usb_cam * /usb_cam/color_format: yuv422p * /usb_cam/image_height: 960 * /usb_cam/image_width: 1280 * /usb_cam/io_method: mmap * /usb_cam/pixel_format: yuyv * /usb_cam/video_device: /dev/video0 NODES / amcl (amcl/amcl) base_control (eprobot_start/art_racecar.py) base_to_camera (tf/static_transform_publisher) base_to_gyro (tf/static_transform_publisher) base_to_laser (tf/static_transform_publisher) base_to_link (tf/static_transform_publisher) ekf_se (robot_localization/ekf_localization_node) image_view (image_view/image_view) joint_state_publisher (joint_state_publisher/joint_state_publisher) laser_filter (laser_filters/scan_to_scan_filter_chain) lslidar_driver_node (lslidar_driver/lslidar_driver_node) map_server (map_server/map_server) move_base (move_base/move_base) one_car_start (eprobot_start/one_car_start.py) robot_state_publisher (robot_state_publisher/robot_state_publisher) usb_cam (usb_cam/usb_cam_node) auto-starting new master process[master]: started with pid [2469] ROS_MASTER_URI=http://EPRobot:11311 setting /run_id to 9641654e-6234-11f0-a6b3-e45f0131f240 process[rosout-1]: started with pid [2498] started core service [/rosout] process[usb_cam-2]: started with pid [2502] process[image_view-3]: started with pid [2519] [ INFO] [1752663855.296181382]: Initializing nodelet with 4 worker threads. [ INFO] [1752663855.480798436]: using default calibration URL [ INFO] [1752663855.484462140]: camera calibration URL: file:///home/EPRobot/.ros/camera_info/head_camera.yaml [ INFO] [1752663855.491997843]: Starting 'head_camera' (/dev/video0) at 1280x960 via mmap (yuyv) at 30 FPS [ INFO] [1752663855.661129732]: Using transport "raw" Unable to init server: Could not connect: Connection refused (image_raw:2519): Gtk-WARNING **: 19:04:15.720: cannot open display: [ WARN] [1752663855.904948901]: unknown control 'focus_auto' process[base_to_link-4]: started with pid [2537] [image_view-3] process has died [pid 2519, exit code 1, cmd /opt/ros/melodic/lib/image_view/image_view image:=/usb_cam/image_raw __name:=image_view __log:=/home/EPRobot/.ros/log/9641654e-6234-11f0-a6b3-e45f0131f240/image_view-3.log]. log file: /home/EPRobot/.ros/log/9641654e-6234-11f0-a6b3-e45f0131f240/image_view-3*.log process[base_to_gyro-5]: started with pid [2556] process[base_to_laser-6]: started with pid [2562] process[base_to_camera-7]: started with pid [2583] process[joint_state_publisher-8]: started with pid [2604] process[robot_state_publisher-9]: started with pid [2610] /opt/ros/melodic/lib/python2.7/dist-packages/roslib/packages.py:470: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal if resource_name in files: process[base_control-10]: started with pid [2618] process[lslidar_driver_node-11]: started with pid [2647] [ INFO] [1752663866.105583696]: Lidar is M10 [ INFO] [1752663866.111040782]: Opening PCAP file port = /dev/EPRobot_laser, baud_rate = 460800 open_port /dev/EPRobot_laser OK ! [ INFO] [1752663866.125467287]: Initialised lslidar without error process[laser_filter-12]: started with pid [2676] [ INFO] [1752663867.962878802]: clear_inside(!invert): true [INFO] [1752663869.073894]: base control start... process[map_server-13]: started with pid [2683] [INFO] [1752663869.127131]: LaserMode : Express [INFO] [1752663869.131959]: is_pub_odom_tf : false [INFO] [1752663869.138982]: is_send_anger : false [INFO] [1752663869.144625]: Opening Serial [INFO] [1752663869.150115]: Serial Open Succeed process[amcl-14]: started with pid [2718] [ INFO] [1752663871.037123474]: Subscribed to map topic. process[move_base-15]: started with pid [2774] process[ekf_se-16]: started with pid [2814] ERROR: cannot launch node of type [eprobot_start/one_car_start.py]: Cannot locate node of type [one_car_start.py] in package [eprobot_start]. Make sure file exists in package path and permission is set to executable (chmod +x) [ WARN] [1752663879.396290450]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist. canTransform: source_frame base_footprint does not exist.. canTransform returned after 0.100705 timeout was 0.1. [ INFO] [1752663880.901153484]: Received a 113 X 155 map @ 0.050 m/pix [ INFO] [1752663880.938459111]: Initializing likelihood field model; this can take some time on large maps... [ INFO] [1752663881.063300341]: Done initializing likelihood field model. [ WARN] [1752663883.460416017]: Transform from IMU_link to base_footprint was unavailable for the time requested. Using latest instead. [ WARN] [1752663884.436037594]: Timed out waiting for transform from base_footprint to map to become available before running costmap, tf error: canTransform: target_frame map does not exist.. canTransform returned after 0.100968 timeout was 0.1. [ WARN] [1752663886.469901598]: No laser scan received (and thus no pose updates have been published) for 1752663886.469788 seconds. Verify that data is being published on the /scan_filtered topic. [ WARN] [1752663887.516970206]: global_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided [ WARN] [1752663887.518994345]: global_costmap: Pre-Hydro parameter "map_type" unused since "plugins" is provided [ INFO] [1752663887.523573417]: global_costmap: Using plugin "static_layer" [ INFO] [1752663887.657142563]: Requesting the map... [ INFO] [1752663889.166172394]: Resizing costmap to 113 X 155 at 0.050000 m/pix [ INFO] [1752663889.265445621]: Received a 113 X 155 map at 0.050000 m/pix [ INFO] [1752663889.280243055]: global_costmap: Using plugin "obstacle_layer" [ INFO] [1752663889.298549771]: Subscribed to Topics: [ INFO] [1752663889.349325212]: global_costmap: Using plugin "inflation_layer" [ WARN] [1752663889.545199085]: local_costmap: Pre-Hydro parameter "static_map" unused since "plugins" is provided [ WARN] [1752663889.547135725]: local_costmap: Pre-Hydro parameter "map_type" unused since "plugins" is provided [ INFO] [1752663889.551484224]: local_costmap: Using plugin "static_layer" [ INFO] [1752663889.571839522]: Requesting the map... [ INFO] [1752663889.577998384]: Resizing static layer to 113 X 155 at 0.050000 m/pix [ INFO] [1752663889.677619257]: Received a 113 X 155 map at 0.050000 m/pix [ INFO] [1752663889.693015967]: local_costmap: Using plugin "obstacle_layer" [ INFO] [1752663889.706179575]: Subscribed to Topics: [ INFO] [1752663889.742291675]: local_costmap: Using plugin "inflation_layer" [ INFO] [1752663889.976098453]: Created local_planner teb_local_planner/TebLocalPlannerROS [ INFO] [1752663890.170609667]: Footprint model 'line' (line_start: [-0.1,0]m, line_end: [0.1,0]m) loaded for trajectory optimization. [ INFO] [1752663890.172065624]: Parallel planning in distinctive topologies disabled. [ INFO] [1752663890.172326715]: No costmap conversion plugin specified. All occupied costmap cells are treaten as point obstacles. [ INFO] [1752663891.088227612]: Recovery behavior will clear layer 'obstacles' [ INFO] [1752663891.107617471]: Recovery behavior will clear layer 'obstacles' [ INFO] [1752663891.666258229]: odom received!
最新发布
07-17
<think>我们正在处理一个ROS启动问题,涉及eprobot_start one_car_start.launch,以及图像显示和传感器集成问题。根据用户提供的引用和问题描述,我们可以将问题分解为几个部分: 1. **启动文件错误**:用户遇到了`eprobot_start one_car_start.launch`的启动错误。 2. **图像显示问题**:`image_view`节点无法正常显示图像。 3. **传感器集成问题**:可能包括摄像头或其他传感器的集成问题。 ### 步骤1: 诊断启动文件错误 根据引用[3]和[4],启动错误可能与缺失的包或路径配置错误有关。常见的错误包括: - 缺少依赖包(如`move_base_msgs`)。 - 头文件路径错误(如`gazebo_version_helpers`的include路径不存在)。 **解决方法**: - 确保所有依赖包已安装。例如,如果缺少`move_base_msgs`,使用以下命令安装: ```bash sudo apt-get install ros-<distro>-move-base-msgs ``` 其中`<distro>`是ROS版本(如melodic、noetic等)。 - 对于路径错误(如引用[4]),检查CMakeLists.txt和package.xml文件,确保路径正确。如果路径确实不存在,可能需要重新克隆仓库或修正路径。 ### 步骤2: 解决图像显示问题 引用[2]提到使用`usb_cam.launch`启动摄像头。如果`image_view`无法显示图像,可能的原因有: - 摄像头驱动未正确安装或启动。 - 图像话题名称不匹配。 - `image_view`节点未订阅正确的图像话题。 **解决方法**: - 确保摄像头驱动已正确安装并启动。使用以下命令测试: ```bash roslaunch robot_vision usb_cam.launch ``` - 使用`rostopic list`查看发布的图像话题,确保`image_view`订阅了相同的话题。例如: ```bash rosrun image_view image_view image:=/camera/image_raw ``` 如果话题名称不匹配,修改启动文件或`image_view`的参数。 ### 步骤3: 解决传感器集成问题 传感器集成问题可能涉及硬件接口、驱动或消息传递。根据引用[1],使用`rqt_launch`可以方便地管理启动文件,帮助调试。 **解决方法**: - 使用`rqt_launch`启动和停止各个组件,以隔离问题: ```bash rosrun rqt_launch rqt_launch ``` - 检查传感器驱动是否已正确安装,并确保传感器与ROS兼容。 - 使用`rostopic echo`和`rqt_graph`检查传感器数据的发布和订阅关系。 ### 综合调试步骤 1. **检查启动文件**:打开`one_car_start.launch`文件,检查包含的节点和参数设置。 2. **查看日志**:启动时使用`--screen`参数查看详细输出: ```bash roslaunch eprobot_start one_car_start.launch --screen ``` 3. **使用rqt工具**:利用`rqt_console`查看节点日志,`rqt_graph`查看节点连接。 4. **检查依赖**:使用`rosdep`检查并安装缺失的依赖: ```bash rosdep install --from-paths src --ignore-src -r -y ``` ### 示例解决方案 假设启动错误是由于缺少`gazebo_grasp_plugin`引起的(如引用[4]),我们可以尝试以下步骤: 1. 重新安装`gazebo_grasp_plugin`: ```bash cd ~/catkin_ws/src git clone https://github.com/JenniferBuehler/gazebo-pkgs.git cd .. catkin_make ``` 2. 如果编译仍出现路径错误,手动检查CMakeLists.txt中设置的include路径。 ### 相关问题 §§相关问题§§ 1. 如何调试ROS启动文件中的节点启动失败? 2. 如何确保摄像头驱动与ROS兼容? 3. ROS中如何查看和修复话题订阅不匹配的问题? 4. 如何使用rqt工具进行ROS系统调试?</think>### 解决ROS启动错误与传感器集成问题 #### 1. **诊断启动文件错误 (`eprobot_start one_car_start.launch`)** - **常见原因**: - 依赖包缺失(如`move_base_msgs`)[^3] - 路径配置错误(如头文件路径不存在)[^4] - 节点参数配置错误 - **解决步骤**: 1. **检查依赖包**: ```bash # 安装缺失的ROS包(以move_base_msgs为例) sudo apt-get install ros-<distro>-move-base-msgs ``` 替换`<distro>`为你的ROS版本(如`noetic`, `melodic`) 2. **验证路径配置**: - 检查`CMakeLists.txt`中的`include_directories`路径是否有效 - 确保所有路径符合实际文件位置(参考错误日志中的路径)[^4] 3. **使用`rqt_launch`调试**: ```bash rosrun rqt_launch rqt_launch # 图形化检查节点启动状态[^1] ``` --- #### 2. **修复`image_view`图像显示问题** - **常见原因**: - 摄像头驱动未正确加载 - 话题名称不匹配 - 图像格式错误 - **解决步骤**: 1. **确认摄像头驱动启动**: ```bash roslaunch robot_vision usb_cam.launch # 确保摄像头节点已运行[^2] ``` 2. **检查话题匹配**: ```bash rostopic list | grep image # 查看实际发布的图像话题 rosrun image_view image_view image:=<实际话题名> # 手动指定话题 ``` 3. **验证图像格式**: ```bash rostopic echo /camera_info # 检查图像分辨率和编码格式 ``` --- #### 3. **传感器集成问题** - **通用解决方案**: 1. **统一坐标框架**: - 确保所有传感器在`URDF`中正确定义`<joint>`和`<link>` - 使用`static_transform_publisher`发布静态坐标变换: ```xml <node pkg="tf" type="static_transform_publisher" name="sensor_tf" args="0 0 0.1 0 0 0 base_link camera_link 100"/> ``` 2. **检查消息同步**: - 使用`message_filters`同步多传感器数据: ```python from message_filters import ApproximateTimeSynchronizer sync = ApproximateTimeSynchronizer([sub1, sub2], queue_size=10, slop=0.1) ``` 3. **验证驱动兼容性**: - 确认传感器ROS驱动支持当前内核版本 - 检查设备权限: ```bash ls -l /dev/ttyUSB* # 串口设备权限 sudo chmod 666 /dev/ttyUSB0 ``` --- ### 调试工具推荐 1. **可视化工具**: ```bash rqt_graph # 查看节点连接 rviz # 可视化传感器数据 ``` 2. **日志分析**: ```bash roscd /path/to/log cat roslaunch-*.log | grep "ERROR" ``` 3. **依赖检查**: ```bash rosdep check <package_name> # 验证包依赖 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值