3 #include <rclcpp/rclcpp.hpp>
5 #include <mujoco/mjdata.h>
6 #include <mujoco/mjmodel.h>
7 #include <mujoco/mjtnum.h>
8 #include <mujoco/mjvisualize.h>
10 #include <mujoco_ros_utils/msg/external_force.hpp>
38 void reset(
const mjModel * m,
int plugin_id);
45 void compute(
const mjModel * m, mjData * d,
int plugin_id);
54 void visualize(
const mjModel * m, mjData * d,
const mjvOption * opt, mjvScene * scn,
int plugin_id);
64 ExternalForce(
const mjModel * m, mjData * d,
int body_id,
const std::string & topic_name, mjtNum vis_scale);
69 void callback(
const mujoco_ros_utils::msg::ExternalForce::SharedPtr msg);
73 rclcpp::Node::SharedPtr
nh_;
76 rclcpp::executors::SingleThreadedExecutor::SharedPtr
executor_;
79 rclcpp::Subscription<mujoco_ros_utils::msg::ExternalForce>::SharedPtr
sub_;
88 std::shared_ptr<mujoco_ros_utils::msg::ExternalForce>
msg_;
Plugin to apply external force.
std::shared_ptr< mujoco_ros_utils::msg::ExternalForce > msg_
External force message.
static ExternalForce * Create(const mjModel *m, mjData *d, int plugin_id)
Create an instance.
void visualize(const mjModel *m, mjData *d, const mjvOption *opt, mjvScene *scn, int plugin_id)
Visualize.
rclcpp::Subscription< mujoco_ros_utils::msg::ExternalForce >::SharedPtr sub_
ROS publisher for external force.
ExternalForce(ExternalForce &&)=default
Copy constructor.
mjtNum end_time_
End time to apply external force (-1 if no external force is applied)
void reset(const mjModel *m, int plugin_id)
Reset.
std::string topic_name_
Topic name of external force.
rclcpp::Node::SharedPtr nh_
ROS node handle.
static void RegisterPlugin()
Register plugin.
rclcpp::executors::SingleThreadedExecutor::SharedPtr executor_
ROS callback queue.
mjtNum vis_scale_
Arrow length scale (negative value for no visualization)
void callback(const mujoco_ros_utils::msg::ExternalForce::SharedPtr msg)
Constructor.
void compute(const mjModel *m, mjData *d, int plugin_id)
Compute.