Code Monkey home page Code Monkey logo

brobot's Introduction

BroBot

CI Testing CI Linting

A 4WD differential drive robot is controlled using ROS2 Humble running on a Raspberry Pi 4 (running Ubuntu server 22.04). The vehicle is equipped with a camera for visual feedback and an RPLIDAR A1 sensor used for Simultaneous Localization and Mapping (SLAM), autonomous navigation and obstacle avoidance. The Linorobot2 project is leveraged through my use of a Teensy 4.1 running a Micro-ROS node to interface with 4 motors/encoders and an IMU.

The intent of the project is to learn about robotics, and to eventually recognize my cat's face and follow/chase him for his entertainment.

See the workspace template for workspace usage instructions.

(Work in Progress)

Tasks

(non-exhaustive)

  • Simulate in Gazebo
  • Interface with motors
  • Finish Chassis Wiring
  • Fix linorobot2_hardware ROS versions / add CI
  • Integrate LIDAR
  • Integrate camera
  • Chase cat remotely
  • Replace DC-DC converter
  • Add battery voltage display/low-voltage cutoff
  • Fix SLAM
  • Figure out how I want to use Nav2 in simulation
  • Modify Nav2 launchfiles
  • Use Nav2 with costmap and goal pose in simulation
  • Test Nav2 with waypoints in simulation
  • Investigate Nav2 AMCL
  • Run Nav2 on real robot
  • Do loop of house with Nav2 waypoints
  • Integrate gamepad and twist_mux
  • Implement OpenCV or similar to recognize cat
  • Autonomously chase cat
  • Convert CAD to more detailed URDF
  • Patch kernel to enable use of RPi Camera Module 3

Supervision of URDF work

Hardware

BroBot Front View

BroBot Side View

BroBot Rear Top View

BroBot Initial Construction

Part list

The following components were used in this project:

Part
1 Raspberry Pi 4 (4 GB)
2 AmazonBasics 128 GB SD Card
3 Yahboom Aluminum Alloy ROS Robot Car Chassis (4wd chassis)
4 L298N Motor Drivers
5 DFRobot DC-DC Power Module 25W DFR0205
6 Screw-down Terminal Block Strips Dual Row 10A 380V
7 RPLIDAR A1
8 GeeekPi Fan Hat with OLED for RPi 4/3/2/B/+
9 GeeekPi M2.5 Standoffs
10 Dupont Wires
11 Arduino Uno
12 Spare wires

Some other tools or parts used in the project are as follows:

Tool/Part
1 Soldering iron
2 SOMELINE Ferrule Crimping Tool Kit
3 Screwdriver set
4 Hot Glue Gun
5 Hot Glue
6 iCrimp IWS-3220M Micro Connector Pin Crimping Tool
7 Connector Crimp Pin Cable Kit JST SYP Futaba
8 Zip ties

Acknowledgments

brobot's People

Contributors

atticusrussell avatar dependabot[bot] avatar

Stargazers

 avatar

Watchers

 avatar  avatar

brobot's Issues

[Feature] ros2_control of Gazebo simulation's front wheels

Is your feature request related to a problem? Please describe.
Properly implement ros2_control in Gazebo, to then be used with the hardware. Do this for the front wheels first, and worry later about 4wd.

Describe the solution you'd like

  • controller_manager
  • diff_drive_control
  • articulated robotics is a good example

[BUG] Full queues for laser and odom messages from RViz during SLAM

Describe the bug
Getting 'discarding message because the queue is full' errors from RViz during SLAM

To Reproduce
Steps to reproduce the behavior:

  1. Launch bringup on robot
  2. Launch navigation from PC ros2 launch brobot_navigation slam.launch.py rviz:=true

Screenshots/Logs

