
一、初始化执行cd ~/catkin_ws chmod x src/URDF26911/scripts/yolo_brush_controller.py catkin_make -DCATKIN_WHITELIST_PACKAGESURDF26911 source devel/setup.bash二、启动gazebo重新启动roslaunch URDF26911 gazebo_long_edge_20.launch \ tile_grid:2 \ dirty_probability_threshold:0.35其中 dirty_probability_threshold:0.35后边得值0.35大于这个值就会识别为DUSTY最近仿真的结果设置为0.15基本识别的都是DUSTY仿真在跑的过程中识别到为干净光伏板的结果为0.28194左右。所以设置为门槛为0.291、识别为浅度灰尘污染为0.256左右查看局部区域最高脏污概率rostopic echo /pv_cleaning/dusty_probability同时查看结果和转速rostopic echo /pv_cleaning/classificationrostopic echo /pv_cleaning/brush_target_rpm三、开摄像头画面在新终端执行source ~/catkin_ws/devel/setup.bash rosrun rqt_image_view rqt_image_view打开窗口后在左上角话题下拉框选择/pv_front_camera/image_raw四、控制小车前进与停止控制机器人沿长边前进rostopic pub -r 10 /cmd_vel geometry_msgs/Twist \ {linear: {x: 0.10, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}然后执行停车rostopic pub -1 /cmd_vel geometry_msgs/Twist \ {linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}四、杀死所有进程关闭所有 ROS、Gazebo、速度发布和识别进程rosnode kill -a 2/dev/null pkill -TERM -f [r]ostopic pub pkill -TERM -f [y]olo_brush_controller pkill -TERM -f [c]ontroller_spawner pkill -TERM -f [r]oslaunch pkill -TERM -x gzserver pkill -TERM -x gzclient pkill -TERM -x rosmaster pkill -TERM -x roscore pkill -TERM -x rosout pkill -TERM -f [r]qt_image_view检查是否还有残留ps -ef | grep -E roslaunch|rosmaster|roscore|gzserver|gzclient|rostopic|yolo_brush|rqt_image | grep -v grep没有输出就表示相关进程已全部关闭。五、仿真出图1. 启动长边仿真终端1cd ~/catkin_ws source devel/setup.bash roslaunch URDF26911 gazebo_long_edge_20.launch \ dirty_probability_threshold:0.30如果 Gazebo 暂停rosservice call /gazebo/unpause_physics2. 开始录包终端2cd ~/catkin_ws source devel/setup.bash rosbag record --lz4 \ -O pv_cleaning_result.bag \ /clock \ /cmd_vel \ /odom \ /joint_states \ /pv_cleaning/classification \ /pv_cleaning/confidence \ /pv_cleaning/dusty_probability \ /pv_cleaning/brush_target_rpm \ /brush_velocity_controller/command看到下面内容表示已经开始记录Recording to pv_cleaning_result.bag3. 控制机器人前进终端3source ~/catkin_ws/devel/setup.bash rostopic pub -r 10 /cmd_vel geometry_msgs/Twist \ {linear: {x: 0.10, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}让机器人完成行驶后在终端3按CtrlC发送停车指令rostopic pub -1 /cmd_vel geometry_msgs/Twist \ {linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}在录包终端2按CtrlC检查录包cd ~/catkin_ws rosbag info pv_cleaning_result.bag4. 导出 CSVcd ~/catkin_ws rostopic echo -b pv_cleaning_result.bag \ -p /pv_cleaning/classification \ classification.csv rostopic echo -b pv_cleaning_result.bag \ -p /pv_cleaning/dusty_probability \ dusty_probability.csv rostopic echo -b pv_cleaning_result.bag \ -p /pv_cleaning/brush_target_rpm \ brush_target_rpm.csv rostopic echo -b pv_cleaning_result.bag \ -p /odom \ odom.csv检查ls -lh *.csv pv_cleaning_result.bag5.保存后绘图cd ~/catkin_ws python3 plot_results.py要改出图的文件名称为这个