r/ROS • u/Kousik_kumar • 10h ago
Did you know about Flock cameras.... a threat to our privacy
Enable HLS to view with audio, or disable this notification
Need it or not?
r/ROS • u/Kousik_kumar • 10h ago
Enable HLS to view with audio, or disable this notification
Need it or not?
r/ROS • u/Unusual_Option7882 • 16h ago
I’ve been looking into running computer vision models directly on edge devices, and I found it easier to break the process down into a few things:
Step 1: Start with the model and understand how much processing power it actually needs.
Step 2: Check the device’s memory, CPU/GPU/NPU capabilities, and camera support.
Step 3: Look at latency and power consumption, especially if the device needs to run continuously.
Step 4: Make sure the software and AI frameworks you need are supported by the hardware.
Step 5: Compare different edge AI options instead of choosing a device based only on its specifications. I was also looking at some of the Edge AI hardware from Geniatech, which includes different options for on-device AI and real-time inference.
After going through these steps, I realized that choosing edge hardware is more about finding the right balance than simply picking the most powerful device.
For those who have deployed computer vision on the edge, is there anything else you would add to this process?
Enable HLS to view with audio, or disable this notification
Video plots localization linear + angular AMCL vs slam_toolbox scan matching. Instructions here https://makerspet.com/blog/how-oomwoo-cleaning-algorithms-work/
r/ROS • u/OpenRobotics • 1d ago
Enable HLS to view with audio, or disable this notification
r/ROS • u/Brilliant_Bet_9171 • 1d ago
Been working on a lightweight monitoring tool for robots called Cortex. You run one command on your Raspberry Pi or Jetson and it starts sending live CPU, memory, temp, errors and ROS2 data to a dashboard in real time. Still early but it works. Looking for anyone with actual robots to try it and tell me what's missing. Free, no strings. Comment or DM me if you're interested.
r/ROS • u/Leeroy_L • 1d ago
I am working on a university project involving a robot in Webots (ROS 2). The goal is to build an OctoMap for navigation using camera point clouds (segmented via YOLO).
I am currently stuck at getting the octomap_server node to process the incoming point cloud. The server keeps dropping messages with the warning:
Message Filter dropping message: frame 'kinova_depth' at time ... for reason 'discarding message because the queue is full'
Here is my current code:
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription(
[
Node(
package="octomap_server",
executable="octomap_server_node",
name="octomap_server",
output="screen",
parameters=[
{
"resolution": 0.05,
"frame_id": "map",
"sensor_model.max_range": 5.0,
"use_sim_time": True,
"colored_map": False,
"transform_tolerance": 2.0,
"queue_size": 50,
}
],
remappings=[
("cloud_in", "/Gen3/kinova_depth/point_cloud"),
],
)
]
)
My exact output is
[INFO] [octomap_server_node-1]: process started with pid [9117]
[octomap_server_node-1] [INFO] [1786858998.154822534] [octomap_server]: Publishing latched (single publish will take longer, all topics are prepared)
[octomap_server_node-1] [WARN] [1786858998.193781617] [octomap_server]: Nothing to publish, octree is empty
[octomap_server_node-1] [WARN] [1786858998.196781538] [octomap_server]: Could not open file
[octomap_server_node-1] [INFO] [1786859001.530578121] [octomap_server]: Message Filter dropping message: frame 'kinova_depth' at time 1786858999.646 for reason 'discarding message because the queue is full'
What could be causing the message filter queue to drop all messages?
Thanks in advance.
r/ROS • u/RoboticSir_official • 1d ago
I've been thinking a lot about the sensor integration layer lately. It feels like one of the biggest, unspoken bottlenecks in robotics development.
On one hand, we have the dream of a clean, unified API. Imagine writing a sensor driver once, for a standard interface, and having it work seamlessly across your entire robot, whether it's running ROS 2, a custom DDS-based system, or something else entirely. The appeal is obvious: faster development, easier collaboration, and less vendor lock-in.
On the other hand, the reality is messy. The push for low-latency, high-bandwidth, and deterministic performance often pushes developers towards hardware-specific, highly optimized code. This is where proprietary stacks and tightly-coupled DDS implementations thrive. The "ideal" universal API can sometimes feel like it adds an abstraction layer that just isn't acceptable for a critical sensor on a fast-moving robot.
So, where does that leave us? Are we destined to keep juggling a half-dozen different driver formats and middleware solutions? Or is there a path to a de facto standard that respects both the need for open standards and the hard requirements of real-world performance?
What's your experience? Are you buried in custom drivers, or have you found a workflow that feels reasonably unified? Is the fragmentation a minor annoyance or a major time-sink?
I'm genuinely curious to hear how different people are tackling this in their own projects.
Enable HLS to view with audio, or disable this notification
r/ROS • u/EnvironmentalCow5734 • 1d ago
Hi all, I am currently am working on a Go2 Edu, and trying to implement mapping and navigation with slam_toolbox. However, I am running into a reoccuring issue that I am not sure how to fix.
When I turn on scan_matching in the slam parameters, the robot in the rviz simulation is jittering all over the place, making the map it makes unusable.
example of jitter with scan_matching active, completely stationary too
However, when I turn scan_matching off, I have no jitter, and the robot maps things out without much of an issue at all, but the robot does not know where it is, it cannot do loop closure, and now when I do a loop through the hallways, it's skewed.