atticus@dev-5587:~/workspace/brobot_ws  (linobrobot) 
$ ros2 launch brobot_navigation slam.launch.py rviz:=true
[INFO] [launch]: All log files can be found below /home/atticus/.ros/log/2023-10-24-23-48-01-859926-dev-5587-130150
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [controller_server-1]: process started with pid [130152]
[INFO] [smoother_server-2]: process started with pid [130154]
[INFO] [planner_server-3]: process started with pid [130156]
[INFO] [behavior_server-4]: process started with pid [130158]
[INFO] [bt_navigator-5]: process started with pid [130160]
[INFO] [waypoint_follower-6]: process started with pid [130162]
[INFO] [velocity_smoother-7]: process started with pid [130164]
[INFO] [lifecycle_manager-8]: process started with pid [130166]
[INFO] [async_slam_toolbox_node-9]: process started with pid [130168]
[INFO] [rviz2-10]: process started with pid [130170]
[controller_server-1] [INFO] [1698205682.622834941] [controller_server]: 
[controller_server-1] 	controller_server lifecycle node launched. 
[controller_server-1] 	Waiting on external lifecycle transitions to activate
[controller_server-1] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[controller_server-1] [INFO] [1698205682.631374053] [controller_server]: Creating controller server
[smoother_server-2] [INFO] [1698205682.639817662] [smoother_server]: 
[smoother_server-2] 	smoother_server lifecycle node launched. 
[smoother_server-2] 	Waiting on external lifecycle transitions to activate
[smoother_server-2] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[planner_server-3] [INFO] [1698205682.640651565] [planner_server]: 
[planner_server-3] 	planner_server lifecycle node launched. 
[planner_server-3] 	Waiting on external lifecycle transitions to activate
[planner_server-3] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[waypoint_follower-6] [INFO] [1698205682.642814470] [waypoint_follower]: 
[waypoint_follower-6] 	waypoint_follower lifecycle node launched. 
[waypoint_follower-6] 	Waiting on external lifecycle transitions to activate
[waypoint_follower-6] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[smoother_server-2] [INFO] [1698205682.643457367] [smoother_server]: Creating smoother server
[waypoint_follower-6] [INFO] [1698205682.643679862] [waypoint_follower]: Creating
[planner_server-3] [INFO] [1698205682.646261396] [planner_server]: Creating
[async_slam_toolbox_node-9] [INFO] [1698205682.654695469] [slam_toolbox]: Node using stack size 40000000
[velocity_smoother-7] [INFO] [1698205682.657217368] [velocity_smoother]: 
[velocity_smoother-7] 	velocity_smoother lifecycle node launched. 
[velocity_smoother-7] 	Waiting on external lifecycle transitions to activate
[velocity_smoother-7] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[lifecycle_manager-8] [INFO] [1698205682.658470953] [lifecycle_manager_navigation]: Creating
[bt_navigator-5] [INFO] [1698205682.663962611] [bt_navigator]: 
[bt_navigator-5] 	bt_navigator lifecycle node launched. 
[bt_navigator-5] 	Waiting on external lifecycle transitions to activate
[bt_navigator-5] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[bt_navigator-5] [INFO] [1698205682.664112019] [bt_navigator]: Creating
[lifecycle_manager-8] [INFO] [1698205682.664110404] [lifecycle_manager_navigation]: Creating and initializing lifecycle service clients
[controller_server-1] [INFO] [1698205682.669198904] [local_costmap.local_costmap]: 
[controller_server-1] 	local_costmap lifecycle node launched. 
[controller_server-1] 	Waiting on external lifecycle transitions to activate
[controller_server-1] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[controller_server-1] [INFO] [1698205682.671159523] [local_costmap.local_costmap]: Creating Costmap
[behavior_server-4] [INFO] [1698205682.673458573] [behavior_server]: 
[behavior_server-4] 	behavior_server lifecycle node launched. 
[behavior_server-4] 	Waiting on external lifecycle transitions to activate
[behavior_server-4] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[planner_server-3] [INFO] [1698205682.676061416] [global_costmap.global_costmap]: 
[planner_server-3] 	global_costmap lifecycle node launched. 
[planner_server-3] 	Waiting on external lifecycle transitions to activate
[planner_server-3] 	See https://design.ros2.org/articles/node_lifecycle.html for more information.
[planner_server-3] [INFO] [1698205682.677061019] [global_costmap.global_costmap]: Creating Costmap
[lifecycle_manager-8] [INFO] [1698205682.695362709] [lifecycle_manager_navigation]: Starting managed nodes bringup...
[lifecycle_manager-8] [INFO] [1698205682.695413758] [lifecycle_manager_navigation]: Configuring controller_server
[controller_server-1] [INFO] [1698205682.695899315] [controller_server]: Configuring controller interface
[controller_server-1] [INFO] [1698205682.696122526] [controller_server]: getting goal checker plugins..
[controller_server-1] [INFO] [1698205682.696256396] [controller_server]: Controller frequency set to 20.0000Hz
[controller_server-1] [INFO] [1698205682.696294974] [local_costmap.local_costmap]: Configuring
[controller_server-1] [INFO] [1698205682.703317659] [local_costmap.local_costmap]: Using plugin "voxel2d_layer"
[controller_server-1] [INFO] [1698205682.707429878] [local_costmap.local_costmap]: Subscribed to Topics: scan base_scan
[controller_server-1] [INFO] [1698205682.714269509] [local_costmap.local_costmap]: Initialized plugin "voxel2d_layer"
[controller_server-1] [INFO] [1698205682.714302111] [local_costmap.local_costmap]: Using plugin "voxel3d_layer"
[controller_server-1] [INFO] [1698205682.714620565] [local_costmap.local_costmap]: Subscribed to Topics: realsense zed
[controller_server-1] [INFO] [1698205682.722620432] [local_costmap.local_costmap]: Initialized plugin "voxel3d_layer"
[controller_server-1] [INFO] [1698205682.722657452] [local_costmap.local_costmap]: Using plugin "inflation_layer"
[controller_server-1] [INFO] [1698205682.723853900] [local_costmap.local_costmap]: Initialized plugin "inflation_layer"
[async_slam_toolbox_node-9] [INFO] [1698205682.731968363] [slam_toolbox]: Using solver plugin solver_plugins::CeresSolver
[async_slam_toolbox_node-9] [INFO] [1698205682.732746594] [slam_toolbox]: CeresSolver: Using SCHUR_JACOBI preconditioner.
[controller_server-1] [INFO] [1698205682.736758531] [controller_server]: Created progress_checker : progress_checker of type nav2_controller::SimpleProgressChecker
[controller_server-1] [INFO] [1698205682.738205935] [controller_server]: Created goal checker : general_goal_checker of type nav2_controller::SimpleGoalChecker
[controller_server-1] [INFO] [1698205682.738721976] [controller_server]: Controller Server has general_goal_checker  goal checkers available.
[controller_server-1] [INFO] [1698205682.741377806] [controller_server]: Created controller : FollowPath of type dwb_core::DWBLocalPlanner
[controller_server-1] [INFO] [1698205682.742337931] [controller_server]: Setting transform_tolerance to 0.200000
[controller_server-1] [INFO] [1698205682.752080396] [controller_server]: Using critic "RotateToGoal" (dwb_critics::RotateToGoalCritic)
[controller_server-1] [INFO] [1698205682.752525462] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.752636438] [controller_server]: Using critic "Oscillation" (dwb_critics::OscillationCritic)
[controller_server-1] [INFO] [1698205682.752991105] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.753085357] [controller_server]: Using critic "BaseObstacle" (dwb_critics::BaseObstacleCritic)
[controller_server-1] [INFO] [1698205682.753210458] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.753286576] [controller_server]: Using critic "GoalAlign" (dwb_critics::GoalAlignCritic)
[controller_server-1] [INFO] [1698205682.753539666] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.753632190] [controller_server]: Using critic "PathAlign" (dwb_critics::PathAlignCritic)
[controller_server-1] [INFO] [1698205682.753845256] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.753928471] [controller_server]: Using critic "PathDist" (dwb_critics::PathDistCritic)
[controller_server-1] [INFO] [1698205682.754132672] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.754295445] [controller_server]: Using critic "GoalDist" (dwb_critics::GoalDistCritic)
[controller_server-1] [INFO] [1698205682.754583335] [controller_server]: Critic plugin initialized
[controller_server-1] [INFO] [1698205682.754607537] [controller_server]: Controller Server has FollowPath  controllers available.
[lifecycle_manager-8] [INFO] [1698205682.762649421] [lifecycle_manager_navigation]: Configuring smoother_server
[smoother_server-2] [INFO] [1698205682.763130767] [smoother_server]: Configuring smoother server
[smoother_server-2] [INFO] [1698205682.772957276] [smoother_server]: Created smoother : simple_smoother of type nav2_smoother::SimpleSmoother
[smoother_server-2] [INFO] [1698205682.774069542] [smoother_server]: Smoother Server has simple_smoother  smoothers available.
[lifecycle_manager-8] [INFO] [1698205682.779574229] [lifecycle_manager_navigation]: Configuring planner_server
[planner_server-3] [INFO] [1698205682.779742241] [planner_server]: Configuring
[planner_server-3] [INFO] [1698205682.779771159] [global_costmap.global_costmap]: Configuring
[planner_server-3] [INFO] [1698205682.787894939] [global_costmap.global_costmap]: Using plugin "static_layer"
[planner_server-3] [INFO] [1698205682.792005848] [global_costmap.global_costmap]: Subscribing to the map topic (/map) with transient local durability
[planner_server-3] [INFO] [1698205682.793353677] [global_costmap.global_costmap]: Initialized plugin "static_layer"
[planner_server-3] [INFO] [1698205682.793384918] [global_costmap.global_costmap]: Using plugin "voxel2d_layer"
[planner_server-3] [INFO] [1698205682.794360353] [global_costmap.global_costmap]: Subscribed to Topics: scan base_scan
[planner_server-3] [INFO] [1698205682.801631856] [global_costmap.global_costmap]: Initialized plugin "voxel2d_layer"
[planner_server-3] [INFO] [1698205682.801662877] [global_costmap.global_costmap]: Using plugin "voxel3d_layer"
[planner_server-3] [INFO] [1698205682.802340192] [global_costmap.global_costmap]: Subscribed to Topics: realsense zed
[planner_server-3] [INFO] [1698205682.808327832] [global_costmap.global_costmap]: Initialized plugin "voxel3d_layer"
[planner_server-3] [INFO] [1698205682.808357693] [global_costmap.global_costmap]: Using plugin "inflation_layer"
[planner_server-3] [INFO] [1698205682.809099450] [global_costmap.global_costmap]: Initialized plugin "inflation_layer"
[planner_server-3] [INFO] [1698205682.816769009] [planner_server]: Created global planner plugin GridBased of type nav2_navfn_planner/NavfnPlanner
[planner_server-3] [INFO] [1698205682.816807779] [planner_server]: Configuring plugin GridBased of type NavfnPlanner
[planner_server-3] [INFO] [1698205682.818109176] [planner_server]: Planner Server has GridBased  planners available.
[lifecycle_manager-8] [INFO] [1698205682.827744286] [lifecycle_manager_navigation]: Configuring behavior_server
[behavior_server-4] [INFO] [1698205682.827941307] [behavior_server]: Configuring
[behavior_server-4] [INFO] [1698205682.835011603] [behavior_server]: Creating behavior plugin spin of type nav2_behaviors/Spin
[behavior_server-4] [INFO] [1698205682.835781176] [behavior_server]: Configuring spin
[behavior_server-4] [INFO] [1698205682.840873912] [behavior_server]: Creating behavior plugin backup of type nav2_behaviors/BackUp
[behavior_server-4] [INFO] [1698205682.841504749] [behavior_server]: Configuring backup
[behavior_server-4] [INFO] [1698205682.844849978] [behavior_server]: Creating behavior plugin drive_on_heading of type nav2_behaviors/DriveOnHeading
[behavior_server-4] [INFO] [1698205682.845604984] [behavior_server]: Configuring drive_on_heading
[behavior_server-4] [INFO] [1698205682.851491109] [behavior_server]: Creating behavior plugin wait of type nav2_behaviors/Wait
[behavior_server-4] [INFO] [1698205682.852668305] [behavior_server]: Configuring wait
[lifecycle_manager-8] [INFO] [1698205682.856858134] [lifecycle_manager_navigation]: Configuring bt_navigator
[bt_navigator-5] [INFO] [1698205682.857040041] [bt_navigator]: Configuring
[lifecycle_manager-8] [INFO] [1698205682.909170341] [lifecycle_manager_navigation]: Configuring waypoint_follower
[waypoint_follower-6] [INFO] [1698205682.909362744] [waypoint_follower]: Configuring
[waypoint_follower-6] [INFO] [1698205682.918982548] [waypoint_follower]: Created waypoint_task_executor : wait_at_waypoint of type nav2_waypoint_follower::WaitAtWaypoint
[lifecycle_manager-8] [INFO] [1698205682.919660252] [lifecycle_manager_navigation]: Configuring velocity_smoother
[velocity_smoother-7] [INFO] [1698205682.919830202] [velocity_smoother]: Configuring velocity smoother
[lifecycle_manager-8] [INFO] [1698205682.924153197] [lifecycle_manager_navigation]: Activating controller_server
[controller_server-1] [INFO] [1698205682.924303540] [controller_server]: Activating
[controller_server-1] [INFO] [1698205682.924337468] [local_costmap.local_costmap]: Activating
[controller_server-1] [INFO] [1698205682.924353192] [local_costmap.local_costmap]: Checking transform
[controller_server-1] [INFO] [1698205682.924386416] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[rviz2-10] [INFO] [1698205683.405472643] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-10] [INFO] [1698205683.405605122] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[controller_server-1] [INFO] [1698205683.424469778] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[rviz2-10] [INFO] [1698205683.484452992] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-10] [INFO] [1698205683.803525300] [rviz2]: Stereo is NOT SUPPORTED
[controller_server-1] [INFO] [1698205683.924440216] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[controller_server-1] [INFO] [1698205684.424466815] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[controller_server-1] [INFO] [1698205684.924437893] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[controller_server-1] [INFO] [1698205685.424515478] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[controller_server-1] [INFO] [1698205685.924445579] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[controller_server-1] [INFO] [1698205686.424439967] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[controller_server-1] [INFO] [1698205686.924436990] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[async_slam_toolbox_node-9] [INFO] [1698205687.354056349] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205686.936 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205687.416637130] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.187 for reason 'discarding message because the queue is full'
[controller_server-1] [INFO] [1698205687.424443758] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[async_slam_toolbox_node-9] [INFO] [1698205687.597709015] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.189 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205687.676050251] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.335 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205687.824954343] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.480 for reason 'discarding message because the queue is full'
[controller_server-1] [INFO] [1698205687.924437525] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[async_slam_toolbox_node-9] [INFO] [1698205687.964476417] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.627 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.130855043] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.180 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.163297216] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.234 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205688.164651027] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.787 for reason 'the timestamp on the message is earlier than all the data in the transform cache'
[rviz2-10] [INFO] [1698205688.195623230] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.268 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.226996214] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.281 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.355377461] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.300 for reason 'discarding message because the queue is full'
[controller_server-1] [INFO] [1698205688.424436853] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[rviz2-10] [INFO] [1698205688.515808432] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.648 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.579299252] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.666 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.611601647] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.687 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205688.623768723] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205687.934 for reason 'the timestamp on the message is earlier than all the data in the transform cache'
[rviz2-10] [INFO] [1698205688.643517675] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.756 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.675539949] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.773 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205688.705879696] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.081 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205688.706020993] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.229 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.706845438] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.833 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.706922764] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205686.929 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.739520607] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.884 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.739622712] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205686.936 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.771525474] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.921 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.803534577] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.970 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.803615655] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.187 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205688.835254166] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205687.995 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205688.837794199] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.614 for reason 'discarding message because the queue is full'
[controller_server-1] [INFO] [1698205688.924440227] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[async_slam_toolbox_node-9] [INFO] [1698205689.037996584] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.618 for reason 'the timestamp on the message is earlier than all the data in the transform cache'
[rviz2-10] [INFO] [1698205689.091713894] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.189 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.123260031] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.067 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205689.154075290] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.686 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.155546653] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.094 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.155628634] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.335 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.187613196] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.133 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205689.201976227] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.834 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.218943823] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.152 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.219070895] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.480 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.251286141] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.164 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.283038099] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.300 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205689.361944623] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205688.978 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.379775334] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.627 for reason 'discarding message because the queue is full'
[controller_server-1] [INFO] [1698205689.424514121] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[async_slam_toolbox_node-9] [INFO] [1698205689.454459175] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205689.125 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.475567707] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.787 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205689.602552270] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205689.335 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.603630327] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205687.934 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.634813157] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.320 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205689.771989550] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205689.435 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.795685684] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.340 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.795758397] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205688.081 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.827077519] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.360 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.859393763] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.380 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.891507670] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.520 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205689.923507481] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.651 for reason 'discarding message because the queue is full'
[controller_server-1] [INFO] [1698205689.924474584] [local_costmap.local_costmap]: Timed out waiting for transform from base_link to odom to become available, tf error: Invalid frame ID "odom" passed to canTransform argument target_frame - frame does not exist
[async_slam_toolbox_node-9] [INFO] [1698205689.972199830] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205689.580 for reason 'the timestamp on the message is earlier than all the data in the transform cache'
[rviz2-10] [INFO] [1698205690.051142158] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205688.229 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205690.132676592] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205689.727 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205690.147588358] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.660 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205690.147703944] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205688.614 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205690.179668928] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.680 for reason 'discarding message because the queue is full'
[async_slam_toolbox_node-9] [INFO] [1698205690.207403748] [slam_toolbox]: Message Filter dropping message: frame 'laser' at time 1698205689.887 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205690.211054867] [rviz2]: Message Filter dropping message: frame 'odom' at time 1698205688.700 for reason 'discarding message because the queue is full'
[rviz2-10] [INFO] [1698205690.211175513] [rviz2]: Message Filter dropping message: frame 'laser' at time 1698205688.618 for reason 'discarding message because the queue is full'

