From 436f10896b022c321e675cedc80010def5dd9e36 Mon Sep 17 00:00:00 2001 From: robofish <1683502971@qq.com> Date: Sat, 12 Jul 2025 22:10:21 +0800 Subject: [PATCH] r2-7-12 --- nav.sh | 5 +- nav1.sh | 4 +- nav2.sh | 6 +- nav21.rviz | 677 ++++++++++++++++++ src/rc_lidar.zip | Bin 0 -> 17107 bytes src/rc_lidar/caijian.py | 2 +- src/rc_lidar/zhaoban.py | 2 +- .../reality/measurement_params_real.yaml | 2 +- 8 files changed, 690 insertions(+), 8 deletions(-) create mode 100644 nav21.rviz create mode 100644 src/rc_lidar.zip diff --git a/nav.sh b/nav.sh index 10395dc..6ae52a4 100644 --- a/nav.sh +++ b/nav.sh @@ -12,8 +12,9 @@ commands=( "ros2 launch rm_simpal_move simple_move.launch.py" "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/R2_Serial.py" # "/usr/bin/python3 /home/robofish/RC2025/src/rc_lidar/juxing.py" - "/usr/bin/python3 /home/robofish/RC2025/src/rc_lidar/caijian.py" - # "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/slect.py map" + "/bin/python3 /home/robofish/RC2025/src/rc_lidar/pcd2pgm.py" + "/bin/python3 /home/robofish/RC2025/src/rc_lidar/caijian.py" + "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/pub_goal.py" ) diff --git a/nav1.sh b/nav1.sh index 2bd46f4..5da90df 100644 --- a/nav1.sh +++ b/nav1.sh @@ -11,7 +11,9 @@ commands=( nav_rviz:=true" "ros2 launch rm_simpal_move simple_move.launch.py" "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/R2_Serial.py" - "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/slect.py map1" + "/bin/python3 /home/robofish/RC2025/src/rc_lidar/pcd2pgm.py" + "/bin/python3 /home/robofish/RC2025/src/rc_lidar/caijian.py" + "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/pub_goal.py" ) diff --git a/nav2.sh b/nav2.sh index fcfc471..817be1f 100644 --- a/nav2.sh +++ b/nav2.sh @@ -6,12 +6,14 @@ commands=( world:=map2 \ mode:=nav \ lio:=fastlio \ - localization:=amcl \ + localization:=icp \ lio_rviz:=false \ nav_rviz:=true" "ros2 launch rm_simpal_move simple_move.launch.py" "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/R2_Serial.py" - "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/slect.py map2" + "/bin/python3 /home/robofish/RC2025/src/rc_lidar/pcd2pgm.py" + "/bin/python3 /home/robofish/RC2025/src/rc_lidar/caijian.py" + "/bin/python3 /home/robofish/RC2025/src/rm_driver/rm_serial_driver/script/pub_goal.py" ) diff --git a/nav21.rviz b/nav21.rviz new file mode 100644 index 0000000..2e0a441 --- /dev/null +++ b/nav21.rviz @@ -0,0 +1,677 @@ +Panels: + - Class: rviz_common/Displays + Help Height: 0 + Name: Displays + Property Tree Widget: + Expanded: + - /Global Options1 + - /TF1/Tree1 + - /Map2 + Splitter Ratio: 0.5833333134651184 + Tree Height: 462 + - Class: rviz_common/Selection + Name: Selection + - Class: rviz_common/Tool Properties + Expanded: + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz_common/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: nav2_rviz_plugins/Navigation 2 + Name: Navigation 2 +Visualization Manager: + Class: "" + Displays: + - Alpha: 0.5 + Cell Size: 1 + Class: rviz_default_plugins/Grid + Color: 160; 160; 164 + Enabled: true + Line Style: + Line Width: 0.029999999329447746 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 10 + Reference Frame: + Value: true + - Alpha: 1 + Class: rviz_default_plugins/RobotModel + Collision Enabled: false + Description File: "" + Description Source: Topic + Description Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /robot_description + Enabled: true + Links: + All Links Enabled: true + Expand Joint Details: false + Expand Link Details: false + Expand Tree: false + Link Tree Style: Links in Alphabetic Order + base_link: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + livox_frame: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wheel_1: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wheel_2: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wheel_3: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + wheel_4: + Alpha: 1 + Show Axes: false + Show Trail: false + Value: true + Mass Properties: + Inertia: false + Mass: false + Name: RobotModel + TF Prefix: "" + Update Interval: 0 + Value: true + Visual Enabled: true + - Class: rviz_default_plugins/TF + Enabled: true + Frame Timeout: 15 + Frames: + All Enabled: false + base_link: + Value: true + base_link_fake: + Value: true + goal_pose: + Value: true + lidar_odom: + Value: true + livox_frame: + Value: true + map: + Value: true + odom: + Value: true + wheel_1: + Value: true + wheel_2: + Value: true + wheel_3: + Value: true + wheel_4: + Value: true + Marker Scale: 1 + Name: TF + Show Arrows: true + Show Axes: true + Show Names: false + Tree: + map: + goal_pose: + {} + odom: + lidar_odom: + base_link: + base_link_fake: + {} + livox_frame: + {} + wheel_1: + {} + wheel_2: + {} + wheel_3: + {} + wheel_4: + {} + Update Interval: 0 + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/LaserScan + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 0 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: LaserScan + Position Transformer: XYZ + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Points + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Best Effort + Value: /scan + Use Fixed Frame: true + Use rainbow: true + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/PointCloud2 + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: false + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: voxel_grid + Position Transformer: XYZ + Selectable: true + Size (Pixels): 3 + Size (m): 0.05000000074505806 + Style: Boxes + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /global_costmap/voxel_grid + Use Fixed Frame: true + Use rainbow: true + Value: false + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/PointCloud2 + Color: 255; 255; 255 + Color Transformer: "" + Decay Time: 0 + Enabled: false + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: Bumper Hit + Position Transformer: "" + Selectable: true + Size (Pixels): 3 + Size (m): 0.07999999821186066 + Style: Spheres + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Best Effort + Value: /mobile_base/sensors/bumper_pointcloud + Use Fixed Frame: true + Use rainbow: true + Value: false + - Alpha: 0.6000000238418579 + Class: rviz_default_plugins/Map + Color Scheme: map + Draw Behind: true + Enabled: true + Name: Map + Topic: + Depth: 1 + Durability Policy: Transient Local + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /map + Update Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /map_updates + Use Timestamp: false + Value: true + - Alpha: 1 + Class: nav2_rviz_plugins/ParticleCloud + Color: 0; 180; 0 + Enabled: false + Max Arrow Length: 0.30000001192092896 + Min Arrow Length: 0.019999999552965164 + Name: Amcl Particle Swarm + Shape: Arrow (Flat) + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Best Effort + Value: /particle_cloud + Value: false + - Class: rviz_common/Group + Displays: + - Alpha: 0.30000001192092896 + Class: rviz_default_plugins/Map + Color Scheme: costmap + Draw Behind: false + Enabled: true + Name: Global Costmap + Topic: + Depth: 1 + Durability Policy: Transient Local + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /global_costmap/costmap + Update Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /global_costmap/costmap_updates + Use Timestamp: false + Value: true + - Alpha: 0.30000001192092896 + Class: rviz_default_plugins/Map + Color Scheme: costmap + Draw Behind: false + Enabled: true + Name: Downsampled Costmap + Topic: + Depth: 1 + Durability Policy: Transient Local + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /downsampled_costmap + Update Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /downsampled_costmap_updates + Use Timestamp: false + Value: true + - Alpha: 1 + Buffer Length: 1 + Class: rviz_default_plugins/Path + Color: 255; 0; 0 + Enabled: true + Head Diameter: 0.019999999552965164 + Head Length: 0.019999999552965164 + Length: 0.30000001192092896 + Line Style: Lines + Line Width: 0.029999999329447746 + Name: Path + Offset: + X: 0 + Y: 0 + Z: 0 + Pose Color: 255; 85; 255 + Pose Style: Arrows + Radius: 0.029999999329447746 + Shaft Diameter: 0.004999999888241291 + Shaft Length: 0.019999999552965164 + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /plan + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/PointCloud2 + Color: 125; 125; 125 + Color Transformer: FlatColor + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: VoxelGrid + Position Transformer: XYZ + Selectable: true + Size (Pixels): 3 + Size (m): 0.05000000074505806 + Style: Boxes + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /global_costmap/voxel_marked_cloud + Use Fixed Frame: true + Use rainbow: true + Value: true + - Alpha: 1 + Class: rviz_default_plugins/Polygon + Color: 25; 255; 0 + Enabled: false + Name: Polygon + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /global_costmap/published_footprint + Value: false + Enabled: false + Name: Global Planner + - Class: rviz_common/Group + Displays: + - Alpha: 0.699999988079071 + Class: rviz_default_plugins/Map + Color Scheme: costmap + Draw Behind: false + Enabled: true + Name: Local Costmap + Topic: + Depth: 1 + Durability Policy: Transient Local + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /local_costmap/costmap + Update Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /local_costmap/costmap_updates + Use Timestamp: false + Value: true + - Alpha: 1 + Buffer Length: 1 + Class: rviz_default_plugins/Path + Color: 0; 12; 255 + Enabled: true + Head Diameter: 0.30000001192092896 + Head Length: 0.20000000298023224 + Length: 0.30000001192092896 + Line Style: Lines + Line Width: 0.029999999329447746 + Name: Local Plan + Offset: + X: 0 + Y: 0 + Z: 0 + Pose Color: 255; 85; 255 + Pose Style: None + Radius: 0.029999999329447746 + Shaft Diameter: 0.10000000149011612 + Shaft Length: 0.10000000149011612 + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /local_plan + Value: true + - Class: rviz_default_plugins/MarkerArray + Enabled: false + Name: Trajectories + Namespaces: + {} + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /marker + Value: false + - Alpha: 1 + Class: rviz_default_plugins/Polygon + Color: 25; 255; 0 + Enabled: true + Name: Polygon + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /local_costmap/published_footprint + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz_default_plugins/PointCloud2 + Color: 255; 255; 255 + Color Transformer: RGB8 + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: VoxelGrid + Position Transformer: XYZ + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /local_costmap/voxel_marked_cloud + Use Fixed Frame: true + Use rainbow: true + Value: true + Enabled: false + Name: Controller + - Class: rviz_default_plugins/MarkerArray + Enabled: false + Name: MarkerArray + Namespaces: + {} + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /waypoints + Value: false + - Alpha: 1 + Arrow Length: 0.30000001192092896 + Axes Length: 0.30000001192092896 + Axes Radius: 0.009999999776482582 + Class: rviz_default_plugins/PoseArray + Color: 255; 25; 0 + Enabled: false + Head Length: 0.07000000029802322 + Head Radius: 0.029999999329447746 + Name: PoseArray + Shaft Length: 0.23000000417232513 + Shaft Radius: 0.009999999776482582 + Shape: Arrow (Flat) + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /teb_poses + Value: false + - Class: rviz_default_plugins/Marker + Enabled: false + Name: Marker + Namespaces: + {} + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /teb_markers + Value: false + - Class: rviz_default_plugins/Axes + Enabled: false + Length: 0.5 + Name: base_link_fake + Radius: 0.07999999821186066 + Reference Frame: base_link_fake + Value: false + - Alpha: 0.699999988079071 + Class: rviz_default_plugins/Map + Color Scheme: map + Draw Behind: false + Enabled: true + Name: Map + Topic: + Depth: 5 + Durability Policy: Volatile + Filter size: 10 + History Policy: Keep Last + Reliability Policy: Reliable + Value: /lidar_grid + Update Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /lidar_grid_updates + Use Timestamp: false + Value: true + Enabled: true + Global Options: + Background Color: 48; 48; 48 + Fixed Frame: map + Frame Rate: 30 + Name: root + Tools: + - Class: rviz_default_plugins/MoveCamera + - Class: rviz_default_plugins/Select + - Class: rviz_default_plugins/FocusCamera + - Class: rviz_default_plugins/Measure + Line color: 128; 128; 0 + - Class: rviz_default_plugins/SetInitialPose + Covariance x: 0.25 + Covariance y: 0.25 + Covariance yaw: 0.06853891909122467 + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /initialpose + - Class: rviz_default_plugins/PublishPoint + Single click: true + Topic: + Depth: 5 + Durability Policy: Volatile + History Policy: Keep Last + Reliability Policy: Reliable + Value: /clicked_point + - Class: nav2_rviz_plugins/GoalTool + Transformation: + Current: + Class: rviz_default_plugins/TF + Value: true + Views: + Current: + Class: rviz_default_plugins/Orbit + Distance: 2.10038423538208 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: -0.5876622200012207 + Y: 1.5225260257720947 + Z: 0.4079643487930298 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 1.5697963237762451 + Target Frame: + Value: Orbit (rviz_default_plugins) + Yaw: 5.280543804168701 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 932 + Hide Left Dock: false + Hide Right Dock: false + Navigation 2: + collapsed: false + QMainWindow State: 000000ff00000000fd0000000400000000000001560000034afc020000000afb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f00700065007200740069006500730200000438000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000020b000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb00000018004e0061007600690067006100740069006f006e00200032010000024e000001390000013900fffffffb0000001e005200650061006c00730065006e0073006500430061006d00650072006100000002c6000000c10000000000000000000000010000010f0000034afc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a00560069006500770073000000003d0000034a000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000004420000003efc0100000002fb0000000800540069006d00650100000000000004420000000000000000fb0000000800540069006d00650100000000000004500000000000000000000004ad0000034a00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: false + Width: 1545 + X: 375 + Y: 74 diff --git a/src/rc_lidar.zip b/src/rc_lidar.zip new file mode 100644 index 0000000000000000000000000000000000000000..1351eae503d4191cae804bd75fb03653de366305 GIT binary patch literal 17107 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 P=O6!1Nw^R1`?LQ8L5PPe literal 0 HcmV?d00001 diff --git a/src/rc_lidar/caijian.py b/src/rc_lidar/caijian.py index 17d8ab4..6511038 100644 --- a/src/rc_lidar/caijian.py +++ b/src/rc_lidar/caijian.py @@ -31,7 +31,7 @@ class LidarFilterNode(Node): points[i] = [x, y, z, intensity] z_mask = (points[:,2] >= 1.5) & (points[:,2] <= 3.0) - dist_mask = np.linalg.norm(points[:,:3], axis=1) <= 12.0 + dist_mask = np.linalg.norm(points[:,:3], axis=1) <= 16.0 mask = z_mask & dist_mask filtered_points = points[mask] diff --git a/src/rc_lidar/zhaoban.py b/src/rc_lidar/zhaoban.py index 556027e..6268cf2 100644 --- a/src/rc_lidar/zhaoban.py +++ b/src/rc_lidar/zhaoban.py @@ -19,7 +19,7 @@ def find_circle(points, eps=0.5, min_samples=10): # 聚类 clustering = DBSCAN(eps=eps, min_samples=min_samples).fit(points) labels = clustering.labels_ - # 只取最大簇 + # 只取最大簇 unique, counts = np.unique(labels[labels != -1], return_counts=True) if len(unique) == 0: raise ValueError("未找到有效聚类") diff --git a/src/rm_nav_bringup/config/reality/measurement_params_real.yaml b/src/rm_nav_bringup/config/reality/measurement_params_real.yaml index 41fe73e..4586ff8 100644 --- a/src/rm_nav_bringup/config/reality/measurement_params_real.yaml +++ b/src/rm_nav_bringup/config/reality/measurement_params_real.yaml @@ -1,3 +1,3 @@ base_link2livox_frame: - xyz: "\"0.01906 -0.33 0.41\"" + xyz: "\"0.00906 -0.33 0.41\"" rpy: "\"0.0 0.0 0.0\"" \ No newline at end of file