39#include <rclcpp/version.h>
41#include <rviz_common/display.hpp>
42#include <rviz_default_plugins/robot/robot.hpp>
43#include <rviz_common/properties/string_property.hpp>
44#include <rviz_common/properties/ros_topic_property.hpp>
49#include <rclcpp/rclcpp.hpp>
52#include <moveit_planning_scene_rviz_plugin_core_export.h>
68class RosTopicProperty;
83 void load(
const rviz_common::Config& config)
override;
84 void save(rviz_common::Config config)
const override;
87#if RCLCPP_VERSION_GTE(30, 0, 0)
88 using rviz_common::Display::update;
90 void update(std::chrono::nanoseconds wall_dt, std::chrono::nanoseconds ros_dt)
override;
93 void update(
float wall_dt,
float ros_dt)
override;
96 void reset()
override;
98 void setLinkColor(
const std::string& link_name,
const QColor& color);
105 void addBackgroundJob(
const std::function<
void()>& job,
const std::string& name);
122 const moveit::core::RobotModelConstPtr&
getRobotModel()
const;
137 void changedMoveGroupNS();
138 void changedRobotDescription();
139 void changedSceneName();
140 void changedSceneEnabled();
141 void changedSceneRobotVisualEnabled();
142 void changedSceneRobotCollisionEnabled();
143 void changedRobotSceneAlpha();
144 void changedSceneAlpha();
145 void changedSceneColor();
146 void changedPlanningSceneTopic();
147 void changedSceneDisplayTime();
148 void changedOctreeRenderMode();
149 void changedOctreeColorMode();
150 void setSceneName(
const QString& name);
181 void setLinkColor(rviz_default_plugins::robot::Robot* robot,
const std::string& link_name,
const QColor& color);
182 void unsetLinkColor(rviz_default_plugins::robot::Robot* robot,
const std::string& link_name);
183 void setGroupColor(rviz_default_plugins::robot::Robot* robot,
const std::string& group_name,
const QColor& color);
184 void unsetGroupColor(rviz_default_plugins::robot::Robot* robot,
const std::string& group_name);
194 virtual void updateInternal(std::chrono::nanoseconds wall_dt, std::chrono::nanoseconds ros_dt);
196#if RCLCPP_VERSION_GTE(30, 0, 0)
197 [[deprecated(
"Use updateInternal(std::chrono::nanoseconds, std::chrono::nanoseconds) instead")]]
virtual void
rviz_common::properties::Property * scene_category_
rviz_common::properties::EnumProperty * octree_coloring_property_
double current_scene_time_
planning_scene_monitor::LockedPlanningSceneRO getPlanningSceneRO() const
get read-only access to planning scene
rviz_common::properties::StringProperty * robot_description_property_
void unsetGroupColor(rviz_default_plugins::robot::Robot *robot, const std::string &group_name)
rviz_common::properties::BoolProperty * scene_robot_collision_enabled_property_
rclcpp::Node::SharedPtr node_
void fixedFrameChanged() override
rviz_common::properties::ColorProperty * attached_body_color_property_
void setLinkColor(const std::string &link_name, const QColor &color)
const std::string getMoveGroupNS() const
rviz_common::properties::EnumProperty * octree_render_property_
void onInitialize() override
void sceneMonitorReceivedUpdate(planning_scene_monitor::PlanningSceneMonitor::SceneUpdateType update_type)
planning_scene_monitor::LockedPlanningSceneRW getPlanningSceneRW()
get write access to planning scene
void renderPlanningScene()
void save(rviz_common::Config config) const override
virtual void clearRobotModel()
void waitForAllMainLoopJobs()
virtual void updateInternal(std::chrono::nanoseconds wall_dt, std::chrono::nanoseconds ros_dt)
PlanningSceneRenderPtr planning_scene_render_
void unsetLinkColor(const std::string &link_name)
void spawnBackgroundJob(const std::function< void()> &job)
std::deque< std::function< void()> > main_loop_jobs_
std::mutex main_loop_jobs_lock_
void onDisable() override
virtual void onRobotModelLoaded()
This is an event called by loadRobotModel() in the MainLoop; do not call directly.
rviz_common::properties::FloatProperty * scene_alpha_property_
bool planning_scene_needs_render_
void setGroupColor(rviz_default_plugins::robot::Robot *robot, const std::string &group_name, const QColor &color)
void calculateOffsetPosition()
Set the scene node's position, given the target frame and the planning frame.
void executeMainLoopJobs()
RobotStateVisualizationPtr planning_scene_robot_
virtual void onSceneMonitorReceivedUpdate(planning_scene_monitor::PlanningSceneMonitor::SceneUpdateType update_type)
void addMainLoopJob(const std::function< void()> &job)
queue the execution of this function for the next time the main update() loop gets called
virtual planning_scene_monitor::PlanningSceneMonitorPtr createPlanningSceneMonitor()
rviz_common::properties::FloatProperty * robot_alpha_property_
planning_scene_monitor::PlanningSceneMonitorPtr planning_scene_monitor_
const moveit::core::RobotModelConstPtr & getRobotModel() const
void addBackgroundJob(const std::function< void()> &job, const std::string &name)
rviz_common::properties::StringProperty * move_group_ns_property_
void queueRenderSceneGeometry()
rviz_common::properties::StringProperty * scene_name_property_
void update(float wall_dt, float ros_dt) override
PlanningSceneDisplay(bool listen_to_planning_scene=true, bool show_scene_robot=true)
rviz_common::properties::FloatProperty * scene_display_time_property_
virtual void onNewPlanningSceneState()
This is called upon successful retrieval of the (initial) planning scene state.
void clearJobs()
remove all queued jobs
rviz_common::properties::BoolProperty * scene_robot_visual_enabled_property_
rviz_common::properties::Property * robot_category_
void unsetAllColors(rviz_default_plugins::robot::Robot *robot)
rviz_common::properties::RosTopicProperty * planning_scene_topic_property_
Ogre::SceneNode * planning_scene_node_
displays planning scene with everything in it
rviz_common::properties::BoolProperty * scene_enabled_property_
bool waitForCurrentRobotState(const rclcpp::Time &t)
wait for robot state more recent than t
const planning_scene_monitor::PlanningSceneMonitorPtr & getPlanningSceneMonitor()
std::mutex robot_model_loading_lock_
rviz_common::properties::ColorProperty * scene_color_property_
bool robot_state_needs_render_
moveit::tools::BackgroundProcessing background_process_
std::condition_variable main_loop_jobs_empty_condition_
virtual void changedAttachedBodyColor()
void load(const rviz_common::Config &config) override
This is a convenience class for obtaining access to an instance of a locked PlanningScene.
This is a convenience class for obtaining access to an instance of a locked PlanningScene.