Controller in depth

本文详细介绍了ASP.NET MVC中控制器方法如何返回ActionResult并处理不同类型的返回值,同时展示了一个简单的用户登录功能实现,包括控制器和视图代码。通过实践案例,读者可以深入理解控制器与视图之间的交互及基本的用户身份验证流程。

1.The Controller Action

public ActionResult Index() { ViewData["Message"] = "Welcome to ASP.NET MVC!"; return View(); }

An action method normally returns an ActionResult and can take zero or many arguments.一个action方法通常情况下返回ActionResult,能够带0个或者多个参数。

If the view name matches the action name, there is no need to specify it when calling return View(). ViewData is a IDictionary<string, object> at its core. The type is System.Web.Mvc.ViewDataDictionary, but we really only need to worry about the interface.

Action methods can return any object type, including void. If the type derives from System.Web.Mvc.ActionResult, then that result will be executed. If any other type is returned, the framework will call the ToString() method on it and return a ContentResult.

2.Simple Controllers Do Not Need A View

这里实现一个用户登陆的功能:

UserInfo.cs

public class UserInfo { public string UserName { get; set; } public string UserPassword { get; set; } }

在view目录下新建一个目录User,然后再其中添加loginpage.aspx,其中loginpage.aspx :

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>LoginPage</title> </head> <body> <div> <%using(Html.BeginRouteForm(new {controller = "user",action="process"})) { %> <%--表单数据,这里命名也不区分大小写--%> <p><label>密码1:</label><%=Html.Password("a.userpassword") %></p> <p><label>用户名1:</label><%=Html.TextBox("a.username") %></p> <p><input type="submit" /></p> <%} %> </div> </body> </html>

