ROS_gazebo 设置/获取模型状态 set_model_state/get_model_state

本文详细介绍如何使用Gazebo提供的服务,如/set_model_state和/get_model_state,来初始化环境状态或直接获取模型状态,这对于机器人强化学习场景特别有用。文章提供命令行、C++及Python三种方式的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        用gazebo做仿真时,有时候需要初始化环境状态,或者想要不通过传感器直接获取模型状态,比如做机器人强化学习场景,失败后reset()场景,step()时获取状态,(reset和step是openai gym强化学习库中的标准化函数)。gazebo提供了相关的服务话题,可以非常方便的帮助我们set model state 和 get model state。

        服务名分别为(可以通过rosservice list查看):

/gazebo/set_model_state
/gazebo/get_model_state

        我们可以通过多种方式set/get model state,1)命令行方式;2)C++/python方式。这些也是ROS中的常规操作。

1. 命令行方式

1.1. /gazebo/get_model_state

$ rosservice call gazebo/get_model_state '{model_name: blue_cube}'

解释:向服务端发送请求,获取blue_cube的状态,blue_cube是gazebo中Models中必须存在的模型。

将会得到:

pose: 
  position: 
    x: 0.799992373827
    y: 0.700044327224
    z: 0.848674788355
  orientation: 
    x: -0.000492196305707
    y: -0.000128524007798
    z: 1.46004051516e-08
    w: 0.999999870612
twist: 
  linear: 
    x: 0.0
    y: 0.0
    z: 0.0
  angular: 
    x: 0.0
    y: 0.0
    z: 0.0
success: True
status_message: GetModelState: got properties

这就是blue_cube的状态。

1.2. /gazebo/set_model_state

$ rosservice call /gazebo/set_model_state '{model_state: { model_name: blue_cube, pose: { position: { x: 0.6 , y: 0.4 , z: 0.83 }, orientation: {x: 0, y: -0.0032, z: 0, w: 1 } }, twist: { linear: {x: 0.0, y: 0.0, z: 0.0 } , angular: { x: 0.0, y: 0.0, z: 0.0 } } , reference_frame: world } }'

 解释:向服务端发送请求,设置blue_cube状态,可以看到需要输入的内容比较多,基本是节1.1中输入和输出的内容之和。

2. C++方式

通过ROS C++完成向服务端发送请求。这里需要知道srv类型,可以在下面目录中找到

/opt/ros/indigo/share/gazebo_msgs/srv

2.1. set_model_state code:

#include <ros/ros.h>
#include <gazebo_msgs/SetModelState.h>

int main(int argc, char **argv)
{
    ros::init(argc, argv, "gazebo_set_states_client");

    ros::NodeHandle n;
    ros::ServiceClient client = n.serviceClient<gazebo_msgs::SetModelState>("/gazebo/set_model_state");

    gazebo_msgs::SetModelState objstate;

    objstate.request.model_state.model_name = "blue_cube";
    objstate.request.model_state.pose.position.x = 0.5;
    objstate.request.model_state.pose.position.y = 0.5;
    objstate.request.model_state.pose.position.z = 0.5;
    objstate.request.model_state.pose.orientation.w = 1;
    objstate.request.model_state.pose.orientation.x = 0;
    objstate.request.model_state.pose.orientation.y = 0;
    objstate.request.model_state.pose.orientation.z = 0;
    objstate.request.model_state.twist.linear.x = 0.0;
    objstate.request.model_state.twist.linear.y = 0.0;
    objstate.request.model_state.twist.linear.z = 0.0;
    objstate.request.model_state.twist.angular.x = 0.0;
    objstate.request.model_state.twist.angular.y = 0.0;
    objstate.request.model_state.twist.angular.z = 0.0;
    objstate.request.model_state.reference_frame = "world";

    client.call(objstate);
}

2.2. get_model_state 略

3. Python方式

3.1. set_model_state code

#!/usr/bin/env python
#coding=utf-8

import rospy
from gazebo_msgs.srv import *

rospy.init_node('p_robot_env')
rospy.wait_for_service('/gazebo/set_model_state')

