gazebo各种插件

文章详细介绍了Gazebo仿真环境中的一系列ROS(RobotOperatingSystem)插件,包括激光、碰撞、相机、控制、IMU等传感器,以及相关的实用工具和运动模型,展示了Gazebo在机器人模拟中的广泛应用。
摘要由CSDN通过智能技术生成

类别

libgazebo_ros_api_plugin.so:提供与Gazebo仿真环境进行通信的API接口。
libgazebo_ros_block_laser.so:模拟激光传感器的插件。
libgazebo_ros_bumper.so:模拟碰撞传感器的插件。
libgazebo_ros_camera.so:模拟相机传感器的插件。
libgazebo_ros_camera_utils.so:相机传感器的实用工具插件。
libgazebo_ros_control.so:提供与Gazebo仿真环境进行控制的插件。
libgazebo_ros_depth_camera.so:模拟深度相机传感器的插件。
libgazebo_ros_diff_drive.so:模拟差动驱动机器人的插件。
libgazebo_ros_elevator.so:模拟电梯的插件。
libgazebo_ros_f3d.so:模拟3D力传感器的插件。
libgazebo_ros_force.so:模拟力传感器的插件。
libgazebo_ros_ft_sensor.so:模拟力/力矩传感器的插件。
libgazebo_ros_gpu_laser.so:模拟GPU激光传感器的插件。
libgazebo_ros_hand_of_god.so:模拟上帝之手的插件,可以通过键盘控制物体。
libgazebo_ros_harness.so:模拟绳索和滑轮的插件。
libgazebo_ros_imu.so:模拟IMU传感器的插件。
libgazebo_ros_imu_sensor.so:IMU传感器的实用工具插件。
libgazebo_ros_joint_pose_trajectory.so:模拟关节位置轨迹的插件。
libgazebo_ros_joint_state_publisher.so:发布关节状态的插件。
libgazebo_ros_laser.so:模拟激光传感器的插件。
libgazebo_ros_multicamera.so:模拟多相机传感器的插件。
libgazebo_ros_openni_kinect.so:模拟OpenNI Kinect传感器的插件。
libgazebo_ros_p3d.so:模拟3D位置和速度传感器的插件。
libgazebo_ros_paths_plugin.so:模拟路径规划的插件。
libgazebo_ros_planar_move.so:模拟平面移动的插件。
libgazebo_ros_projector.so:模拟投影仪的插件。
libgazebo_ros_prosilica.so:模拟Prosilica相机的插件。
libgazebo_ros_range.so:模拟距离传感器的插件。
libgazebo_ros_skid_steer_drive.so:模拟滑移驱动机器人的插件。
libgazebo_ros_template.so:模板插件,用于创建自定义插件。
libgazebo_ros_tricycle_drive.so:模拟三轮车驱动机器人的插件。
libgazebo_ros_triggered_camera.so:模拟触发式相机传感器的插件。
libgazebo_ros_triggered_multicamera.so:模拟触发式多相机传感器的插件。
libgazebo_ros_utils.so:Gazebo实用工具插件。
libgazebo_ros_vacuum_gripper.so:模拟真空夹具的插件。
libgazebo_ros_video.so:模拟视频传感器的插件。
libgazebo_ros_wheel_slip.so:模拟轮胎滑移的插件。

转载于link

我可以为您提供一份用于 Gazebo 差速驱动插件的源码:#include <gazebo/common/Plugin.hh> #include <gazebo/physics/physics.hh>namespace gazebo { class DiffDrivePlugin : public ModelPlugin { public: void Load(physics::ModelPtr _parent, sdf::ElementPtr _sdf) { // 获取模型和世界指针 this->model = _parent; this->world = this->model->GetWorld(); // 读取插件参数 this->robotNamespace = ""; if (_sdf->HasElement("robotNamespace")) this->robotNamespace = _sdf->GetElement("robotNamespace")->Get<std::string>(); // 设置差速器参数 this->leftJointName = "left_wheel_joint"; if (_sdf->HasElement("left_joint")) this->leftJointName = _sdf->GetElement("left_joint")->Get<std::string>(); this->rightJointName = "right_wheel_joint"; if (_sdf->HasElement("right_joint")) this->rightJointName = _sdf->GetElement("right_joint")->Get<std::string>(); // 初始化差速器 this->leftJoint = this->model->GetJoint(this->leftJointName); this->rightJoint = this->model->GetJoint(this->rightJointName); // 初始化控制器 this->pid = common::PID(0.1, 0.01, 0.1); // 订阅广播状态 this->updateConnection = event::Events::ConnectWorldUpdateBegin( std::bind(&DiffDrivePlugin::OnUpdate, this)); } // 每一步更新 public: void OnUpdate() { // 计算差速器控制力 double leftSpeed = this->pid.Update(this->leftJoint->GetVelocity(0), this->leftSpeedTarget); double rightSpeed = this->pid.Update(this->rightJoint->GetVelocity(0), this->rightSpeedTarget); this->leftJoint->SetForce(0, leftSpeed); this->rightJoint->SetForce(0, rightSpeed); } // 读取模型指针 private: physics::ModelPtr model; // 读取世界指针 private: physics::WorldPtr world; // 读取命名空间 private: std::string robotNamespace; // 读取左右引擎的名字 private: std::string leftJointName; private: std::string rightJointName; // 读取左右引擎的指针 private: physics::JointPtr leftJoint; private: physics::JointPtr rightJoint; // 读取PID控制器 private: common::PID pid; // 读取左右引擎的目标速度 private: double leftSpeedTarget = 0; private: double rightSpeedTarget = 0; // 读取更新连接 private: event::ConnectionPtr updateConnection; }; // 注册插件 GZ_REGISTER_MODEL_PLUGIN(DiffDrivePlugin) }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里飞刀客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值