brobot_slam_log.txt

[BUG] SLAM not working properly

Describe the bug
Internal map created isn't snapping to lidar scan as I manually drive around BroBot

To Reproduce
Steps to reproduce the behavior:

  1. Bringup BroBot on Pi
  2. on computer run ros2 launch brobot_navigation slam.launch.py rviz:=true
  3. Drive around the room a bit with teleop_twist_keyboard or similar
  4. See map be a blur and diverge from current lidar

Expected behavior
Expecting map to have clear boundaries and not be a mess. Expecting LIDAR to line up with map borders.

Screenshots

Just moving forward

image

Driving a bit

image

(Please add appropriate labels)

  • Linux: Ubuntu Server 22.04
  • ROS 2: Humble
  • Device: Raspberry Pi

Create GitHub Templates

Templates to standardize PRs and Issues would be helpful in keeping the development process organized

create wip readme

  • Replace the template readme with my own.
  • doesn't have to be exhaustive, just informative enough and in an updatable format

create URDF

  • create URDF model of catbot
  • get CAD from onshape

[Feature] Github Actions Caching

Is your feature request related to a problem? Please describe.
GitHub actions take a long time to run.

Describe the solution you'd like
I want to use caching like the CI actions from ROS_industrial do
Use github actions caching. https://github.com/actions/cache

