27#include <mujoco/mujoco.h>
29#include <hardware_interface/hardware_info.hpp>
30#include <rclcpp/node.hpp>
31#include <rclcpp/publisher.hpp>
32#include <rclcpp/rclcpp.hpp>
33#include <sensor_msgs/msg/laser_scan.hpp>
41 std::string frame_name;
45 double angle_increment;
51 std::vector<int> sensor_indexes;
54 std::string laserscan_topic;
55 sensor_msgs::msg::LaserScan laser_scan_msg;
56 rclcpp::Publisher<sensor_msgs::msg::LaserScan>::SharedPtr scan_pub;
74 explicit MujocoLidar(rclcpp::Node::SharedPtr node, std::recursive_mutex* sim_mutex, mjData* mujoco_data,
75 mjModel* mujoco_model,
double lidar_publish_rate);
105 rclcpp::Node::SharedPtr node_;
108 std::recursive_mutex* sim_mutex_{
nullptr };
114 std::vector<mjtNum> mj_lidar_data_;
117 double lidar_publish_rate_;
125 std::vector<LidarData> lidar_sensors_;
128 std::thread rendering_thread_;
129 std::atomic_bool publish_lidar_;
Wraps MuJoCo rangefinder sensors for publishing ROS 2 LaserScan messages.
Definition mujoco_lidar.hpp:63
void init()
Starts the lidar processing thread in the background.
Definition mujoco_lidar.cpp:212
void close()
Stops the lidar processing thread and closes the relevant objects, call before shutdown.
Definition mujoco_lidar.cpp:219
bool register_lidar(const hardware_interface::HardwareInfo &hardware_info)
Parses lidar information from the mujoco model.
Definition mujoco_lidar.cpp:124
This structure stores information about hardware defined in a robot's URDF.
Definition hardware_info.hpp:106
Definition mujoco_lidar.hpp:39