set_state_service = rospy.ServiceProxy('/gazebo/set_model_state', SetModelState)
objstate = SetModelStateRequest()  # Create an object of type SetModelStateRequest

# set red cube pose
objstate.model_state.model_name = "blue_cube"
objstate.model_state.pose.position.x = 0.5
objstate.model_state.pose.position.y = 0.5
objstate.model_state.pose.position.z = 0.5
objstate.model_state.pose.orientation.w = 1
objstate.model_state.pose.orientation.x = 0
objstate.model_state.pose.orientation.y = 0
objstate.model_state.pose.orientation.z = 0
objstate.model_state.twist.linear.x = 0.0
objstate.model_state.twist.linear.y = 0.0
objstate.model_state.twist.linear.z = 0.0
objstate.model_state.twist.angular.x = 0.0
objstate.model_state.twist.angular.y = 0.0
objstate.model_state.twist.angular.z = 0.0
objstate.model_state.reference_frame = "world"

result = set_state_service(objstate)

3.2. get_model_state 

#!/usr/bin/env python

import rospy
import gazebo_msg.srv import *

get_state_service = rospy.ServiceProxy('/gazebo/get_model_state', GetModelState)
model = GetModelStateRequest()
model.model_name = 'blue_cube'
objstate = get_state_service(model)
state = (objstate.pose.position.x, objstate.pose.position.y, objstate.pose.position.z)

 

