Failed to load plugin libgazebo_ros_gpu_laser.so: libgazebo_ros_gpu_laser.so: cannot open shared object file: No such file or directory
-
我的系统是ubuntu22.04 ros2 humble
当我在运行项目时,终端输出以下问题:[Err] [Plugin.hh:212] Failed to load plugin libgazebo_ros_force_system.so --ros-args -r gazebo:__ns:=/gazebo: libgazebo_ros_force_system.so --ros-args -r gazebo:__ns:=/gazebo: cannot open shared object file: No such file or directory
和
[Err] [Plugin.hh:212] Failed to load plugin libgazebo_ros_gpu_laser.so: libgazebo_ros_gpu_laser.so: cannot open shared object file: No such file or directory
通过上网查找资料,我运行以下指令:
sudo apt-get install ros-humble-gazebo-ros-force-system sudo apt-get install ros-humble-gazebo-ros-gpu-laser
发现无法定位相关的包,而且还有一点很奇怪,能够正常在gazebo中加载出模型,也能够正常拖动,但是鼠标一旦点击gazebo左边明细栏的model中机器人的模型,gazebo就会崩溃,需要强制退出,请问这两个问题应该如何解决呢?如果您能够提供答案,万分感激
-
@yudonghou123 gazebo崩溃的终端有没有提示,是uuv的项目吗(如果是,我之前遇到过,是模型碰撞有些问题)
-
@小鱼 您好,是UUV项目,当gazebo出现崩溃提示时,终端并没有输出任何提示,下面是在gazebo出现强制退出提示框时,运行gazebo环境时的终端输出:
[INFO] [launch]: All log files can be found below /home/user2/.ros/log/2023-01-03-09-33-56-166184-user2-31472 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [plankton_global_sim_time-1]: process started with pid [31485] [INFO] [gzserver-2]: process started with pid [31487] [INFO] [gzclient-3]: process started with pid [31489] [INFO] [static_transform_publisher-4]: process started with pid [31491] [INFO] [publish_world_models.py-5]: process started with pid [31493] [static_transform_publisher-4] [WARN] [1672709636.802938475] []: Old-style arguments are deprecated; see --help for new-style arguments [static_transform_publisher-4] [INFO] [1672709636.810684886] [world_ned_frame_publisher]: Spinning until stopped - publishing transform [static_transform_publisher-4] translation: ('0.000000', '0.000000', '0.000000') [static_transform_publisher-4] rotation: ('0.707107', '0.707107', '0.000000', '0.000000') [static_transform_publisher-4] from 'world' to 'world_ned' [gzclient-3] WARNING: CPU random generator seem to be failing, disabling hardware random number generation [gzclient-3] WARNING: RDRND generated: 0xffffffff 0xffffffff 0xffffffff 0xffffffff [gzclient-3] Gazebo multi-robot simulator, version 11.10.2 [gzclient-3] Copyright (C) 2012 Open Source Robotics Foundation. [gzclient-3] Released under the Apache 2 License. [gzclient-3] http://gazebosim.org [gzclient-3] [gzserver-2] Gazebo multi-robot simulator, version 11.10.2 [gzserver-2] Copyright (C) 2012 Open Source Robotics Foundation. [gzserver-2] Released under the Apache 2 License. [gzserver-2] http://gazebosim.org [gzserver-2] [publish_world_models.py-5] [INFO] [1672709637.277702701] [publish_world_models]: publish_world_models: start publishing vehicle footprints to RViz [gzserver-2] [Msg] Waiting for master. [gzserver-2] [Msg] Connected to gazebo master @ http://127.0.0.1:11345 [gzserver-2] [Msg] Publicized address: 172.16.24.224 [gzserver-2] Warning [parser.cc:723] Can not find the XML attribute 'version' in sdf XML tag for model: NED frame. Please specify the SDF protocol supported in the model configuration file. The first sdf tag in the config file will be used [gzserver-2] [INFO] [1672709638.500273424] [gazebo.gazebo_ros]: Publishing states of gazebo models at [/gazebo/model_states] [gzserver-2] [INFO] [1672709638.500737383] [gazebo.gazebo_ros]: Publishing states of gazebo links at [/gazebo/link_states] [publish_world_models.py-5] [INFO] [1672709638.584478737] [publish_world_models]: [publish_world_models.py-5] New model being published: heightmap [publish_world_models.py-5] Position: [0.0, 0.0, -95.0] [publish_world_models.py-5] Orientation: [0.0, 0.0, 0.0, 1.0] [publish_world_models.py-5] Scale: [1.0, 1.0, 1.0] [publish_world_models.py-5] [INFO] [1672709638.584724503] [publish_world_models]: [publish_world_models.py-5] New model being published: seafloor [publish_world_models.py-5] Position: [0.0, 0.0, -100.0] [publish_world_models.py-5] Orientation: [0.0, 0.0, 0.0, 1.0] [publish_world_models.py-5] Scale: [1.0, 1.0, 1.0] [publish_world_models.py-5] [INFO] [1672709638.584942054] [publish_world_models]: [publish_world_models.py-5] New model being published: north [publish_world_models.py-5] Position: [1000.0, 0.0, -50.0] [publish_world_models.py-5] Orientation: [0.0, 0.0, 0.0, 1.0] [publish_world_models.py-5] Scale: [1.0, 1.0, 1.0] [publish_world_models.py-5] [INFO] [1672709638.585154456] [publish_world_models]: [publish_world_models.py-5] New model being published: south [publish_world_models.py-5] Position: [-1000.0, 0.0, -50.0] [publish_world_models.py-5] Orientation: [0.0, 0.0, 0.0, 1.0] [publish_world_models.py-5] Scale: [1.0, 1.0, 1.0] [publish_world_models.py-5] [INFO] [1672709638.585369553] [publish_world_models]: [publish_world_models.py-5] New model being published: west [publish_world_models.py-5] Position: [0.0, -1000.0, -50.0] [publish_world_models.py-5] Orientation: [0.0, 0.0, 0.0, 1.0] [publish_world_models.py-5] Scale: [1.0, 1.0, 1.0] [publish_world_models.py-5] [INFO] [1672709638.585596042] [publish_world_models]: [publish_world_models.py-5] New model being published: east [publish_world_models.py-5] Position: [0.0, 1000.0, -50.0] [publish_world_models.py-5] Orientation: [0.0, 0.0, 0.0, 1.0] [publish_world_models.py-5] Scale: [1.0, 1.0, 1.0] [gzclient-3] [Msg] Waiting for master. [gzclient-3] [Msg] Connected to gazebo master @ http://127.0.0.1:11345 [gzclient-3] [Msg] Publicized address: 172.16.24.224 [gzclient-3] [Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call [gzserver-2] [Msg] Loading world file [/home/user2/auv_ws/install/uuv_gazebo_worlds/share/uuv_gazebo_worlds/worlds/ocean_waves.world] [gzserver-2] [Msg] Loading underwater world... [gzserver-2] [Msg] Current velocity [m/s] Gauss-Markov process model: [gzserver-2] [Msg] Mean = 0 [gzserver-2] Min. Limit = 0 [gzserver-2] Max. Limit = 5 [gzserver-2] Mu = 0 [gzserver-2] Noise Amp. = 0 [gzserver-2] [Msg] Current velocity horizontal angle [rad] Gauss-Markov process model: [gzserver-2] [Msg] Mean = 0 [gzserver-2] Min. Limit = -3.14159 [gzserver-2] Max. Limit = 3.14159 [gzserver-2] Mu = 0 [gzserver-2] Noise Amp. = 0 [gzserver-2] [Msg] Current velocity horizontal angle [rad] Gauss-Markov process model: [gzserver-2] [Msg] Mean = 0 [gzserver-2] Min. Limit = -3.14159 [gzserver-2] Max. Limit = 3.14159 [gzserver-2] Mu = 0 [gzserver-2] Noise Amp. = 0 [gzserver-2] [Msg] Current velocity topic name: hydrodynamics/current_velocity [gzserver-2] [Msg] Underwater current plugin loaded! [gzserver-2] WARNING: Current velocity calculated in the ENU frame [gzserver-2] [Msg] [UnderwaterCurrentROSPlugin] Node created with name: underwater_current_plugin with namespace: /hydrodynamics [gzserver-2] [Msg] [SphericalCoordinatesROSInterfacePlugin] Node created with name: sc_interface with namespace: / [gzserver-2] [Msg] Spherical coordinates reference= [gzserver-2] - Latitude [degrees]=56.719 [gzserver-2] - Longitude [degrees]=3.51562 [gzserver-2] - Altitude [m]=0 [gzserver-2] [Wrn] [Event.cc:61] Warning: Deleting a connection right after creation. Make sure to save the ConnectionPtr from a Connect call [gzserver-2] [INFO] [1672709644.635819479] [camera_controller]: Publishing camera info to [/eca_a9/camera/camera_info] [gzserver-2] [Msg] GPSROSPlugin - Loading base sensor plugin [gzserver-2] [Msg] [eca_a9_gazebo_gps_ros_plugin] Node created [gzserver-2] - with name: eca_a9_gazebo_gps_ros_plugin [gzserver-2] - with ns: /eca_a9 [gzserver-2] [Msg] GPSROSPlugin - Converting GPS sensor pointer [gzserver-2] [Msg] GPSROSPlugin - Initialize sensor topic publisher [gzserver-2] [Err] [Plugin.hh:212] Failed to load plugin libgazebo_ros_gpu_laser.so: libgazebo_ros_gpu_laser.so: cannot open shared object file: No such file or directory [gzserver-2] [Err] [Plugin.hh:212] Failed to load plugin libgazebo_ros_gpu_laser.so: libgazebo_ros_gpu_laser.so: cannot open shared object file: No such file or directory [gzserver-2] Registered HydrodynamicModel type fossen [gzserver-2] Registered HydrodynamicModel type sphere [gzserver-2] Registered HydrodynamicModel type cylinder [gzserver-2] Registered HydrodynamicModel type spheroid [gzserver-2] Registered HydrodynamicModel type box [gzserver-2] [Msg] [UnderwaterObjectROSPlugin]: Node created. Name: eca_a9_uuv_plugin, namespace: / [gzserver-2] [Msg] Subscribing to current velocity topic: hydrodynamics/current_velocity [gzserver-2] [Msg] Name of the BASE_LINK: eca_a9/base_link [gzserver-2] [Msg] HMFossen: Using linear damping NULL [gzserver-2] [Msg] HMFossen: Using quad damping NULL [gzserver-2] eca_a9::eca_a9/base_link::added_mass [gzserver-2] 4 0 0 0 0 0 [gzserver-2] 0 95 0 0 0 0 [gzserver-2] 0 0 75 0 0 0 [gzserver-2] 0 0 0 0.4 0 0 [gzserver-2] 0 0 0 0 27 0 [gzserver-2] 0 0 0 0 0 32 [gzserver-2] eca_a9::eca_a9/base_link::scaling_added_mass [gzserver-2] eca_a9::eca_a9/base_link::offset_added_mass [gzserver-2] eca_a9::eca_a9/base_link::linear_damping [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] eca_a9::eca_a9/base_link::linear_damping_forward_speed [gzserver-2] -8 0 0 0 0 0 [gzserver-2] 0 -162 0 0 0 150 [gzserver-2] 0 0 -108 0 -100 0 [gzserver-2] 0 0 0 -13 0 0 [gzserver-2] 0 0 37 0 -20 0 [gzserver-2] 0 -34 0 0 0 -32 [gzserver-2] eca_a9::eca_a9/base_link::quadratic_damping [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] 0 0 0 0 0 0 [gzserver-2] eca_a9::eca_a9/base_link::scaling_damping [gzserver-2] eca_a9::eca_a9/base_link::offset_linear_damping [gzserver-2] eca_a9::eca_a9/base_link::offset_lin_forward_speed_damping [gzserver-2] eca_a9::eca_a9/base_link::offset_nonlin_damping [gzserver-2] eca_a9::eca_a9/base_link::volume [gzserver-2] 0.0679999 m^3 [gzserver-2] eca_a9::eca_a9/base_link::scaling_volume [gzserver-2] Registered ThrusterDynamics type ZeroOrder [gzserver-2] Registered ThrusterDynamics type FirstOrder [gzserver-2] Registered ThrusterDynamics type Yoerger [gzserver-2] Registered ThrusterDynamics type Bessa [gzserver-2] Registered LiftDrag type Quadratic [gzserver-2] Registered LiftDrag type TwoLines [gzserver-2] [INFO] [1672709645.197180352] [eca_a9_fin0_model]: [FinROSPlugin] Namespace: [gzserver-2] [INFO] [1672709645.214025420] [eca_a9_fin1_model]: [FinROSPlugin] Namespace: [gzserver-2] [INFO] [1672709645.220164371] [eca_a9_fin2_model]: [FinROSPlugin] Namespace: [gzserver-2] [INFO] [1672709645.225986638] [eca_a9_fin3_model]: [FinROSPlugin] Namespace: [gzserver-2] [Msg] Subscribing to current velocity topic: hydrodynamics/current_velocity [gzserver-2] [Msg] Fin #0 initialized [gzserver-2] - Link: eca_a9/fin0 [gzserver-2] - Robot model: eca_a9 [gzserver-2] - Input command topic: /eca_a9/fins/id_0/input [gzserver-2] - Output topic: /eca_a9/fins/id_0/output [gzserver-2] [Msg] Subscribing to current velocity topic: hydrodynamics/current_velocity [gzserver-2] [Msg] Fin #1 initialized [gzserver-2] - Link: eca_a9/fin1 [gzserver-2] - Robot model: eca_a9 [gzserver-2] - Input command topic: /eca_a9/fins/id_1/input [gzserver-2] - Output topic: /eca_a9/fins/id_1/output [gzserver-2] [Msg] Subscribing to current velocity topic: hydrodynamics/current_velocity [gzserver-2] [Msg] Fin #2 initialized [gzserver-2] - Link: eca_a9/fin2 [gzserver-2] - Robot model: eca_a9 [gzserver-2] - Input command topic: /eca_a9/fins/id_2/input [gzserver-2] - Output topic: /eca_a9/fins/id_2/output [gzserver-2] [Msg] Subscribing to current velocity topic: hydrodynamics/current_velocity [gzserver-2] [Msg] Fin #3 initialized [gzserver-2] - Link: eca_a9/fin3 [gzserver-2] - Robot model: eca_a9 [gzserver-2] - Input command topic: /eca_a9/fins/id_3/input [gzserver-2] - Output topic: /eca_a9/fins/id_3/output [gzserver-2] Registered ConversionFunction type Basic [gzserver-2] Registered ConversionFunction type Bessa [gzserver-2] Registered ConversionFunction type LinearInterp [gzserver-2] [WARN] [1672709645.332107307] [tf2_buffer]: Detected time source change. Clearing TF buffer. [gzserver-2] [Msg] ConversionFunctionBasic::Create conversion function [gzserver-2] - rotorConstant: 4.9e-05 [gzserver-2] [Msg] [ThrusterROSPlugin] Node created with name: eca_a9_0_thruster_model, with ns: / [gzserver-2] [Msg] Thruster #0 initialized [gzserver-2] - Link: eca_a9/thruster_0 [gzserver-2] - Robot model: eca_a9 [gzserver-2] - Input command topic: /eca_a9/thrusters/id_0/input [gzserver-2] - Thrust output topic: /eca_a9/thrusters/id_0/thrust [gzserver-2] [Msg] ROS Battery Plugin for link <eca_a9/battery_link> initialized [gzserver-2] - Initial charge [Ah]=1.1665 [gzserver-2] - Update rate [Hz]=2 [gzserver-2] [Msg] [pose_3d_plugin] Node created [gzserver-2] - with name: pose_3d_plugin [gzserver-2] - with ns: /eca_a9 [gzserver-2] [Msg] Static reference frame=world_ned [gzserver-2] [Msg] [libuuv_gazebo_dvl_plugin] Node created [gzserver-2] - with name: libuuv_gazebo_dvl_plugin [gzserver-2] - with ns: /eca_a9 [gzserver-2] [Msg] Static reference frame=world [gzserver-2] [Msg] CustomBatteryConsumerROSPlugin::Device <eca_a9_dvl_battery_consumer> added as battery consumer for the battery <eca_a9/battery_link> [gzserver-2] - ID=0 [gzserver-2] - Power load [W]=25 [gzserver-2] [Msg] CustomBatteryConsumerROSPlugin::Device <eca_a9_sonarleft_battery_consumer> added as battery consumer for the battery <eca_a9/battery_link> [gzserver-2] - ID=1 [gzserver-2] - Power load [W]=25 [gzserver-2] [Msg] CustomBatteryConsumerROSPlugin::Device <eca_a9_sonarright_battery_consumer> added as battery consumer for the battery <eca_a9/battery_link> [gzserver-2] - ID=2 [gzserver-2] - Power load [W]=25 [gzserver-2] [Msg] [libuuv_gazebo_subseapressure_plugin] Node created [gzserver-2] - with name: libuuv_gazebo_subseapressure_plugin [gzserver-2] - with ns: /eca_a9 [gzserver-2] [Msg] CustomBatteryConsumerROSPlugin::Device <eca_a9_pressure_battery_consumer> added as battery consumer for the battery <eca_a9/battery_link> [gzserver-2] - ID=3 [gzserver-2] - Power load [W]=5 [gzserver-2] [Msg] [libuuv_gazebo_imu_plugin] Node created [gzserver-2] - with name: libuuv_gazebo_imu_plugin [gzserver-2] - with ns: /eca_a9 [gzserver-2] [Msg] Static reference frame=world [gzserver-2] gzserver: /home/user2/auv_ws/src/Plankton-master/uuv_gazebo_plugins/uuv_gazebo_ros_plugins/src/CustomBatteryConsumerROSPlugin.cpp:62: virtual void gazebo::CustomBatteryConsumerROSPlugin::Load(gazebo::physics::ModelPtr, sdf::v9::ElementPtr): Assertion `(this->battery)&&("Battery was NULL")' failed. [ERROR] [gzserver-2]: process has died [pid 31487, exit code -6, cmd 'gzserver worlds/ocean_waves.world --verbose -slibgazebo_ros_init.so -slibgazebo_ros_factory.so -slibgazebo_ros_force_system.so']. [gzserver-2] gzclient-3] [Wrn] [Publisher.cc:135] Queue limit reached for topic /gazebo/oceans_waves/user_camera/pose, deleting message. This warning is printed only once.
运行机器人模型的终端输出没有任何提示,您看看,若能解决,非常感谢,也谢谢您之前的解答,您身体刚阳康,也不要过多劳累,注意休息
-
@yudonghou123 在 Failed to load plugin libgazebo_ros_gpu_laser.so: libgazebo_ros_gpu_laser.so: cannot open shared object file: No such file or directory 中说:
Battery was NULL
可以搜一搜代码中这句话,看看是个什么情况
-
@小鱼 非常感谢您的解答,我查了一下,发现在他的uuv_gazebo_ros_plugins/src/CustomBatteryConsumerROSPlugin.cpp中关于其是这么描述的:
GZ_ASSERT(_sdf->HasElement("battery_name"), "Battery name is missing"); this->batteryName = _sdf->Get<std::string>("battery_name"); this->battery = link->Battery(this->batteryName); GZ_ASSERT(this->battery, "Battery was NULL");
其完整程序如下:
// Copyright (c) 2020 The Plankton Authors. // All rights reserved. // // This source code is derived from UUV Simulator // (https://github.com/uuvsimulator/uuv_simulator) // Copyright (c) 2016-2019 The UUV Simulator Authors // licensed under the Apache license, Version 2.0 // cf. 3rd-party-licenses.txt file in the root directory of this source tree. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #include <uuv_gazebo_ros_plugins/CustomBatteryConsumerROSPlugin.h> namespace gazebo { ///////////////////////////////////////////////// CustomBatteryConsumerROSPlugin::CustomBatteryConsumerROSPlugin() { this->isDeviceOn = true; } ///////////////////////////////////////////////// CustomBatteryConsumerROSPlugin::~CustomBatteryConsumerROSPlugin() { } ///////////////////////////////////////////////// void CustomBatteryConsumerROSPlugin::Load(physics::ModelPtr _parent, sdf::ElementPtr _sdf) { if (!rclcpp::ok()) { gzerr << "Not loading plugin since ROS has not been " << "properly initialized. Try starting gazebo with ros plugin:\n" << " gazebo -s libgazebo_ros_api_plugin.so\n"; return; } //Create the ROS node with the plugin's name //TODO Check uniqueness of the node myRosNode = gazebo_ros::Node::CreateWithArgs(_sdf->Get<std::string>("name")); //gazebo_ros::Node::Get(_sdf); // new ros::NodeHandle("")); GZ_ASSERT(_sdf->HasElement("link_name"), "Battery link name (link_name) is missing"); this->linkName = _sdf->Get<std::string>("link_name"); physics::LinkPtr link = _parent->GetLink(this->linkName); GZ_ASSERT(link, "Consumer plugin: battery link was NULL"); GZ_ASSERT(_sdf->HasElement("battery_name"), "Battery name is missing"); this->batteryName = _sdf->Get<std::string>("battery_name"); this->battery = link->Battery(this->batteryName); GZ_ASSERT(this->battery, "Battery was NULL"); GZ_ASSERT(_sdf->HasElement("power_load"), "Power load is missing"); this->powerLoad = _sdf->Get<double>("power_load"); GZ_ASSERT(this->powerLoad > 0, "Power load must be greater than zero"); // Adding consumer this->consumerID = this->battery->AddConsumer(); if (_sdf->HasElement("topic_device_state")) { std::string topicName = _sdf->Get<std::string>("topic_device_state"); if (!topicName.empty()) myDeviceStateSub = myRosNode->create_subscription<std_msgs::msg::Bool>( topicName, 1, std::bind(&CustomBatteryConsumerROSPlugin::UpdateDeviceState, this, std::placeholders::_1)); } else { // In the case the device is always on, then set the power load only once this->UpdatePowerLoad(this->powerLoad); } gzmsg << "CustomBatteryConsumerROSPlugin::Device <" << _sdf->Get<std::string>("name") << "> added as battery consumer for the battery <" << this->linkName << ">" << std::endl << "\t- ID=" << this->consumerID << std::endl << "\t- Power load [W]=" << this->powerLoad << std::endl; } ///////////////////////////////////////////////// void CustomBatteryConsumerROSPlugin::UpdateDeviceState( const std_msgs::msg::Bool::SharedPtr _msg) { this->isDeviceOn = _msg->data; if (this->isDeviceOn) this->UpdatePowerLoad(this->powerLoad); else this->UpdatePowerLoad(0.0); } ///////////////////////////////////////////////// void CustomBatteryConsumerROSPlugin::UpdatePowerLoad(double _powerLoad) { if (!this->battery->SetPowerLoad(this->consumerID, _powerLoad)) gzerr << "Error setting the consumer power load" << std::endl; } GZ_REGISTER_MODEL_PLUGIN(CustomBatteryConsumerROSPlugin) }
下面是机器人urdf文件关于这个battery的内容,还是命名空间的问题吗?
<link name="eca_a9/battery_link"> <inertial> <inertia ixx="0.00001" ixy="0.0" ixz="0.0" iyy="0.00001" iyz="0.0" izz="0.00001"/> <mass value="0.001"/> <origin rpy="0 0 0" xyz="0 0 0"/> </inertial> </link> <joint name="eca_a9/battery_joint" type="revolute"> <origin rpy="0 0 0" xyz="0 0 0"/> <parent link="eca_a9/base_link"/> <child link="eca_a9/battery_link"/> <axis xyz="1 0 0"/> <limit effort="0" lower="0" upper="0" velocity="0"/> </joint> <gazebo reference="eca_a9/battery_link"> <battery name="eca_a9/battery"> <voltage>4.2</voltage> </battery> </gazebo> <gazebo> <plugin filename="liblinear_battery_ros_plugin.so" name="eca_a9_linear_battery_ros_plugin"> <ros> <namespace>eca_a9</namespace> </ros> <!-- <namespace>${namespace}</namespace> --> <link_name>eca_a9/battery_link</link_name> <battery_name>eca_a9/battery</battery_name> <open_circuit_voltage_constant_coef>3.7</open_circuit_voltage_constant_coef> <open_circuit_voltage_linear_coef>-3.1424</open_circuit_voltage_linear_coef> <initial_charge>1.1665</initial_charge> <capacity>0.5</capacity> <resistance>0.002</resistance> <smooth_current_tau>1.9499</smooth_current_tau> <update_rate>2.0</update_rate> </plugin> </gazebo>
-
-
此回复已被删除! -
@yudonghou123
其参数的launch文件为:<launch> <arg name="debug" default="0"/> <arg name="x" default="0"/> <arg name="y" default="0"/> <arg name="z" default="-20"/> <arg name="roll" default="0.0"/> <arg name="pitch" default="0.0"/> <arg name="yaw" default="0.0"/> <arg name="use_sim_time" default="true"/> <arg name="use_geodetic" default="false"/> <arg name="latitude" default="0"/> <arg name="longitude" default="0"/> <arg name="depth" default="0"/> <arg name="mode" default="default"/> <arg name="namespace" default="eca_a9"/> <arg name="latitude_ref" default="0"/> <arg name="longitude_ref" default="0"/> <arg name="altitude_ref" default="0"/> <arg name="use_ned_frame" default="true"/> <arg name="generated_urdf" default="$(find-pkg-share eca_a9_description)/robots/generated/$(var namespace)/robot_description"/> <arg name="cmd" default="$(exec-in-pkg xacro xacro) '$(find-pkg-share eca_a9_description)/robots/eca_a9_$(var mode).urdf.xacro' debug:=$(var debug) namespace:=$(var namespace) inertial_reference_frame:=world_ned > $(var generated_urdf) " /> <arg name="cmdUnless" default="$(exec-in-pkg xacro xacro) '$(find-pkg-share eca_a9_description)/robots/eca_a9_$(var mode).urdf.xacro' debug:=$(var debug) namespace:=$(var namespace) inertial_reference_frame:=world > $(var generated_urdf) " /> <!-- Mode to open different robot configurations as set the in file ) nomenclature standard for the files in /robots /robots/<mode>.xacro --> <arg name="mode" default="default"/> <!-- Vehicle's namespace --> <arg name="namespace" default="eca_a9"/> <include file="$(find-pkg-share eca_a9_description)/launch/upload_eca_a9.launch.py"> <arg name="debug" value="$(var debug)"/> <arg name="x" value="$(var x)"/> <arg name="y" value="$(var y)"/> <arg name="z" value="$(var z)"/> <arg name="roll" value="$(var roll)"/> <arg name="pitch" value="$(var pitch)"/> <arg name="yaw" value="$(var yaw)"/> <arg name="use_ned_frame" value="$(var use_ned_frame)"/> <arg name="namespace" value="$(var namespace)"/> <!-- <arg name="use_sim_time" value="$(var use_sim_time)"/> --> </include> <!-- <group> <push-ros-namespace namespace="$(var namespace)" /> <group if="$(var use_ned_frame)"> <executable cmd="$(var cmd)" name="robot_description" output="screen" shell="true"> </executable> </group> <group unless="$(var use_ned_frame)"> <executable cmd="$(var cmdUnless)" cwd="$(find-pkg-prefix xacro)" name="robot_description" output="screen" shell="true"> </executable> </group> --> <!-- Run a python script to the send a service call to gazebo_ros to spawn a URDF robot --> <!-- <group if="$(var use_geodetic)"> <node name="urdf_spawner" pkg="gazebo_ros" exec="spawn_entity.py" respawn="false" output="screen" args=" -latitude $(var latitude) -longitude $(var longitude) -depth $(var depth) -latitude_ref $(var latitude_ref) -longitude_ref $(var longitude_ref) -altitude_ref $(var altitude_ref) -R $(var roll) -P $(var pitch) -Y $(var yaw) -entity $(var namespace) -file $(var generated_urdf) "/> </group> <group unless="$(var use_geodetic)"> <node name="urdf_spawner" pkg="gazebo_ros" exec="spawn_entity.py" respawn="false" output="screen" args=" -x $(var x) -y $(var y) -z $(var z) -R $(var roll) -P $(var pitch) -Y $(var yaw) -entity $(var namespace) -file $(var generated_urdf) "/> </group> --> <!-- A joint state publisher plugin already is started with the model, no need to use the default joint state publisher -gazebo_namespace /gazebo--> <!-- Publish robot model for ROS --> <!-- <node name="robot_state_publisher" pkg="robot_state_publisher" exec="robot_state_publisher" output="screen"> <param name="robot_description" value="/$(var namespace)/robot_description" /> <param name="use_sim_time" value="$(var use_sim_time)" /> </node> --> <!-- <node name="robot_state_publisher" pkg="robot_state_publisher" exec="robot_state_publisher" respawn="true" output="screen" args="$(var generated_urdf)"> <param name="use_sim_time" value="$(var use_sim_time)"/> </node> </group> --> <!--publish state and tf for in relation to the world frame --> <!-- <include file="$(find-pkg-share uuv_assistants)/launch/message_to_tf.launch"> <arg name="namespace" value="$(var namespace)"/> <arg name="world_frame" value="world"/> <arg name="child_frame_id" value="/$(var namespace)/base_link"/> </include> --> </launch>
-
-
@yudonghou123 您好,我也遇到了相同的问题,请问您最后如何解决的