Skip to content

Commit 308dff4

Browse files
Merge pull request #7 from NVIDIA-ISAAC-ROS/release-3.2
Isaac ROS 3.2
2 parents 3593691 + 4390a52 commit 308dff4

File tree

6 files changed

+65
-9
lines changed

6 files changed

+65
-9
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,4 @@ See [Isaac ROS Documentation](https://nvidia-isaac-ros.github.io/repositories_an
5959

6060
## Latest
6161

62-
Update 2024-09-26: Update for Isaac ROS 3.1
62+
Update 2024-12-10: Update to be compatible with JetPack 6.1

isaac_ros_jetson_stats/isaac_ros_jetson_stats/ros2_jtop_node.py

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -117,17 +117,41 @@ def jetson_clocks_service(self, req, resp):
117117
return resp
118118

119119
def nvpmodel_service(self, req, resp):
120+
def loop_condition(condition, timeout_s=10):
121+
timeout_ns = timeout_s * 10e9
122+
start_time = self.get_clock().now().nanoseconds
123+
time_delta_ns = 0
124+
while condition():
125+
if time_delta_ns > timeout_ns:
126+
return False
127+
time_delta_ns = self.get_clock().now().nanoseconds - start_time
128+
return True
129+
120130
# Set new nvpmodel
121131
if self.jetson.nvpmodel is not None:
122132
nvpmodel = req.nvpmodel
123133
try:
124134
self.jetson.nvpmodel = nvpmodel
125-
power_mode = str(self.jetson.nvpmodel)
126-
self.get_logger().info(
127-
f'New NVPModel status:{nvpmodel} {power_mode}')
128-
except jtop.JtopException:
129-
nvpmodel = self.jetson.nvpmodel
130-
self.get_logger().error('Fail to set new NVPModel status')
135+
if not loop_condition(self.jetson.nvpmodel.is_running):
136+
power_mode = 'Timeout'
137+
self.get_logger().error('Timeout waiting for NVPModel command')
138+
elif self.jetson.nvpmodel.status[nvpmodel]:
139+
expected_model = self.jetson.nvpmodel.models[nvpmodel]
140+
if not loop_condition(lambda: expected_model != self.jetson.nvpmodel.name):
141+
power_mode = 'Timeout'
142+
self.get_logger().error('Timeout waiting for NVPModel to reflect change')
143+
else:
144+
power_mode = str(self.jetson.nvpmodel)
145+
self.get_logger().info(
146+
f'New NVPModel status:{nvpmodel} {power_mode}')
147+
else:
148+
power_mode = 'Exception'
149+
self.get_logger().error('New NVPModel cannot be set using `jtop`. Use ' +
150+
f'`nvpmodel -m {nvpmodel}` to see the issue in ' +
151+
'terminal.')
152+
except jtop.JtopException as e:
153+
power_mode = 'Exception'
154+
self.get_logger().error(f'Failed to set new NVPModel status. Exception: {e}')
131155
resp.power_mode = power_mode
132156
else:
133157
resp.power_mode = 'Not available'

isaac_ros_jetson_stats/package.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,14 @@
2424
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
2525
<package format="3">
2626
<name>isaac_ros_jetson_stats</name>
27-
<version>3.1.0</version>
27+
<version>3.2.0</version>
2828
<description>Isaac ROS Jetson. Set of packages to control your jetson from your board</description>
2929
<author email="[email protected]">Raffaello Bonghi</author>
3030
<maintainer email="[email protected]">Isaac ROS Maintainers</maintainer>
3131
<license>MIT</license>
3232

3333
<build_depend>rosidl_default_generators</build_depend>
34+
<build_depend>isaac_ros_common</build_depend>
3435

3536
<exec_depend>rclpy</exec_depend>
3637
<exec_depend>std_msgs</exec_depend>

isaac_ros_jetson_stats/setup.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,31 @@
2020
# DEALINGS IN THE SOFTWARE.
2121

2222
from glob import glob
23+
import importlib.util
2324
from os import path
25+
from pathlib import Path
26+
import sys
2427

28+
from ament_index_python.packages import get_resource
2529
from setuptools import setup
2630

31+
ISAAC_ROS_COMMON_PATH = get_resource(
32+
'isaac_ros_common_scripts_path',
33+
'isaac_ros_common'
34+
)[0]
35+
36+
ISAAC_ROS_COMMON_VERSION_INFO = Path(ISAAC_ROS_COMMON_PATH) / 'isaac_ros_common-version-info.py'
37+
38+
spec = importlib.util.spec_from_file_location(
39+
'isaac_ros_common_version_info',
40+
ISAAC_ROS_COMMON_VERSION_INFO
41+
)
42+
43+
isaac_ros_common_version_info = importlib.util.module_from_spec(spec)
44+
sys.modules['isaac_ros_common_version_info'] = isaac_ros_common_version_info
45+
spec.loader.exec_module(isaac_ros_common_version_info)
46+
47+
from isaac_ros_common_version_info import GenerateVersionInfoCommand # noqa: E402, I100
2748

2849
package_name = 'isaac_ros_jetson_stats'
2950

@@ -50,5 +71,8 @@
5071
'jtop = isaac_ros_jetson_stats.ros2_jtop_node:main',
5172
],
5273
},
74+
cmdclass={
75+
'build_py': GenerateVersionInfoCommand,
76+
},
5377
)
5478
# EOF

isaac_ros_jetson_stats_services/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,10 @@ rosidl_generate_interfaces(${PROJECT_NAME}
3333
"srv/NVPModel.srv"
3434
)
3535

36+
37+
# Embed versioning information into installed files
38+
ament_index_get_resource(ISAAC_ROS_COMMON_CMAKE_PATH isaac_ros_common_cmake_path isaac_ros_common)
39+
include("${ISAAC_ROS_COMMON_CMAKE_PATH}/isaac_ros_common-version-info.cmake")
40+
generate_version_info(${PROJECT_NAME})
41+
3642
ament_auto_package()

isaac_ros_jetson_stats_services/package.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,15 @@
2424
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
2525
<package format="3">
2626
<name>isaac_ros_jetson_stats_services</name>
27-
<version>3.1.0</version>
27+
<version>3.2.0</version>
2828
<description>Interfaces for Isaac ROS Jetson</description>
2929
<author email="[email protected]">Raffaello Bonghi</author>
3030
<maintainer email="[email protected]">Isaac ROS Maintainers</maintainer>
3131
<license>MIT</license>
3232

3333
<buildtool_depend>ament_cmake</buildtool_depend>
3434
<build_depend>rosidl_default_generators</build_depend>
35+
<build_depend>isaac_ros_common</build_depend>
3536

3637
<exec_depend>rosidl_default_runtime</exec_depend>
3738

0 commit comments

Comments
 (0)