stopNode
Stop ROS or ROS 2 node
Description
stopNode(
stops a running ROS or ROS 2 node that was deployed from a
Simulink® model named device
,modelName
)modelName
.
The node is running on the specified rosdevice
or
ros2device
object,
device
. If the node is not
running, the function returns immediately.
Examples
Run ROS Node on ROS Device
Connect to a remote ROS device and start a ROS node. Run a ROS core so that ROS nodes can communicate via a ROS network. You can run and stop a ROS core or node and check their status using a rosdevice
object.
Create a connection to a ROS device. Specify the address, user name, and password of your specific ROS device. The device already contains the available ROS nodes that can be run using runNode
.
ipaddress = '192.168.203.129'; d = rosdevice(ipaddress,'user','password'); d.ROSFolder = '/opt/ros/indigo'; d.CatkinWorkspace = '~/catkin_ws_test'
d = rosdevice with properties: DeviceAddress: '192.168.203.129' Username: 'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws_test' AvailableNodes: {'robotcontroller' 'robotcontroller2'}
Run a ROS core. Connect MATLAB® to the ROS master using rosinit
. This core enables you to run ROS nodes on your ROS device.
runCore(d) rosinit(d.DeviceAddress,11311)
Initializing global node /matlab_global_node_84497 with NodeURI http://192.168.203.1:56034/
Check the available ROS nodes on the connected ROS device. These nodes listed were generated from Simulink® models following the process in the Get Started with ROS in Simulink example.
d.AvailableNodes
ans = 1×2 cell
{'robotcontroller'} {'robotcontroller2'}
Run a ROS node and specify the node name. Check if the node is running.
runNode(d,'RobotController') running = isNodeRunning(d,'RobotController')
running = logical
1
Stop the ROS node. Disconnect from the ROS network. Stop the ROS core.
stopNode(d,'RobotController')
rosshutdown
Shutting down global node /matlab_global_node_84497 with NodeURI http://192.168.203.1:56034/
stopCore(d)
Run Multiple ROS Nodes
Run multiple ROS nodes on a connected ROS device. ROS nodes can be generated using Simulink® models to perform different tasks on the ROS network. These nodes are then deployed on a ROS device and can be run independently of Simulink®.
This example uses two different Simulink models that have been deployed as ROS nodes. See Generate a Standalone ROS Node from Simulink and follow the instructions to generate and deploy a ROS node. Do this twice and name them 'robotcontroller'
and 'robotcontroller2'
. The 'robotcontroller'
node sends velocity commands to a robot to navigate it to a given point. The 'robotcontroller2'
node uses the same model, but doubles the linear velocity to drive the robot faster.
Create a connection to a ROS device. Specify the address, user name, and password of your specific ROS device. The device contains information about the ROS device, including the available ROS nodes that can be run using runNode
.
ipaddress = '192.168.203.129'; d = rosdevice(ipaddress,'user','password')
d = rosdevice with properties: DeviceAddress: '192.168.203.129' Username: 'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws' AvailableNodes: {0×1 cell}
d.CatkinWorkspace = '~/catkin_ws_test'
d = rosdevice with properties: DeviceAddress: '192.168.203.129' Username: 'user' ROSFolder: '/opt/ros/indigo' CatkinWorkspace: '~/catkin_ws_test' AvailableNodes: {'robotcontroller' 'robotcontroller2'}
Run a ROS core. The ROS Core is the master enables you to run ROS nodes on your ROS device. Connect MATLAB® to the ROS master using rosinit
. For this example, the port is set to 11311. rosinit
can automatically select a port for you without specifying this input.
runCore(d) rosinit(d.DeviceAddress,11311)
Initializing global node /matlab_global_node_66434 with NodeURI http://192.168.203.1:59395/
Check the available ROS nodes on the connected ROS device. The nodes listed in this example were generated from Simulink® models following the process in the Generate a Standalone ROS Node from Simulink example. Two separate nodes are generated, 'robotcontroller'
and 'robotcontroller2'
, which have the linear velocity set to 1 and 2 in the model respectively.
d.AvailableNodes
ans = 1×2 cell
{'robotcontroller'} {'robotcontroller2'}
Start up the Robot Simulator using ExampleHelperSimulinkRobotROS
. This simulator automatically connects to the ROS master on the ROS device. You will use this simulator to run a ROS node and control the robot.
sim = ExampleHelperSimulinkRobotROS;
Run a ROS node, specifying the node name. The 'robotcontroller'
node commands the robot to a specific location ([-10 10]
). Wait to see the robot drive.
runNode(d,'robotcontroller')
pause(10)
Reset the Robot Simulator to reset the robot position. Alternatively, click Reset Simulation. Because the node is still running, the robot continues back to the specific location. To stop sending commands, stop the node.
resetSimulation(sim.Simulator) pause(5)
stopNode(d,'robotcontroller')
Run the 'robotcontroller2'
node. This model drives the robot with twice the linear velocity. Reset the robot position. Wait to see the robot drive. You should see a wider turn due to the increased velocity.
runNode(d,'robotcontroller2')
resetSimulation(sim.Simulator)
pause(10)
Close the simulator. Stop the ROS node. Disconnect from the ROS network and stop the ROS core.
close
stopNode(d,'robotcontroller2')
rosshutdown
Shutting down global node /matlab_global_node_66434 with NodeURI http://192.168.203.1:59395/
stopCore(d)
Input Arguments
device
— ROS or ROS2 device
rosdevice
object | ros2device
object
ROS or ROS 2 device, specified as a rosdevice
or ros2device
object, respectively.
modelName
— Name of the deployed Simulink model
character vector
Name of the deployed Simulink model, specified as a character vector. If the model name is not valid, the function returns immediately.
Version History
Introduced in R2019b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)