{"id":21103085,"url":"https://github.com/robotnikautomation/imu_manager","last_synced_at":"2025-05-16T18:35:04.460Z","repository":{"id":141529727,"uuid":"158728237","full_name":"RobotnikAutomation/imu_manager","owner":"RobotnikAutomation","description":"Package that manages imu calibration and state","archived":false,"fork":false,"pushed_at":"2024-09-16T14:47:55.000Z","size":38,"stargazers_count":3,"open_issues_count":1,"forks_count":2,"subscribers_count":6,"default_branch":"kinetic-devel","last_synced_at":"2024-09-17T16:57:19.624Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RobotnikAutomation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-11-22T16:49:59.000Z","updated_at":"2024-01-26T08:35:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"0a1751c0-c066-4c99-b03f-ac7090075fc6","html_url":"https://github.com/RobotnikAutomation/imu_manager","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Fimu_manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Fimu_manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Fimu_manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RobotnikAutomation%2Fimu_manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RobotnikAutomation","download_url":"https://codeload.github.com/RobotnikAutomation/imu_manager/tar.gz/refs/heads/kinetic-devel","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225444585,"owners_count":17475354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T23:57:39.169Z","updated_at":"2024-11-19T23:57:39.801Z","avatar_url":"https://github.com/RobotnikAutomation.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# imu_manager\n\nPackage that manages imu calibration and its state.\n\nWill check current calibration state of the IMU and in case it needs a recalibration, and in that case will run the calibration method.\n\nTo check calibration and run calibration method robot must be stopped. In order to check that the robot is not moving, it can be set to read the odometry from it.\n\nCalibration can be triggered by:\n- a period has passed between calibrations.\n- under demand.\n\nIn case calibration is triggered, different behaviours can be configured:\n\n* it will only be completed if a drift is  measured in the angular velocity. Drift is measured along a configurable period of time.\n* the temperature changes\n\n## subscribed topics\n\n**imu/data** (sensor_msgs/Imu)\n\nImu data stream\n\n\n**imu/temperature** (sensor_msgs/Temperature)\n\nTemperature data stream\n\n**robotnik_base_control/odom** (nav_msgs/Odometry)\n\nRobot odometry (optional)\n\n**mavros/data** (mavros_msgs/State)\n\nMavros State\n\n## published topics\n\n**~/calibration_state** (std_msgs/String)\n\nCurrent state of calibration (*calibrated, must_check, checking, must_calibrate, calibrating, not_calibrated, unknown*)\n\n**~/state** (robotnik_msgs/State)\n\nCurrent state of the internal state machine\n\n**~/status** (imu_manager/ImuManagerStatus)\n\nCurrent status of the calibration along with robot \u0026 sensor information.\n\nExample:\n\n```\nheader:\n  seq: 10488\n  stamp:\n    secs: 666\n    nsecs: 590000000\n  frame_id: ''\ncalibration_status: \"calibrated\"\nnext_check_countdown: 49\ncalibration_duration: 0\nimu_temperature: 38.719997406\ncalibrated_imu_temperature: 37.6599998474\nrobot_moving: False\n\n```\n\n## required services\n**robotnik_base_control/enable** (robotnik_msgs::enable_disable)\n\nTo toggle robot operation before and after calibration\n\n**calibrate_imu_gyro** (std_srvs::Trigger)\n\nTo call gyroscopes calibration using Robotnik Localization Utils\n\n## advertised services\n\n**~/trigger_calibration** (std_srvs/Trigger)\n\nTriggers calibration under user demand\n\n## parameters\n\n**data_topic** (string, default: \"imu/data\")\n\nTo change input topic to imu/data\n\n**temperature_topic** (string, default: \"imu/temperature\")\n\nTo change input topic to imu/temperature\n\n**max_mean_error** (double, default: 0)\n\nMaximum error from 0 in measured yaw velocity to accept current calibration. 0 means always calibrate.\n\n**max_std_dev** (double, default: 0)\n\nMaximum standard deviation in measured yaw velocity to accept current calibration. 0 means always calibrate.\n\n**temperature_variation_for_calibration** (double, default: 1)\n\nMaximum temperature change between calibrations.\n\n**calibration_only_under_demand** (bool, default: false)\n\nDo not trigger automatic calibration.\n\n**period_between_checkings** (double, default: 25)\n\nPeriod between calibration checkings, in case automatic calibration is enabled.\n\n**period_of_data_gathering** (double, default: 5)\n\nPeriod while the robot will gather data to check current calibration.\n\n**duration_of_calibration** (double, default: 40)\n\nDuration of calibration process. In case calibration method is not blocking (as in MAVROS/Pixhawk).\n\n**calibration_by_temperature** (bool, default: true)\n\nIt allows the calibration by temperature variation.\n\n**calibration_by_angular_velocity_deviation** (bool, default: false)\n\nIt allows the calibration if a drift is detected.\n\n**calibration_odom_constraint** (bool, default: true)\n\nIt adds a constraint in the calibration process, taking into consideration the current speed of the robot. In case is moving, any calibration process is cancelled.\n\n**odom_topic** (string, default: robotnik_base_control/odom)\n\nTopic to get the robot odometry\n\n**odom_linear_hysteresis** (double, default: 0.001)\n\nHysteresis for the linear velocity\n\n**odom_angular_hysteresis** (double, default: 0.001)\n\nHysteresis for the angular velocity\n\n**period_of_robot_without_moving** (double, default: 5.0)\n\nPeriod to consider that the robot is not moving after it has really stopped\n\n## TODO\n\n- Add interfaces for different IMUS.\n- Move custom msgs into imu_manager_msgs?\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotnikautomation%2Fimu_manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frobotnikautomation%2Fimu_manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frobotnikautomation%2Fimu_manager/lists"}