(rosenv) whyros@ubuntu:~/爱死机战队-汪辉耀-何海-朱睿程/ros_ws$ roslaunch mini2_description gazebo_room.launch ... logging to /home/whyros/.ros/log/4051dbf6-56a8-11f0-8dcd-81cf0e965cb7/roslaunch-ubuntu-348341.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://ubuntu:37833/ SUMMARY ======== PARAMETERS * /gazebo/enable_ros_network: True * /joint_state_publisher/source_list: ['/joint_states1'] * /mini2/mini2/11_Joint_controller/gravity_compensation: True * /mini2/mini2/11_Joint_controller/joint: 11_Joint * /mini2/mini2/11_Joint_controller/pid/d: 50.0 * /mini2/mini2/11_Joint_controller/pid/i: 0.1 * /mini2/mini2/11_Joint_controller/pid/p: 1000.0 * /mini2/mini2/11_Joint_controller/type: position_controll... * /mini2/mini2/11_Joint_controller/update_rate: 1000 * /mini2/mini2/12_Joint_controller/gravity_compensation: True * /mini2/mini2/12_Joint_controller/joint: 12_Joint * /mini2/mini2/12_Joint_controller/pid/d: 40.0 * /mini2/mini2/12_Joint_controller/pid/i: 0.1 * /mini2/mini2/12_Joint_controller/pid/p: 800.0 * /mini2/mini2/12_Joint_controller/type: position_controll... * /mini2/mini2/12_Joint_controller/update_rate: 1000 * /mini2/mini2/13_Joint_controller/gravity_compensation: True * /mini2/mini2/13_Joint_controller/joint: 13_Joint * /mini2/mini2/13_Joint_controller/pid/d: 60.0 * /mini2/mini2/13_Joint_controller/pid/i: 0.1 * /mini2/mini2/13_Joint_controller/pid/p: 1200.0 * /mini2/mini2/13_Joint_controller/type: position_controll... * /mini2/mini2/13_Joint_controller/update_rate: 1000 * /mini2/mini2/21_Joint_controller/gravity_compensation: True * /mini2/mini2/21_Joint_controller/joint: 21_Joint * /mini2/mini2/21_Joint_controller/pid/d: 20.0 * /mini2/mini2/21_Joint_controller/pid/i: 0.1 * /mini2/mini2/21_Joint_controller/pid/p: 400.0 * /mini2/mini2/21_Joint_controller/type: position_controll... * /mini2/mini2/21_Joint_controller/update_rate: 1000 * /mini2/mini2/22_Joint_controller/gravity_compensation: True * /mini2/mini2/22_Joint_controller/joint: 22_Joint * /mini2/mini2/22_Joint_controller/pid/d: 20.0 * /mini2/mini2/22_Joint_controller/pid/i: 0.1 * /mini2/mini2/22_Joint_controller/pid/p: 400.0 * /mini2/mini2/22_Joint_controller/type: position_controll... * /mini2/mini2/22_Joint_controller/update_rate: 1000 * /mini2/mini2/23_Joint_controller/gravity_compensation: True * /mini2/mini2/23_Joint_controller/joint: 23_Joint * /mini2/mini2/23_Joint_controller/pid/d: 20.0 * /mini2/mini2/23_Joint_controller/pid/i: 0.1 * /mini2/mini2/23_Joint_controller/pid/p: 400.0 * /mini2/mini2/23_Joint_controller/type: position_controll... * /mini2/mini2/23_Joint_controller/update_rate: 1000 * /mini2/mini2/31_Joint_controller/gravity_compensation: True * /mini2/mini2/31_Joint_controller/joint: 31_Joint * /mini2/mini2/31_Joint_controller/pid/d: 20.0 * /mini2/mini2/31_Joint_controller/pid/i: 0.5 * /mini2/mini2/31_Joint_controller/pid/p: 400.0 * /mini2/mini2/31_Joint_controller/type: position_controll... * /mini2/mini2/31_Joint_controller/update_rate: 1000 * /mini2/mini2/32_Joint_controller/gravity_compensation: True * /mini2/mini2/32_Joint_controller/joint: 32_Joint * /mini2/mini2/32_Joint_controller/pid/d: 20.0 * /mini2/mini2/32_Joint_controller/pid/i: 0.1 * /mini2/mini2/32_Joint_controller/pid/p: 400.0 * /mini2/mini2/32_Joint_controller/type: position_controll... * /mini2/mini2/32_Joint_controller/update_rate: 1000 * /mini2/mini2/33_Joint_controller/gravity_compensation: True * /mini2/mini2/33_Joint_controller/joint: 33_Joint * /mini2/mini2/33_Joint_controller/pid/d: 20.0 * /mini2/mini2/33_Joint_controller/pid/i: 0.1 * /mini2/mini2/33_Joint_controller/pid/p: 400.0 * /mini2/mini2/33_Joint_controller/type: position_controll... * /mini2/mini2/33_Joint_controller/update_rate: 1000 * /mini2/mini2/41_Joint_controller/gravity_compensation: True * /mini2/mini2/41_Joint_controller/joint: 41_Joint * /mini2/mini2/41_Joint_controller/pid/d: 20.0 * /mini2/mini2/41_Joint_controller/pid/i: 0.5 * /mini2/mini2/41_Joint_controller/pid/p: 400.0 * /mini2/mini2/41_Joint_controller/type: position_controll... * /mini2/mini2/41_Joint_controller/update_rate: 1000 * /mini2/mini2/42_Joint_controller/gravity_compensation: True * /mini2/mini2/42_Joint_controller/joint: 42_Joint * /mini2/mini2/42_Joint_controller/pid/d: 20.0 * /mini2/mini2/42_Joint_controller/pid/i: 0.5 * /mini2/mini2/42_Joint_controller/pid/p: 400.0 * /mini2/mini2/42_Joint_controller/type: position_controll... * /mini2/mini2/42_Joint_controller/update_rate: 1000 * /mini2/mini2/43_Joint_controller/gravity_compensation: True * /mini2/mini2/43_Joint_controller/joint: 43_Joint * /mini2/mini2/43_Joint_controller/pid/d: 20.0 * /mini2/mini2/43_Joint_controller/pid/i: 0.5 * /mini2/mini2/43_Joint_controller/pid/p: 400.0 * /mini2/mini2/43_Joint_controller/type: position_controll... * /mini2/mini2/43_Joint_controller/update_rate: 1000 * /mini2/mini2/500_Joint_controller/gravity_compensation: True * /mini2/mini2/500_Joint_controller/joint: 500_Joint * /mini2/mini2/500_Joint_controller/pid/d: 20.0 * /mini2/mini2/500_Joint_controller/pid/i: 0.5 * /mini2/mini2/500_Joint_controller/pid/p: 400.0 * /mini2/mini2/500_Joint_controller/type: position_controll... * /mini2/mini2/500_Joint_controller/update_rate: 1000 * /mini2/mini2/50_Joint_controller/gravity_compensation: True * /mini2/mini2/50_Joint_controller/joint: 50_Joint * /mini2/mini2/50_Joint_controller/pid/d: 20.0 * /mini2/mini2/50_Joint_controller/pid/i: 0.5 * /mini2/mini2/50_Joint_controller/pid/p: 400.0 * /mini2/mini2/50_Joint_controller/type: position_controll... * /mini2/mini2/50_Joint_controller/update_rate: 1000 * /mini2/mini2/51_Joint_controller/gravity_compensation: True * /mini2/mini2/51_Joint_controller/joint: 51_Joint * /mini2/mini2/51_Joint_controller/pid/d: 20.0 * /mini2/mini2/51_Joint_controller/pid/i: 0.5 * /mini2/mini2/51_Joint_controller/pid/p: 400.0 * /mini2/mini2/51_Joint_controller/type: position_controll... * /mini2/mini2/51_Joint_controller/update_rate: 1000 * /mini2/mini2/52_Joint_controller/gravity_compensation: True * /mini2/mini2/52_Joint_controller/joint: 52_Joint * /mini2/mini2/52_Joint_controller/pid/d: 30.0 * /mini2/mini2/52_Joint_controller/pid/i: 0.1 * /mini2/mini2/52_Joint_controller/pid/p: 500.0 * /mini2/mini2/52_Joint_controller/type: position_controll... * /mini2/mini2/52_Joint_controller/update_rate: 1000 * /mini2/mini2/53_Joint_controller/gravity_compensation: True * /mini2/mini2/53_Joint_controller/joint: 53_Joint * /mini2/mini2/53_Joint_controller/pid/d: 20.0 * /mini2/mini2/53_Joint_controller/pid/i: 0.5 * /mini2/mini2/53_Joint_controller/pid/p: 400.0 * /mini2/mini2/53_Joint_controller/type: position_controll... * /mini2/mini2/53_Joint_controller/update_rate: 1000 * /mini2/mini2/joint_state_controller/publish_rate: 50 * /mini2/mini2/joint_state_controller/type: joint_state_contr... * /robot_description: <?xml version="1.... * /rosdistro: noetic * /rosversion: 1.17.3 * /use_sim_time: True NODES / gazebo (gazebo_ros/gzserver) gazebo_gui (gazebo_ros/gzclient) joint_control (mini2_description/joint_control.py) joint_state_publisher (joint_state_publisher/joint_state_publisher) robot_state_publisher (robot_state_publisher/robot_state_publisher) /mini2/ controller_spawner (controller_manager/spawner) spawn_urdf (gazebo_ros/spawn_model) auto-starting new master process[master]: started with pid [348349] ROS_MASTER_URI=http://localhost:11311 setting /run_id to 4051dbf6-56a8-11f0-8dcd-81cf0e965cb7 process[rosout-1]: started with pid [348359] started core service [/rosout] process[gazebo-2]: started with pid [348367] process[gazebo_gui-3]: started with pid [348370] process[mini2/spawn_urdf-4]: started with pid [348375] process[mini2/controller_spawner-5]: started with pid [348378] process[robot_state_publisher-6]: started with pid [348379] process[joint_state_publisher-7]: started with pid [348380] process[joint_control-8]: started with pid [348385] [WARN] [1751394109.302342, 0.000000]: DEPRECATION warning: --shutdown-timeout has no effect. [INFO] [1751394109.303728, 0.000000]: Controller Spawner: Waiting for service controller_manager/load_controller [INFO] [1751394109.332422, 0.000000]: Loading model XML from ros parameter robot_description [INFO] [1751394109.521168280]: Finished loading Gazebo ROS API Plugin. [INFO] [1751394109.523086673]: Finished loading Gazebo ROS API Plugin. [INFO] [1751394109.523249881]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting... [INFO] [1751394109.524751521]: waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, waiting... Traceback (most recent call last): File "/opt/ros/noetic/lib/gazebo_ros/spawn_model", line 239, in <module> exit_code = sm.run() File "/opt/ros/noetic/lib/gazebo_ros/spawn_model", line 132, in run model_xml = rospy.get_param(self.args.param) File "/opt/ros/noetic/lib/python3/dist-packages/rospy/client.py", line 468, in get_param return _param_server[param_name] #MasterProxy does all the magic for us File "/opt/ros/noetic/lib/python3/dist-packages/rospy/msproxy.py", line 123, in __getitem__ raise KeyError(key) KeyError: 'robot_description' [INFO] [1751394110.040706553]: waitForService: Service [/gazebo/set_physics_properties] is now available. [INFO] [1751394110.089876775, 0.001000000]: Physics dynamic reconfigure ready. [mini2/spawn_urdf-4] process has died [pid 348375, exit code 1, cmd /opt/ros/noetic/lib/gazebo_ros/spawn_model -urdf -model mini2_description -param robot_description -x 0.0244236973111199 -y -0.00001185 -z 0.00216909321295 -R 0 -P 0 -Y 0 -unpause __name:=spawn_urdf __log:=/home/whyros/.ros/log/4051dbf6-56a8-11f0-8dcd-81cf0e965cb7/mini2-spawn_urdf-4.log]. log file: /home/whyros/.ros/log/4051dbf6-56a8-11f0-8dcd-81cf0e965cb7/mini2-spawn_urdf-4*.log context mismatch in svga_surface_destroy context mismatch in svga_surface_destroy [WARN] [1751394139.451305, 2.934000]: Controller Spawner couldn't find the expected controller_manager ROS interface. [mini2/controller_spawner-5] process has finished cleanly log file: /home/whyros/.ros/log/4051dbf6-56a8-11f0-8dcd-81cf0e965cb7/mini2-controller_spawner-5*.log ^C[joint_control-8] killing on exit [joint_state_publisher-7] killing on exit [robot_state_publisher-6] killing on exit [gazebo_gui-3] killing on exit [gazebo-2] killing on exit ^C[gazebo_gui-3] escalating to SIGTERM [rosout-1] killing on exit [master] killing on exit shutting down processing monitor... ... shutting down processing monitor complete done (rosenv) whyros@ubuntu:~/爱死机战队-汪辉耀-何海-朱睿程/ros_ws$ roslaunch mini2_description gazebo_room.launch ... logging to /home/whyros/.ros/log/3fc93650-56aa-11f0-8dcd-81cf0e965cb7/roslaunch-ubuntu-361713.log Checking log directory for disk usage. This may take a while. Press Ctrl-C to interrupt Done checking log file disk usage. Usage is <1GB. started roslaunch server http://ubuntu:36143/ SUMMARY ======== PARAMETERS * /gazebo/enable_ros_network: True * /joint_state_publisher/source_list: ['/joint_states1'] * /mini2/arm_controller/constraints/goal_time: 0.6 * /mini2/arm_controller/constraints/joints/11_Joint/goal: True * /mini2/arm_controller/constraints/joints/11_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/12_Joint/goal: True * /mini2/arm_controller/constraints/joints/12_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/13_Joint/goal: True * /mini2/arm_controller/constraints/joints/13_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/21_Joint/goal: True * /mini2/arm_controller/constraints/joints/21_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/22_Joint/goal: True * /mini2/arm_controller/constraints/joints/22_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/23_Joint/goal: True * /mini2/arm_controller/constraints/joints/23_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/31_Joint/goal: True * /mini2/arm_controller/constraints/joints/31_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/32_Joint/goal: True * /mini2/arm_controller/constraints/joints/32_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/33_Joint/goal: True * /mini2/arm_controller/constraints/joints/33_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/41_Joint/goal: True * /mini2/arm_controller/constraints/joints/41_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/42_Joint/goal: True * /mini2/arm_controller/constraints/joints/42_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/43_Joint/goal: True * /mini2/arm_controller/constraints/joints/43_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/500_Joint/goal: True * /mini2/arm_controller/constraints/joints/500_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/50_Joint/goal: True * /mini2/arm_controller/constraints/joints/50_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/51_Joint/goal: True * /mini2/arm_controller/constraints/joints/51_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/52_Joint/goal: True * /mini2/arm_controller/constraints/joints/52_Joint/trajectory: True * /mini2/arm_controller/constraints/joints/53_Joint/goal: True * /mini2/arm_controller/constraints/joints/53_Joint/trajectory: True * /mini2/arm_controller/constraints/stopping_trajectory_duration: 0.5 * /mini2/arm_controller/joints: ['11_Joint', '12_... * /mini2/arm_controller/pid_gains/11_Joint/d: 50.0 * /mini2/arm_controller/pid_gains/11_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/11_Joint/p: 1000.0 * /mini2/arm_controller/pid_gains/12_Joint/d: 40.0 * /mini2/arm_controller/pid_gains/12_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/12_Joint/p: 800.0 * /mini2/arm_controller/pid_gains/13_Joint/d: 60.0 * /mini2/arm_controller/pid_gains/13_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/13_Joint/p: 1200.0 * /mini2/arm_controller/pid_gains/21_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/21_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/21_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/22_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/22_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/22_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/23_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/23_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/23_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/31_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/31_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/31_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/32_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/32_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/32_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/33_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/33_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/33_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/41_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/41_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/41_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/42_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/42_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/42_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/43_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/43_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/43_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/500_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/500_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/500_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/50_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/50_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/50_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/51_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/51_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/51_Joint/p: 400.0 * /mini2/arm_controller/pid_gains/52_Joint/d: 30.0 * /mini2/arm_controller/pid_gains/52_Joint/i: 0.1 * /mini2/arm_controller/pid_gains/52_Joint/p: 500.0 * /mini2/arm_controller/pid_gains/53_Joint/d: 20.0 * /mini2/arm_controller/pid_gains/53_Joint/i: 0.5 * /mini2/arm_controller/pid_gains/53_Joint/p: 400.0 * /mini2/arm_controller/type: effort_controller... * /mini2/joint_state_controller/publish_rate: 50 * /mini2/joint_state_controller/type: joint_state_contr... * /robot_description: <?xml version="1.... * /rosdistro: noetic * /rosversion: 1.17.3 * /use_sim_time: True NODES / gazebo (gazebo_ros/gzserver) gazebo_gui (gazebo_ros/gzclient) joint_control (mini2_description/joint_control.py) joint_state_publisher (joint_state_publisher/joint_state_publisher) robot_state_publisher (robot_state_publisher/robot_state_publisher) /mini2/ controller_spawner (controller_manager/spawner) spawn_urdf (gazebo_ros/spawn_model) auto-starting new master process[master]: started with pid [361721] ROS_MASTER_URI=http://localhost:11311 setting /run_id to 3fc93650-56aa-11f0-8dcd-81cf0e965cb7 process[rosout-1]: started with pid [361732] started core service [/rosout] process[gazebo-2]: started with pid [361742] process[gazebo_gui-3]: started with pid [361745] process[mini2/spawn_urdf-4]: started with pid [361750] process[mini2/controller_spawner-5]: started with pid [361753] process[robot_state_publisher-6]: started with pid [361754] process[joint_state_publisher-7]: started with pid [361755] process[joint_control-8]: started with pid [361760] [WARN] [1751394967.320296, 0.000000]: DEPRECATION warning: --shutdown-timeout has no effect. [INFO] [1751394967.322947, 0.000000]: Controller Spawner: Waiting for service /mini2/controller_manager/load_controller [INFO] [1751394967.360534, 0.000000]: Loading model XML from ros parameter /robot_description [INFO] [1751394967.367955, 0.000000]: Waiting for service /gazebo/spawn_urdf_model [INFO] [1751394967.591428043]: Finished loading Gazebo ROS API Plugin. [INFO] [1751394967.592695892]: waitForService: Service [/gazebo/set_physics_properties] has not been advertised, waiting... [INFO] [1751394967.712372708]: Finished loading Gazebo ROS API Plugin. [INFO] [1751394967.714188401]: waitForService: Service [/gazebo_gui/set_physics_properties] has not been advertised, waiting... [INFO] [1751394968.111488158]: waitForService: Service [/gazebo/set_physics_properties] is now available. [INFO] [1751394968.144013226, 0.003000000]: Physics dynamic reconfigure ready. [INFO] [1751394968.274723, 0.016000]: Calling service /gazebo/spawn_urdf_model [INFO] [1751394968.639988, 0.036000]: Spawn status: SpawnModel: Successfully spawned entity [INFO] [1751394968.641505, 0.036000]: Unpausing physics [mini2/spawn_urdf-4] process has finished cleanly log file: /home/whyros/.ros/log/3fc93650-56aa-11f0-8dcd-81cf0e965cb7/mini2-spawn_urdf-4*.log [INFO] [1751394972.082549432, 0.036000000]: Loading gazebo_ros_control plugin [INFO] [1751394972.082927631, 0.036000000]: Starting gazebo_ros_control plugin in namespace: /mini2 [INFO] [1751394972.083688984, 0.036000000]: gazebo_ros_control plugin is waiting for model URDF in parameter [/robot_description] on the ROS param server. [INFO] [1751394972.197588955, 0.036000000]: Loaded gazebo_ros_control. [INFO] [1751394972.419081, 0.058000]: Controller Spawner: Waiting for service /mini2/controller_manager/switch_controller [INFO] [1751394972.422287, 0.058000]: Controller Spawner: Waiting for service /mini2/controller_manager/unload_controller [INFO] [1751394972.424556, 0.059000]: Loading controller: joint_state_controller [INFO] [1751394972.443607, 0.061000]: Loading controller: arm_controller [ERROR] [1751394972.448703925, 0.061000000]: Could not load controller 'arm_controller' because controller type 'effort_controllers/JointTrajectoryController' does not exist. [ERROR] [1751394972.448778446, 0.061000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types context mismatch in svga_surface_destroy context mismatch in svga_surface_destroy [ERROR] [1751394973.449190, 0.161000]: Failed to load arm_controller [INFO] [1751394973.450581, 0.161000]: Controller Spawner: Loaded controllers: joint_state_controller [INFO] [1751394973.456978, 0.162000]: Started controllers: joint_state_controller
07-03
ros2 launch learning_urdf display.launch.py [INFO] [launch]: All log files can be found below /home/wheeltec/.ros/log/2025-07-11-20-46-04-934215-galactic-16082 [INFO] [launch]: Default logging verbosity is set to INFO Task exception was never retrieved future: <Task finished name='Task-2' coro=<LaunchService._process_one_event() done, defined at /opt/ros/galactic/lib/python3.8/site-packages/launch/launch_service.py:226> exception=PackageNotFoundError("package 'joint_state_publisher' not found, searching: ['/home/wheeltec/dev_ws1/install/learning_urdf', '/home/wheeltec/dev_ws1/install/learning_topic_cpp', '/home/wheeltec/dev_ws1/install/learning_topic', '/home/wheeltec/dev_ws1/install/learning_tf_cpp', '/home/wheeltec/dev_ws1/install/learning_tf', '/home/wheeltec/dev_ws1/install/learning_service_cpp', '/home/wheeltec/dev_ws1/install/learning_service', '/home/wheeltec/dev_ws1/install/learning_qos', '/home/wheeltec/dev_ws1/install/learning_pkg_python', '/home/wheeltec/dev_ws1/install/learning_pkg_c', '/home/wheeltec/dev_ws1/install/learning_parameter_cpp', '/home/wheeltec/dev_ws1/install/learning_parameter', '/home/wheeltec/dev_ws1/install/learning_node_cpp', '/home/wheeltec/dev_ws1/install/learning_node', '/home/wheeltec/dev_ws1/install/learning_launch', '/home/wheeltec/dev_ws1/install/learning_action_cpp', '/home/wheeltec/dev_ws1/install/learning_action', '/home/wheeltec/dev_ws1/install/learning_interface', '/home/wheeltec/dev_ws1/install/learning_gazebo_harmonic', '/home/wheeltec/dev_ws1/install/learning_gazebo', '/home/wheeltec/dev_ws1/install/learning_cv', '/home/wheeltec/usb_cam_ws/install/usb_cam', '/opt/ros/galactic']")> Traceback (most recent call last): File "/opt/ros/galactic/lib/python3.8/site-packages/ament_index_python/packages.py", line 50, in get_package_prefix content, package_prefix = get_resource('packages', package_name) File "/opt/ros/galactic/lib/python3.8/site-packages/ament_index_python/resources.py", line 48, in get_resource raise LookupError( LookupError: Could not find the resource 'joint_state_publisher' of type 'packages' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/ros/galactic/lib/python3.8/site-packages/launch/launch_service.py", line 228, in _process_one_event await self.__process_event(next_event) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/launch_service.py", line 248, in __process_event visit_all_entities_and_collect_futures(entity, self.__context)) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 45, in visit_all_entities_and_collect_futures futures_to_return += visit_all_entities_and_collect_futures(sub_entity, context) [Previous line repeated 1 more time] File "/opt/ros/galactic/lib/python3.8/site-packages/launch/utilities/visit_all_entities_and_collect_futures_impl.py", line 38, in visit_all_entities_and_collect_futures sub_entities = entity.visit(context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/action.py", line 108, in visit return self.execute(context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch_ros/actions/node.py", line 484, in execute ret = super().execute(context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/actions/execute_process.py", line 837, in execute self.__expand_substitutions(context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/actions/execute_process.py", line 681, in __expand_substitutions cmd = [perform_substitutions(context, x) for x in self.__cmd] File "/opt/ros/galactic/lib/python3.8/site-packages/launch/actions/execute_process.py", line 681, in <listcomp> cmd = [perform_substitutions(context, x) for x in self.__cmd] File "/opt/ros/galactic/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py", line 26, in perform_substitutions return ''.join([context.perform_substitution(sub) for sub in subs]) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/utilities/perform_substitutions_impl.py", line 26, in <listcomp> return ''.join([context.perform_substitution(sub) for sub in subs]) File "/opt/ros/galactic/lib/python3.8/site-packages/launch/launch_context.py", line 197, in perform_substitution return substitution.perform(self) File "/opt/ros/galactic/lib/python3.8/site-packages/launch_ros/substitutions/executable_in_package.py", line 76, in perform package_prefix = super().perform(context) File "/opt/ros/galactic/lib/python3.8/site-packages/launch_ros/substitutions/find_package.py", line 79, in perform result = self.find(package) File "/opt/ros/galactic/lib/python3.8/site-packages/launch_ros/substitutions/find_package.py", line 96, in find return get_package_prefix(package_name) File "/opt/ros/galactic/lib/python3.8/site-packages/ament_index_python/packages.py", line 52, in get_package_prefix raise PackageNotFoundError( ament_index_python.packages.PackageNotFoundError: "package 'joint_state_publisher' not found, searching: ['/home/wheeltec/dev_ws1/install/learning_urdf', '/home/wheeltec/dev_ws1/install/learning_topic_cpp', '/home/wheeltec/dev_ws1/install/learning_topic', '/home/wheeltec/dev_ws1/install/learning_tf_cpp', '/home/wheeltec/dev_ws1/install/learning_tf', '/home/wheeltec/dev_ws1/install/learning_service_cpp', '/home/wheeltec/dev_ws1/install/learning_service', '/home/wheeltec/dev_ws1/install/learning_qos', '/home/wheeltec/dev_ws1/install/learning_pkg_python', '/home/wheeltec/dev_ws1/install/learning_pkg_c', '/home/wheeltec/dev_ws1/install/learning_parameter_cpp', '/home/wheeltec/dev_ws1/install/learning_parameter', '/home/wheeltec/dev_ws1/install/learning_node_cpp', '/home/wheeltec/dev_ws1/install/learning_node', '/home/wheeltec/dev_ws1/install/learning_launch', '/home/wheeltec/dev_ws1/install/learning_action_cpp', '/home/wheeltec/dev_ws1/install/learning_action', '/home/wheeltec/dev_ws1/install/learning_interface', '/home/wheeltec/dev_ws1/install/learning_gazebo_harmonic', '/home/wheeltec/dev_ws1/install/learning_gazebo', '/home/wheeltec/dev_ws1/install/learning_cv', '/home/wheeltec/usb_cam_ws/install/usb_cam', '/opt/ros/galactic']"
最新发布
07-12
评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值