# This config uses industrial_ci (https://github.com/ros-industrial/industrial_ci.git).
# For troubleshooting, see README (https://github.com/ros-industrial/industrial_ci/blob/master/README.rst)

name: CI Industrial

on: # this determines when this workflow is run
  push:
  #   branches: [ master, melodic-devel ] #  when master or melodic-devel branch is pushed to
  pull_request:
  #   branches: [ master ] # when there is a pull request against master
  # schedule: # uncomment to run periodically
  #  - cron: '0 4 * * *' # every day at 4 AM (UTC)
  workflow_dispatch: # allow manually starting this workflow

jobs:
  industrial_ci:
    name: ROS ${{ matrix.ROS_DISTRO }} (${{ matrix.ROS_REPO }})
    runs-on: ubuntu-latest
    strategy:
      # fail-fast: false # uncomment if failing jobs should not cancel the others immediately
      matrix: # matrix is the product of entries
        # TODO add rolling once ci working
        ROS_DISTRO: [humble]
        ROS_REPO: [main]
        # exclude: # specific configuration can be excludes
        #   - {ROS_DISTRO: melodic, ROS_REPO: testing}
        # include: # add additional configurations
        #   - {ROS_DISTRO: kinetic, ROS_REPO: testing}
    env:
      CCACHE_DIR: "${{ github.workspace }}/.ccache" # directory for ccache (and how we enable ccache in industrial_ci)
    steps:
      - uses: actions/checkout@v3 # clone target repository
      - uses: actions/cache@v2 # fetch/store the directory used by ccache before/after the ci run
        with:
          path: ${{ env.CCACHE_DIR }}
          # This configuration will always create a new ccache cache starting off from the previous one (if any).
          # In this simple version it will be shared between all builds of the same ROS_REPO and ROS_REPO
          # and might need some fine-tuning to match the use case
          key: ccache-${{ matrix.ROS_DISTRO }}-${{ matrix.ROS_REPO }}-${{github.run_id}}
          restore-keys: |
            ccache-${{ matrix.ROS_DISTRO }}-${{ matrix.ROS_REPO }}-
      - run: |
          sudo apt update
          sudo apt install git -y --no-install-recommends
          sudo apt install build-essential -y --no-install-recommends
      - uses: 'ros-industrial/industrial_ci@master' # run industrial_ci
        env: # either pass all entries explicitly
          ROS_DISTRO: ${{ matrix.ROS_DISTRO }}
          ROS_REPO: ${{ matrix.ROS_REPO }}
        # with: # or pass the full matrix as config
        #    config: ${{toJSON(matrix)}}