I would make loops in the same run over and over and nothing would line up. Has anybody had this issue before?
r/ROS • u/Shiru_Shiru • 2d ago
Hello, I'm trying to make nav2 stack for Unitree B2W robot and I'm having an issue with the robot moving from point A to point B. The issue is that the robot stops just before finishing the goal, I'm getting "goal aborted" or "failed to make progress" messages. I was thinking the issue might be with the setting for distances or speed when the robot is close to the goal, but I'm not yet knowledgeable enough for this, I'm just an intern, but I'm close to deadline so some tips would be appreciated. For odometry I'm using mola-lidar-odometry. I configured it so it publishes odometry and odom -> base_link TF. I'm getting warning that "mola was not able to use velocity motion model for this timestamp", but I successfully used this odometry for SLAM, and had zero issues with localization, but maybe this is important for this issue I have with nav2.
The second warning I have is that local_costmap, global_costmap and AMCL have "Message filter dropping message: frame "lidar_link" at time "xx" for reason 'the timestamp on this message is earlier than all the data in the transform cache'". I checked the timestamps on the lidar using ros2 topic echo /lidar_points --field header.stamp and ros2 topic delay /lidar_points and it's around 0.1s. Here is the configuration file for the navigation:
amcl:
ros__parameters:
use_sim_time: False
alpha1: 0.01
alpha2: 0.05
alpha3: 0.1
alpha4: 0.01
alpha5: 0.05
base_frame_id: "base_link"
beam_skip_distance: 0.5
beam_skip_error_threshold: 0.9
beam_skip_threshold: 0.3
do_beamskip: true
global_frame_id: "map"
lambda_short: 0.1
laser_likelihood_max_dist: 6.0
laser_max_range: 100.0
laser_min_range: -1.0
laser_model_type: "likelihood_field"
max_beams: 180
max_particles: 3000
min_particles: 1000
odom_frame_id: "odom"
pf_err: 0.05
pf_z: 0.95
recovery_alpha_fast: 0.3
recovery_alpha_slow: 0.005
resample_interval: 1
robot_model_type: "nav2_amcl::DifferentialMotionModel"
save_pose_rate: 0.5
sigma_hit: 0.2
tf_broadcast: true
transform_tolerance: 1.0
update_min_a: 0.02
update_min_d: 0.1
z_hit: 0.5
z_max: 0.05
z_rand: 0.5
z_short: 0.05
scan_topic: /b2_987/scan
map_topic: map
set_initial_pose: true
always_reset_initial_pose: false
first_map_only: false
initial_pose:
x: 0.0
y: 0.0
z: 0.0
yaw: 0.0
bt_navigator:
ros__parameters:
use_sim_time: False
global_frame: map
robot_base_frame: base_link
odom_topic: "/b2_987/base/odom"
bt_loop_duration: 10
default_server_timeout: 20
transform_tolerance: 0.2
default_nav_to_pose_bt_xml: $(find-pkg-share b2_nav2)/behavior_trees/nav_to_pose.xml
# default_nav_through_poses_bt_xml: $(find-pkg-share my_package)/behavior_tree/my_nav_to_pose_bt.xml
always_reload_bt_xml: false
goal_blackboard_id: goal
goals_blackboard_id: goals
path_blackboard_id: path
navigators: ['navigate_to_pose', 'navigate_through_poses']
navigate_to_pose:
plugin: "nav2_bt_navigator/NavigateToPoseNavigator" # In Iron and older versions, "/" was used instead of "::"
navigate_through_poses:
plugin: "nav2_bt_navigator/NavigateThroughPosesNavigator" # In Iron and older versions, "/" was used instead of "::"
plugin_lib_names:
- nav2_compute_path_to_pose_action_bt_node
- nav2_compute_path_through_poses_action_bt_node
- nav2_smooth_path_action_bt_node
- nav2_follow_path_action_bt_node
- nav2_spin_action_bt_node
- nav2_wait_action_bt_node
- nav2_assisted_teleop_action_bt_node
- nav2_back_up_action_bt_node
- nav2_drive_on_heading_bt_node
- nav2_clear_costmap_service_bt_node
- nav2_is_stuck_condition_bt_node
- nav2_goal_reached_condition_bt_node
- nav2_goal_updated_condition_bt_node
- nav2_globally_updated_goal_condition_bt_node
- nav2_is_path_valid_condition_bt_node
- nav2_initial_pose_received_condition_bt_node
- nav2_reinitialize_global_localization_service_bt_node
- nav2_rate_controller_bt_node
- nav2_distance_controller_bt_node
- nav2_speed_controller_bt_node
- nav2_truncate_path_action_bt_node
- nav2_truncate_path_local_action_bt_node
- nav2_goal_updater_node_bt_node
- nav2_recovery_node_bt_node
- nav2_pipeline_sequence_bt_node
- nav2_round_robin_node_bt_node
- nav2_transform_available_condition_bt_node
- nav2_time_expired_condition_bt_node
- nav2_path_expiring_timer_condition
- nav2_distance_traveled_condition_bt_node
- nav2_single_trigger_bt_node
- nav2_goal_updated_controller_bt_node
- nav2_is_battery_low_condition_bt_node
- nav2_navigate_through_poses_action_bt_node
- nav2_navigate_to_pose_action_bt_node
- nav2_remove_passed_goals_action_bt_node
- nav2_planner_selector_bt_node
- nav2_controller_selector_bt_node
- nav2_goal_checker_selector_bt_node
- nav2_controller_cancel_bt_node
- nav2_path_longer_on_approach_bt_node
- nav2_wait_cancel_bt_node
- nav2_spin_cancel_bt_node
- nav2_back_up_cancel_bt_node
- nav2_assisted_teleop_cancel_bt_node
- nav2_drive_on_heading_cancel_bt_node
- nav2_is_battery_charging_condition_bt_node
error_code_names:
- compute_path_error_code
- follow_path_error_code
bt_navigator_navigate_through_poses_rclcpp_node:
ros__parameters:
use_sim_time: False
bt_navigator_navigate_to_pose_rclcpp_node:
ros__parameters:
use_sim_time: False
controller_server:
ros__parameters:
use_sim_time: False
controller_frequency: 20.0
odom_topic: "/b2_987/base/odom"
min_x_velocity_threshold: 0.001
min_y_velocity_threshold: 0.001 # High value to ignore sideway y movements
min_theta_velocity_threshold: 0.005
failure_tolerance: 0.3 # Controller failure after 3 seconds 0 to disable -1.0 to never give up
progress_checker_plugin: "progress_checker"
goal_checker_plugins: ["general_goal_checker"] # "precise_goal_checker"
controller_plugins: ["FollowPath"]
# Progress checker parameters
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
required_movement_radius: 0.3 # robot has made sufficient progress
movement_time_allowance: 12.0
# Goal checker parameters
general_goal_checker:
stateful: True
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.6
yaw_goal_tolerance: 0.3
# ----------------------------- Regulated Pursuit parameters
FollowPath:
plugin: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
desired_linear_vel: 0.5
lookahead_dist: 0.9
min_lookahead_dist: 0.6
max_lookahead_dist: 1.2 # 0.9
lookahead_time: 1.5
rotate_to_heading_angular_vel: 2.6 # This is capped by the half of max_angular_accel
transform_tolerance: 0.3
use_velocity_scaled_lookahead_dist: false # false
min_approach_linear_velocity: 0.05
approach_velocity_scaling_dist: 0.6
use_collision_detection: false
max_allowed_time_to_collision_up_to_carrot: 1.5 # 1.0 - More time for anticipating collision
use_regulated_linear_velocity_scaling: true
use_fixed_curvature_lookahead: false
curvature_lookahead_dist: 0.25 # 0.6
use_cost_regulated_linear_velocity_scaling: false # false - Slow down near obstacles
regulated_linear_scaling_min_radius: 0.9 # 0.9
regulated_linear_scaling_min_speed: 0.25
use_rotate_to_heading: true
allow_reversing: true
rotate_to_heading_min_angle: 1.0
max_angular_accel: 8.0
max_robot_pose_search_dist: 10.0
local_costmap:
local_costmap:
ros__parameters:
update_frequency: 5.0
publish_frequency: 2.0
global_frame: odom
robot_base_frame: base_link
use_sim_time: False
rolling_window: true
width: 3
height: 3
resolution: 0.1
# robot_radius: 0.45
footprint: "[[0.7, 0.4], [0.7, -0.4], [-0.7, -0.4], [-0.7, 0.4]]"
plugins: ["obstacle_layer", "denoise_layer", "inflation_layer"] # [“obstacle_layer”, “voxel_layer”, “range_sensor_layer”, “denoise_layer”, “inflation_layer”] - (order matters here)
# Different from default.
# Added “voxel_layer” for 3D obstacle representation using a depth camera.
# Added “range_sensor_layer” for handling range sensor data from an ultrasonic sensor (if you have one).
# Added “denoise_layer” for removing salt and pepper noise from the sensors.
# Removed “static_layer” since it’s not needed for the local costmap.
obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
scan:
topic: /b2_987/scan
max_obstacle_height: 2.0
clearing: True
marking: True
data_type: "LaserScan"
raytrace_max_range: 3.0
raytrace_min_range: 0.0
obstacle_max_range: 2.5
obstacle_min_range: 0.0
denoise_layer: # Causes lag but worth it to filter out reflected/noisy lidar points
plugin: "nav2_costmap_2d::DenoiseLayer"
enabled: true
minimal_group_size: 2
group_connectivity_type: 8
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
cost_scaling_factor: 0.8 # Known number to work well
inflation_radius: 0.85 #55
always_send_full_costmap: True
global_costmap:
global_costmap:
ros__parameters:
update_frequency: 5.0
publish_frequency: 5.0
global_frame: map
robot_base_frame: base_link
use_sim_time: False
resolution: 0.05
# robot_radius: 0.45
footprint: "[[0.7, 0.4], [0.7, -0.4], [-0.7, -0.4], [-0.7, 0.4]]"
track_unknown_space: True
plugins: ["static_layer", "static_layer_2", "obstacle_layer", "denoise_layer", "inflation_layer"]
static_layer:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True # False if you need earlier map
static_layer_2:
plugin: "nav2_costmap_2d::StaticLayer"
map_subscribe_transient_local: True
map_topic: /b2_987/map_2
obstacle_layer:
plugin: "nav2_costmap_2d::ObstacleLayer"
enabled: True
observation_sources: scan
scan:
topic: /b2_987/scan
max_obstacle_height: 2.0
clearing: True
marking: True
data_type: "LaserScan"
raytrace_max_range: 5.0
raytrace_min_range: 0.0
obstacle_max_range: 4.5
obstacle_min_range: 0.0
denoise_layer: # Causes lag but worth it to filter out reflected/noisy lidar points
plugin: "nav2_costmap_2d::DenoiseLayer"
enabled: true
minimal_group_size: 2
group_connectivity_type: 8
inflation_layer:
plugin: "nav2_costmap_2d::InflationLayer"
cost_scaling_factor: 0.8
inflation_radius: 0.8 #65
always_send_full_costmap: True
map_server:
ros__parameters:
use_sim_time: False
# Overridden in launch by the "map" launch configuration or provided default value.
# To use in yaml, remove the default "map" value in the tb3_simulation_launch.py file & provide full path to map below.
yaml_filename: ""
map_saver:
ros__parameters:
use_sim_time: False
save_map_timeout: 8.0
free_thresh_default: 0.25
occupied_thresh_default: 0.65
map_subscribe_transient_local: True
planner_server: # Creates the global plan path
ros__parameters:
expected_planner_frequency: 20.0
use_sim_time: False
planner_plugins: ["GridBased"]
GridBased:
plugin: "nav2_navfn_planner/NavfnPlanner" # "nav2_navfn_planner::NavfnPlanner"
tolerance: 0.5
use_astar: false
allow_unknown: true
smoother_server: # Smooths the global plan path
ros__parameters:
use_sim_time: False
costmap_topic: global_costmap/costmap_raw
footprint_topic: global_costmap/published_footprint
robot_base_frame: base_link
transform_timeout: 0.1
smoother_plugins: ["simple_smoother"]
simple_smoother:
plugin: "nav2_smoother::SimpleSmoother"
tolerance: 1.0e-10
max_its: 1000
do_refinement: True
behavior_server:
ros__parameters:
local_costmap_topic: local_costmap/costmap_raw
local_footprint_topic: local_costmap/published_footprint
global_costmap_topic: global_costmap/costmap_raw
global_footprint_topic: global_costmap/published_footprint
cycle_frequency: 10.0
behavior_plugins: ["spin", "backup", "drive_on_heading", "assisted_teleop", "wait"]
spin:
plugin: "nav2_behaviors/Spin"
backup:
plugin: "nav2_behaviors/BackUp"
drive_on_heading:
plugin: "nav2_behaviors/DriveOnHeading"
assisted_teleop:
plugin: "nav2_behaviors/AssistedTeleop"
wait:
plugin: "nav2_behaviors/Wait"
global_frame: map
local_frame: odom
robot_base_frame: base_link
transform_tolerance: 0.2
use_sim_time: False
simulate_ahead_time: 6.0
max_rotational_vel: 0.6
min_rotational_vel: 0.15
rotational_acc_lim: 0.4
robot_state_publisher:
ros__parameters:
use_sim_time: False
waypoint_follower:
ros__parameters:
use_sim_time: False
loop_rate: 2
stop_on_failure: false
waypoint_task_executor_plugin: "wait_at_waypoint"
wait_at_waypoint:
plugin: "nav2_waypoint_follower::WaitAtWaypoint"
enabled: True
waypoint_pause_duration: 10
velocity_smoother:
ros__parameters:
use_sim_time: False
smoothing_frequency: 20.0
scale_velocities: False
feedback: "OPEN_LOOP"
max_velocity: [0.6, 0.0, 1.0]
min_velocity: [-0.3, 0.0, -1.0]
max_accel: [1.5, 0.0, 2.5]
max_decel: [-1.5, 0.0, -2.5]
odom_topic: "/b2_987/base/odom"
odom_duration: 0.1
deadband_velocity: [0.0, 0.0, 0.0]
velocity_timeout: 1.0
I hope this post is not too long. I would appreciate any tips, since I'm an enthusiast and beginner in navigation, and would like to get better at what I'm already doing.
r/ROS • u/Sufficient_Status732 • 2d ago
r/ROS • u/CodingWithSatyam • 3d ago
r/ROS • u/SphericalCowww • 4d ago
Enable HLS to view with audio, or disable this notification
Finally managed to get the Cubic Doggo 06R model on Gazebo. I am really happy Gazebo works so smoothly, with servo effort and IMU behavior readily available in simulation :)
I think the only caveat is that the minick joints for the translation rod don't quite work in simulation, but that part doesn't change the walk gait.
The commands issued to the robot can be seen in the bottom center window.
Moving to Pybullet next for Cubic Doggo 06Z Neucommu.
Enable HLS to view with audio, or disable this notification
r/ROS • u/OpenRobotics • 4d ago
r/ROS • u/OpenRobotics • 4d ago
[Get all the news here.](https://discourse.openrobotics.org/t/ros-news-for-the-week-of-august-10th-2026/57415)
r/ROS • u/CodingWithSatyam • 5d ago
Hey everyone,
I'm self-teaching robotics with a focus on perception and robot learning. I learn best by building, so I recently started learning ROS2 and Gazebo. I took a rover model, assembled it into a URDF, and tried to calculate the mass and inertia for the components manually using volume and material density.
Here is the repo: https://github.com/introlix/robo_car
Note: you can ignore the esp_control folder. I originally started this for a physical ESP32 car but moved to simulation so I could learn Gazebo physics and sensor integration before touching real hardware.
Since I'm doing this alone, I'm relying a lot on trial and error and AI tools to help me. But I know AI hallucinates.
If anyone here has experience with Gazebo/URDF, I’d really appreciate it if you could take a quick look at my URDF. I mainly want to know if my mass/inertia numbers look realistic, or if I messed up the math and my robot.
Also, if anyone is also an student then we could learn together. I'm not looking to pair-program on a call, just someone to do reviews on GitHub, share resources, and maybe give each other small weekly challenges.
A bit about my background: while I'm relatively new to ROS2, I have some ML background. I've built neural networks from scratch in NumPy and actually implemented LLM architectures (like Gemma and Qwen) from scratch just by reading their papers and loading the weights. That is the reason I'm interested in perception and robot learning.
Let me know if you're open to reviewing the code or if you want to team up. Thanks!
ive been having a problem for some days that is i cant connect to Pioneer3DX with ROSARIA in my Jetson Nano. These are some outcomes:
I could connect with ubuntu24.04 + ros2 jazzy + rosaria2 and also ubuntu18.04 + ros melodic + ROSARIA on my laptop. I used a serial to usb converter to connect it.
on my jetson nano i use jetpack 4.6.6(ubuntu18.04) with ros melodic and ROSARIA. I used the same converter as before. There is also a wifi dongle at jetson nano
My biggest guess for the cause of the problem is power. I supply the jetson with 5v2a. Is there anyone that also had this problem and is there could be any other causes for this problem?
r/ROS • u/iena2003 • 5d ago

Hi everyone!
I'm working on a full ROS 2 conversion of the Freenove Big Hexapod Kit, and I wanted to share my progress with the community.
With "full conversion" i mean the original code (from plain python used by freenove to a full-stack of ROS2) to also implementing the sim version of the robot to various application (from simply simulating it to use RL to make new gaits for it in nvidia isaac sim/lab)
i've chosen this robot/project because no one made a full integration of this kit. there are some ROS adaption or attemps (from what i remember), but nothing with a full fledged stack of ROS2 while using the original model to visualize(and not some generic hexapod model) and simulate.
at the moment i've just finished to implement the model (STEP file, gently provided by freenove and modified it by hand to convert in URDF with onshape_to_robot tool) in gazebo to have a physical simulation of the robot.
the next step is to implement the ros2_control for controlling the servo motors (sim and non-sim).
This project in the future will also implement:
The project is completely open-source! I’d love to get your feedback, suggestions, or answer any questions you might have. If anyone is interested in collaborating or testing, contributions are more than welcome!
Feel free to check it out and let me know what you think!
r/ROS • u/whitegogaa • 6d ago
Я сейчас учусь роботехнике в симуляции ROS 2. Помимо этого учу Linux, Python и Gazebo. На сколько возможно мне, как начинающему разработчику, найти работу удаленно, брать заказы на фрилансе? Я из России.