UserController.cs

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using Chapter3.Models;namespace Chapter3.Controllers { public class UserController : Controller { // 这是个辅助的方法 bool AreEquals(string name, string psw) { return ((name.ToLower() == "user") && (psw.ToLower() == "psw")); } // 这里实现的页面的出示,这个函数的名字需要和view/user下的 // 文件的名字相同。 public ActionResult LoginPage() { ViewData["ViewState"] = "MVC ViewState"; return View(); } public ActionResult Process(UserInfo a, UserInfo b) { if (AreEquals(a.UserName, a.UserPassword) && AreEquals(b.UserName, b.UserPassword)) { return Content("登录成功"); } else // 这里实现页面的跳转 return RedirectToAction("Index", "Home"); } } }

在其中:return RedirectToAction("Index", "Home");实现页面的跳转,也就是实现一个没有view的controller。

y@y-Dell-G15-5511:~$ cd ~/colcon_ws colcon build --packages-select learning_gazebo franka_robot_ign_pkg --symlink-install source install/setup.bash export IGN_GAZEBO_RESOURCE_PATH=$IGN_GAZEBO_RESOURCE_PATH:$HOME/colcon_ws/install/franka_description/share/franka_description:$HOME/colcon_ws/src/franka_description ros2 launch franka_robot_ign_pkg load_car_arm_into_ign.launch.py Starting >>> franka_robot_ign_pkg Starting >>> learning_gazebo Finished <<< franka_robot_ign_pkg [0.25s] Finished <<< learning_gazebo [0.82s] Summary: 2 packages finished [1.23s] [INFO] [launch]: All log files can be found below /home/y/.ros/log/2025-10-21-10-59-56-597850-y-Dell-G15-5511-63420 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [ign gazebo-1]: process started with pid [63421] [INFO] [create-2]: process started with pid [63423] [INFO] [robot_state_publisher-3]: process started with pid [63426] [INFO] [parameter_bridge-4]: process started with pid [63428] [INFO] [ros2_control_node-5]: process started with pid [63430] [create-2] [INFO] [1761015597.098326194] [ros_gz_sim]: Requesting list of world names. [ros2_control_node-5] [WARN] [1761015597.102026634] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead. [ros2_control_node-5] text not specified in the prefix tag [ros2_control_node-5] text not specified in the robot_ip tag [ros2_control_node-5] text not specified in the arm_prefix tag [ros2_control_node-5] [INFO] [1761015597.103024511] [resource_manager]: Loading hardware 'MbotBase' [ros2_control_node-5] terminate called after throwing an instance of 'pluginlib::LibraryLoadException' [ros2_control_node-5] what(): According to the loaded plugin descriptions the class ign_ros2_control/IgnitionSystem with base class type hardware_interface::SystemInterface does not exist. Declared types are fake_components/GenericSystem mock_components/GenericSystem test_hardware_components/TestSystemCommandModes test_hardware_components/TestTwoJointSystem test_system test_unitilizable_system [ros2_control_node-5] Stack trace (most recent call last): [ros2_control_node-5] #21 Object "", at 0xffffffffffffffff, in [ros2_control_node-5] #20 Object "/home/y/colcon_ws/build/controller_manager/ros2_control_node", at 0x5593c1dbb7a4, in _start [robot_state_publisher-3] [INFO] [1761015597.111174407] [robot_state_publisher]: got segment back_caster_link [robot_state_publisher-3] [INFO] [1761015597.111261558] [robot_state_publisher]: got segment base [robot_state_publisher-3] [INFO] [1761015597.111268179] [robot_state_publisher]: got segment base_footprint [robot_state_publisher-3] [INFO] [1761015597.111271931] [robot_state_publisher]: got segment base_link [robot_state_publisher-3] [INFO] [1761015597.111275913] [robot_state_publisher]: got segment fr3_hand [robot_state_publisher-3] [INFO] [1761015597.111279344] [robot_state_publisher]: got segment fr3_hand_tcp [robot_state_publisher-3] [INFO] [1761015597.111282323] [robot_state_publisher]: got segment fr3_leftfinger [robot_state_publisher-3] [INFO] [1761015597.111285142] [robot_state_publisher]: got segment fr3_link0 [robot_state_publisher-3] [INFO] [1761015597.111287986] [robot_state_publisher]: got segment fr3_link1 [robot_state_publisher-3] [INFO] [1761015597.111290713] [robot_state_publisher]: got segment fr3_link2 [robot_state_publisher-3] [INFO] [1761015597.111293486] [robot_state_publisher]: got segment fr3_link3 [robot_state_publisher-3] [INFO] [1761015597.111296242] [robot_state_publisher]: got segment fr3_link4 [robot_state_publisher-3] [INFO] [1761015597.111299982] [robot_state_publisher]: got segment fr3_link5 [robot_state_publisher-3] [INFO] [1761015597.111304168] [robot_state_publisher]: got segment fr3_link6 [robot_state_publisher-3] [INFO] [1761015597.111308966] [robot_state_publisher]: got segment fr3_link7 [robot_state_publisher-3] [INFO] [1761015597.111313266] [robot_state_publisher]: got segment fr3_link8 [robot_state_publisher-3] [INFO] [1761015597.111318111] [robot_state_publisher]: got segment fr3_rightfinger [robot_state_publisher-3] [INFO] [1761015597.111322888] [robot_state_publisher]: got segment front_caster_link [robot_state_publisher-3] [INFO] [1761015597.111327495] [robot_state_publisher]: got segment left_wheel_link [robot_state_publisher-3] [INFO] [1761015597.111332362] [robot_state_publisher]: got segment rgbd_camera_frame [robot_state_publisher-3] [INFO] [1761015597.111337056] [robot_state_publisher]: got segment right_wheel_link [parameter_bridge-4] [INFO] [1761015597.116708178] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/d435/depth_camera/points (ignition.msgs.PointCloudPacked) -> /d435/depth_camera/points (sensor_msgs/msg/PointCloud2)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.118111416] [ros_gz_bridge]: Creating ROS->GZ Bridge: [/d435/depth_camera/points (sensor_msgs/msg/PointCloud2) -> /d435/depth_camera/points (ignition.msgs.PointCloudPacked)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.118555704] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/d435/depth_camera/camera_info (ignition.msgs.CameraInfo) -> /d435/depth_camera/camera_info (sensor_msgs/msg/CameraInfo)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.118940676] [ros_gz_bridge]: Creating ROS->GZ Bridge: [/d435/depth_camera/camera_info (sensor_msgs/msg/CameraInfo) -> /d435/depth_camera/camera_info (ignition.msgs.CameraInfo)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.119257287] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/d435/depth_camera/image (ignition.msgs.Image) -> /d435/depth_camera/image (sensor_msgs/msg/Image)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.119558886] [ros_gz_bridge]: Creating ROS->GZ Bridge: [/d435/depth_camera/image (sensor_msgs/msg/Image) -> /d435/depth_camera/image (ignition.msgs.Image)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.119836591] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/d435/depth_camera/depth_image (ignition.msgs.Image) -> /d435/depth_camera/depth_image (sensor_msgs/msg/Image)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.120069434] [ros_gz_bridge]: Creating ROS->GZ Bridge: [/d435/depth_camera/depth_image (sensor_msgs/msg/Image) -> /d435/depth_camera/depth_image (ignition.msgs.Image)] (Lazy 0) [parameter_bridge-4] [INFO] [1761015597.120330272] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/ign/joint_states (ignition.msgs.JointState) -> /ign/joint_states (sensor_msgs/msg/JointState)] (Lazy 0) [parameter_bridge-4] [WARN] [1761015597.120391377] [ros_gz_bridge]: Failed to create a bridge for topic [/ign/joint_states] with ROS2 type [sensor_msgs/msg/JointState] to topic [/ign/joint_states] with Gazebo Transport type [ignition.msgs.JointState] [ros2_control_node-5] #19 Source "../csu/libc-start.c", line 392, in __libc_start_main_impl [0x70a361829e3f] [ros2_control_node-5] #18 Source "../sysdeps/nptl/libc_start_call_main.h", line 58, in __libc_start_call_main [0x70a361829d8f] [ros2_control_node-5] #17 Object "/home/y/colcon_ws/build/controller_manager/ros2_control_node", at 0x5593c1dbad8a, in main [ros2_control_node-5] #16 Object "/home/y/colcon_ws/build/controller_manager/ros2_control_node", at 0x5593c1dbf3b6, in std::__shared_ptr<controller_manager::ControllerManager, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocator<controller_manager::ControllerManager>, std::shared_ptr<rclcpp::Executor>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(std::_Sp_alloc_shared_tag<std::allocator<controller_manager::ControllerManager> >, std::shared_ptr<rclcpp::Executor>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) [ros2_control_node-5] #15 Object "/home/y/colcon_ws/build/controller_manager/ros2_control_node", at 0x5593c1dbdfd5, in void __gnu_cxx::new_allocator<controller_manager::ControllerManager>::construct<controller_manager::ControllerManager, std::shared_ptr<rclcpp::Executor>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(controller_manager::ControllerManager*, std::shared_ptr<rclcpp::Executor>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) [clone .isra.0] [ros2_control_node-5] #14 Object "/home/y/colcon_ws/install/controller_manager/lib/libcontroller_manager.so", at 0x70a3621ccf30, in controller_manager::ControllerManager::ControllerManager(std::shared_ptr<rclcpp::Executor>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rclcpp::NodeOptions const&) [ros2_control_node-5] #13 Object "/home/y/colcon_ws/install/controller_manager/lib/libcontroller_manager.so", at 0x70a3621cc0ef, in controller_manager::ControllerManager::init_resource_manager(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [ros2_control_node-5] #12 Object "/home/y/colcon_ws/install/hardware_interface/lib/libhardware_interface.so", at 0x70a36176c602, in hardware_interface::ResourceManager::load_urdf(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, bool, bool) [ros2_control_node-5] #11 Object "/home/y/colcon_ws/install/hardware_interface/lib/libhardware_interface.so", at 0x70a361776cde, in hardware_interface::ResourceStorage::load_and_initialize_system(hardware_interface::HardwareInfo const&) [ros2_control_node-5] #10 Object "/home/y/colcon_ws/install/hardware_interface/lib/libhardware_interface.so", at 0x70a361776aa4, in auto hardware_interface::ResourceStorage::load_and_initialize_system(hardware_interface::HardwareInfo const&)::{lambda(auto:1&)#1}::operator()<std::vector<hardware_interface::System, std::allocator<hardware_interface::System> > >(std::vector<hardware_interface::System, std::allocator<hardware_interface::System> >&) const [ros2_control_node-5] #9 Object "/home/y/colcon_ws/install/hardware_interface/lib/libhardware_interface.so", at 0x70a36177c5b8, in void hardware_interface::ResourceStorage::load_hardware<hardware_interface::System, hardware_interface::SystemInterface>(hardware_interface::HardwareInfo const&, pluginlib::ClassLoader<hardware_interface::SystemInterface>&, std::vector<hardware_interface::System, std::allocator<hardware_interface::System> >&) [ros2_control_node-5] #8 Object "/home/y/colcon_ws/install/hardware_interface/lib/libhardware_interface.so", at 0x70a3617856f8, in pluginlib::ClassLoader<hardware_interface::SystemInterface>::createUnmanagedInstance(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [ros2_control_node-5] #7 Object "/home/y/colcon_ws/install/hardware_interface/lib/libhardware_interface.so", at 0x70a3617932b2, in pluginlib::ClassLoader<hardware_interface::SystemInterface>::loadLibraryForClass(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) [ros2_control_node-5] #6 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x70a361cae4d7, in __cxa_throw [ros2_control_node-5] #5 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x70a361cae276, in std::terminate() [ros2_control_node-5] #4 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x70a361cae20b, in [ros2_control_node-5] #3 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x70a361ca2b9d, in [ros2_control_node-5] #2 Source "./stdlib/abort.c", line 79, in abort [0x70a3618287f2] [ros2_control_node-5] #1 Source "../sysdeps/posix/raise.c", line 26, in raise [0x70a361842475] [ros2_control_node-5] #0 | Source "./nptl/pthread_kill.c", line 89, in __pthread_kill_internal [ros2_control_node-5] | Source "./nptl/pthread_kill.c", line 78, in __pthread_kill_implementation [ros2_control_node-5] Source "./nptl/pthread_kill.c", line 44, in __pthread_kill [0x70a3618969fc] [ros2_control_node-5] Aborted (Signal sent by tkill() 63430 1000) [ERROR] [ros2_control_node-5]: process has died [pid 63430, exit code -6, cmd '/home/y/colcon_ws/install/controller_manager/lib/controller_manager/ros2_control_node --ros-args --params-file /tmp/launch_params_kj56e4y8 --params-file /home/y/colcon_ws/install/franka_robot_ign_pkg/share/franka_robot_ign_pkg/config/combined_control.yaml']. [create-2] [INFO] [1761015597.299843011] [ros_gz_sim]: Waiting messages on topic [robot_description]. [create-2] [INFO] [1761015597.310986549] [ros_gz_sim]: Requested creation of entity. [create-2] [INFO] [1761015597.311007217] [ros_gz_sim]: OK creation of entity. [INFO] [create-2]: process has finished cleanly [pid 63423] [ign gazebo-1] libEGL warning: egl: failed to create dri2 screen [ign gazebo-1] libEGL warning: egl: failed to create dri2 screen [ign gazebo-1] [GUI] [Err] [SystemPaths.cc:378] Unable to find file with URI [model://franka_description/meshes/robot_ee/franka_hand_white/visual/hand.dae] [ign gazebo-1] [GUI] [Err] [SystemPaths.cc:473] Could not resolve file [model://franka_description/meshes/robot_ee/franka_hand_white/visual/hand.dae] [ign gazebo-1] [GUI] [Err] [MeshManager.cc:173] Unable to find file[model://franka_description/meshes/robot_ee/franka_hand_white/visual/hand.dae] [ign gazebo-1] [GUI] [Err] [MeshDescriptor.cc:56] Mesh manager can't find mesh named [model://franka_description/meshes/robot_ee/franka_hand_white/visual/hand.dae] [ign gazebo-1] [GUI] [Err] [Ogre2MeshFactory.cc:562] Cannot load null mesh [model://franka_description/meshes/robot_ee/franka_hand_white/visual/hand.dae] [ign gazebo-1] [GUI] [Err] [Ogre2MeshFactory.cc:125] Failed to get Ogre item for [model://franka_description/meshes/robot_ee/franka_hand_white/visual/hand.dae] [ign gazebo-1] [GUI] [Err] [SceneManager.cc:404] Failed to load geometry for visual: fr3_link7_fixed_joint_lump__fr3_hand_visual_visual_1 [ign gazebo-1] [GUI] [Err] [SystemPaths.cc:378] Unable to find file with URI [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [SystemPaths.cc:473] Could not resolve file [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [MeshManager.cc:173] Unable to find file[model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [MeshDescriptor.cc:56] Mesh manager can't find mesh named [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [Ogre2MeshFactory.cc:562] Cannot load null mesh [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [Ogre2MeshFactory.cc:125] Failed to get Ogre item for [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [SceneManager.cc:404] Failed to load geometry for visual: fr3_leftfinger_visual_visual [ign gazebo-1] [GUI] [Err] [SystemPaths.cc:378] Unable to find file with URI [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [SystemPaths.cc:473] Could not resolve file [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [MeshManager.cc:173] Unable to find file[model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [MeshDescriptor.cc:56] Mesh manager can't find mesh named [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [Ogre2MeshFactory.cc:562] Cannot load null mesh [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [Ogre2MeshFactory.cc:125] Failed to get Ogre item for [model://franka_description/meshes/robot_ee/franka_hand_white/visual/finger.dae] [ign gazebo-1] [GUI] [Err] [SceneManager.cc:404] Failed to load geometry for visual: fr3_rightfinger_visual_visual [INFO] [spawner-6]: process started with pid [63636] [spawner-6] [INFO] [1761015601.336484276] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [INFO] [spawner-7]: process started with pid [63647] [spawner-7] [INFO] [1761015602.675100480] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015611.349752514] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015611.350203521] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015612.687883968] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015612.688196307] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015621.363558351] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015621.363927475] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015622.701563053] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015622.702023037] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015631.376885708] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015631.377258977] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015632.715195159] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015632.715501976] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015641.390840526] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015641.391161955] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015642.728738193] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015642.729250916] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015651.404737919] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015651.405213382] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015652.743278709] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015652.743677785] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015661.418379278] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015661.418844919] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015662.756565307] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015662.756932333] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015671.432476371] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015671.432818192] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015672.770154595] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015672.770469213] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-6] [WARN] [1761015681.445747649] [spawner_diff_drive_controller]: Could not contact service /controller_manager/list_controllers [spawner-6] [INFO] [1761015681.446056000] [spawner_diff_drive_controller]: waiting for service /controller_manager/list_controllers to become available... [spawner-7] [WARN] [1761015682.782932902] [spawner_forward_position_controller]: Could not contact service /controller_manager/list_controllers [spawner-7] [INFO] [1761015682.783458513] [spawner_forward_position_controller]: waiting for service /controller_manager/list_controllers to become available...
10-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值