[Feature] CI Testing of Gazebo/RViz

Is your feature request related to a problem? Please describe.
It would be good to verify that changes do not break simulation.

Describe the solution you'd like

  • Gazebo is able to be run headlessly. If it throws errors launching a simulation, that is a good indication something is broken.
  • Run both using ros2_control and not, to isolate the issue

Describe alternatives you've considered
I haven't looked for existing implementations on GitHub yet

[BUG] EKF node fails to meet update rate

Describe the bug
Error message in terminal of robot computer informing that EKF note failed to meet update rate

To Reproduce
Steps to reproduce the behavior:

  1. Launch bringup on robot computer

Expected behavior
Not expecting to see warning

Screenshots
If applicable, add screenshots to help explain your problem.

atticus@rospi:~/workspace/brobot_ws  (linobrobot) 
$ ros2 launch brobot_bringup bringup.launch.py 
[INFO] [launch]: All log files can be found below /home/atticus/.ros/log/2023-10-24-23-32-42-958016-rospi-16050
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ekf_node-1]: process started with pid [16084]
[INFO] [micro_ros_agent-2]: process started with pid [16086]
[INFO] [joint_state_publisher-3]: process started with pid [16088]
[INFO] [robot_state_publisher-4]: process started with pid [16090]
[INFO] [rplidar_composition-5]: process started with pid [16098]
[INFO] [v4l2_camera_node-6]: process started with pid [16100]
[micro_ros_agent-2] [1698204768.096697] info     | TermiosAgentLinux.cpp | init                     | running...             | fd: 3
[micro_ros_agent-2] [1698204768.097803] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
[rplidar_composition-5] [INFO] [1698204768.350600807] [rplidar_composition]: RPLidar running on ROS2 package rplidar_ros. RPLIDAR SDK Version:2.0.0
[rplidar_composition-5] [INFO] [1698204768.514870195] [rplidar_composition]: RPLidar S/N: 86EDED93C0EA98C9A5E698F213334669
[rplidar_composition-5] [INFO] [1698204768.515126658] [rplidar_composition]: Firmware Ver: 1.29
[rplidar_composition-5] [INFO] [1698204768.515245770] [rplidar_composition]: Hardware Rev: 7
[micro_ros_agent-2] [1698204768.549884] info     | Root.cpp           | create_client            | create                 | client_key: 0x693D809C, session_id: 0x81
[micro_ros_agent-2] [1698204768.550094] info     | SessionManager.hpp | establish_session        | session established    | client_key: 0x693D809C, address: 0
[rplidar_composition-5] [INFO] [1698204768.568300770] [rplidar_composition]: RPLidar health status : 0
[rplidar_composition-5] [INFO] [1698204768.568565807] [rplidar_composition]: RPLidar health status : OK.
[rplidar_composition-5] [INFO] [1698204768.568678844] [rplidar_composition]: Start
[robot_state_publisher-4] [INFO] [1698204768.654930973] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-4] [INFO] [1698204768.656109214] [robot_state_publisher]: got segment base_link
[robot_state_publisher-4] [INFO] [1698204768.656293344] [robot_state_publisher]: got segment camera_link
[robot_state_publisher-4] [INFO] [1698204768.656389436] [robot_state_publisher]: got segment camera_link_optical
[robot_state_publisher-4] [INFO] [1698204768.656471306] [robot_state_publisher]: got segment front_left_wheel_link
[robot_state_publisher-4] [INFO] [1698204768.656549418] [robot_state_publisher]: got segment front_right_wheel_link
[robot_state_publisher-4] [INFO] [1698204768.656629825] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-4] [INFO] [1698204768.656707547] [robot_state_publisher]: got segment laser
[robot_state_publisher-4] [INFO] [1698204768.656783862] [robot_state_publisher]: got segment rear_left_wheel_link
[robot_state_publisher-4] [INFO] [1698204768.656860769] [robot_state_publisher]: got segment rear_right_wheel_link
[micro_ros_agent-2] [1698204768.917232] info     | ProxyClient.cpp    | create_participant       | participant created    | client_key: 0x693D809C, participant_id: 0x000(1)
[micro_ros_agent-2] [1698204768.946498] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x693D809C, topic_id: 0x000(2), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204768.958887] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x693D809C, publisher_id: 0x000(3), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.005345] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x693D809C, datawriter_id: 0x000(5), publisher_id: 0x000(3)
[micro_ros_agent-2] [1698204769.010932] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x693D809C, topic_id: 0x001(2), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.012467] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x693D809C, publisher_id: 0x001(3), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.049888] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x693D809C, datawriter_id: 0x001(5), publisher_id: 0x001(3)
[micro_ros_agent-2] [1698204769.052402] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x693D809C, topic_id: 0x002(2), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.054124] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x693D809C, publisher_id: 0x002(3), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.087083] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x693D809C, datawriter_id: 0x002(5), publisher_id: 0x002(3)
[micro_ros_agent-2] [1698204769.091627] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x693D809C, topic_id: 0x003(2), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.094700] info     | ProxyClient.cpp    | create_subscriber        | subscriber created     | client_key: 0x693D809C, subscriber_id: 0x000(4), participant_id: 0x000(1)
[micro_ros_agent-2] [1698204769.114198] info     | ProxyClient.cpp    | create_datareader        | datareader created     | client_key: 0x693D809C, datareader_id: 0x000(6), subscriber_id: 0x000(4)
[rplidar_composition-5] [INFO] [1698204769.293970991] [rplidar_composition]: current scan mode: Sensitivity, sample rate: 8 Khz, max_distance: 12.0 m, scan frequency:10.0 Hz, 
[v4l2_camera_node-6] [INFO] [1698204770.065763695] [v4l2_camera]: Driver: uvcvideo
[v4l2_camera_node-6] [INFO] [1698204770.066224806] [v4l2_camera]: Version: 393734
[v4l2_camera_node-6] [INFO] [1698204770.066303713] [v4l2_camera]: Device: HD Web Camera: HD Web Camera
[v4l2_camera_node-6] [INFO] [1698204770.066358343] [v4l2_camera]: Location: usb-0000:01:00.0-1.3
[v4l2_camera_node-6] [INFO] [1698204770.066406472] [v4l2_camera]: Capabilities:
[v4l2_camera_node-6] [INFO] [1698204770.066450991] [v4l2_camera]:   Read/write: NO
[v4l2_camera_node-6] [INFO] [1698204770.066494917] [v4l2_camera]:   Streaming: YES
[v4l2_camera_node-6] [INFO] [1698204770.066580658] [v4l2_camera]: Current pixel format: YUYV @ 640x480
[v4l2_camera_node-6] [INFO] [1698204770.104001861] [v4l2_camera]: Available pixel formats: 
[v4l2_camera_node-6] [INFO] [1698204770.104136917] [v4l2_camera]:   MJPG - Motion-JPEG
[v4l2_camera_node-6] [INFO] [1698204770.104189213] [v4l2_camera]:   YUYV - YUYV 4:2:2
[v4l2_camera_node-6] [INFO] [1698204770.104237157] [v4l2_camera]:   H264 - H.264
[v4l2_camera_node-6] [INFO] [1698204770.104280954] [v4l2_camera]: Available controls: 
[v4l2_camera_node-6] [INFO] [1698204770.104380139] [v4l2_camera]:   Brightness (1) = 128
[v4l2_camera_node-6] [INFO] [1698204770.104464824] [v4l2_camera]:   Contrast (1) = 128
[v4l2_camera_node-6] [INFO] [1698204770.104538602] [v4l2_camera]:   Saturation (1) = 128
[v4l2_camera_node-6] [INFO] [1698204770.109284861] [v4l2_camera]:   Hue (1) = 128
[v4l2_camera_node-6] [INFO] [1698204770.111430750] [v4l2_camera]:   White Balance, Automatic (2) = 1
[v4l2_camera_node-6] [INFO] [1698204770.156269620] [v4l2_camera]: Starting camera
[v4l2_camera_node-6] [WARN] [1698204770.659716972] [camera.v4l2_camera]: Image encoding not the same as requested output, performing possibly slow conversion: yuv422_yuy2 => rgb8
[v4l2_camera_node-6] [INFO] [1698204770.690945546] [camera.v4l2_camera]: using default calibration URL
[v4l2_camera_node-6] [INFO] [1698204770.695105676] [camera.v4l2_camera]: camera calibration URL: file:///home/atticus/.ros/camera_info/hd_web_camera:_hd_web_camera.yaml
[v4l2_camera_node-6] [ERROR] [1698204770.700434472] [camera_calibration_parsers]: Unable to open camera calibration file [/home/atticus/.ros/camera_info/hd_web_camera:_hd_web_camera.yaml]
[v4l2_camera_node-6] [WARN] [1698204770.705147694] [camera.v4l2_camera]: Camera calibration file /home/atticus/.ros/camera_info/hd_web_camera:_hd_web_camera.yaml not found
[joint_state_publisher-3] [INFO] [1698204772.308944508] [joint_state_publisher]: Waiting for robot_description to be published on the robot_description topic...
[ekf_node-1] Failed to meet update rate! Took 0.046242574000000001566seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.030351092999999999128seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.031709147999999999501seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.024375666000000000694seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.074208499999999996688seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.039180314000000000807seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.03983112899999999984seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.037464092999999996925seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.04930136999999999714seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.023771517999999998427seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.031028258999999999007seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.023331944000000000294seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.020260185seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.026968148000000000813seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.025230017999999999889seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.061565165999999997559seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.070135074000000005578seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.022240258999999998335seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.023192778000000000699seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.021348907999999999774seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.025176758999999999944seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.024650517999999999735seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.063731963000000002584seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.032079221999999997517seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.035149389000000003103seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.021454739999999999922seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.022017055000000000653seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.028622167000000000442seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.02105631499999999906seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.027064425999999999067seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.39939344399999998636seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.32330379599999997664seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.36240475900000002074seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.021504684999999999079seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.14077407399999999904seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.090429703000000000168seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.02164816699999999941seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.
[ekf_node-1] Failed to meet update rate! Took 0.037274408000000001928seconds. Try decreasing the rate, limiting sensor output frequency, or limiting the number of sensors.

(Please add appropriate labels)

  • Linux: Ubuntu 22.04
  • ROS 1: Dist
  • ROS 2: Humble
  • Device: Raspberry Pi 4b

Additional context
Add any other context about the problem here.

Implement Gazebo

Is your feature request related to a problem? Please describe.
Add the ability to launch the robot in Gazebo.

Describe the solution you'd like

  • Update joints to be accurate in catbot_macro.ros2_control.xacro or whatever is needed for Gazebo
  • test Gazebo
  • make launchfile

[Feature] ros2_control hardware front wheels

Is your feature request related to a problem? Please describe.
Control the motors through actual implementation of ros2_control on the hardware.

Describe the solution you'd like

  • Use Josh Newans' (Articulated Robotics) DiffDrive_Arduino hardware interface
  • Implement with Arduino Uno
  • Create bringup package
  • test with real hardware

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.