Skip to content

Commit 269d480

Browse files
Improve type annotations for ament_mypy (#5575)
* Enable tools directory to be mypy compliant. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Enable nav2_system_tests to be mypy compliant. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Enable nav2_docking to be mypy compliant. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Enable nav2_simple_commander to be mypy compliant. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Enable nav2_loopback_sim to be mypy compliant. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Removed unused ignores for packages for mypy compliance. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> * Added nav2_msgs path fixes to mypy compliance. Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com> --------- Signed-off-by: Leander Stephen D'Souza <leanderdsouza1234@gmail.com>
1 parent 2a2a709 commit 269d480

File tree

12 files changed

+81
-72
lines changed

12 files changed

+81
-72
lines changed

nav2_docking/opennav_docking/test/test_docking_server.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@
2626
import launch_testing
2727
import launch_testing.actions
2828
import launch_testing.asserts
29-
import launch_testing.markers
30-
import launch_testing.util
3129
from lifecycle_msgs.srv import GetState
3230
from nav2_common.launch import RewrittenYaml
3331
from nav2_msgs.action import DockRobot, NavigateToPose, UndockRobot
@@ -36,6 +34,7 @@
3634
import rclpy
3735
from rclpy.action.client import ActionClient
3836
from rclpy.action.server import ActionServer, ServerGoalHandle
37+
from rclpy.client import Client
3938
from sensor_msgs.msg import BatteryState
4039
import tf2_ros
4140
from tf2_ros import TransformBroadcaster
@@ -133,9 +132,10 @@ def setUp(self) -> None:
133132
self.tf_listener = tf2_ros.TransformListener(self.tf_buffer, self.node)
134133
self.odom_pub = self.node.create_publisher(Odometry, 'odom', 10)
135134

136-
def wait_for_node_to_be_active(self, node_name, timeout_sec=10.0):
135+
def wait_for_node_to_be_active(self, node_name: str, timeout_sec: float = 30.0) -> None:
137136
"""Wait for a managed node to become active."""
138-
client = self.node.create_client(GetState, f'{node_name}/get_state')
137+
client: Client[GetState.Request, GetState.Response] = \
138+
self.node.create_client(GetState, f'{node_name}/get_state')
139139
if not client.wait_for_service(timeout_sec=2.0):
140140
self.fail(f'Service get_state for {node_name} not available.')
141141

@@ -144,7 +144,8 @@ def wait_for_node_to_be_active(self, node_name, timeout_sec=10.0):
144144
req = GetState.Request()
145145
future = client.call_async(req)
146146
rclpy.spin_until_future_complete(self.node, future, timeout_sec=1.0)
147-
if future.result() and future.result().current_state.id == 3: # 3 = ACTIVE
147+
result = future.result()
148+
if result is not None and result.current_state.id == 3: # 3 = ACTIVE
148149
self.node.get_logger().info(f'Node {node_name} is active.')
149150
return
150151
time.sleep(0.5)
@@ -199,12 +200,12 @@ def publish_odometry(self, odom_to_base_link: TransformStamped) -> None:
199200
odom.twist.twist = self.command
200201
self.odom_pub.publish(odom)
201202

202-
def action_feedback_callback(self, msg: DockRobot.Feedback) -> None:
203+
def action_feedback_callback(self, msg: DockRobot.Impl.FeedbackMessage) -> None:
203204
# Force the docking action to run a full recovery loop and then
204205
# make contact with the dock (based on pose of robot) before
205206
# we report that the robot is charging
206207
if msg.feedback.num_retries > 0 and \
207-
msg.feedback.state == msg.feedback.WAIT_FOR_CHARGE:
208+
msg.feedback.state == DockRobot.Feedback.WAIT_FOR_CHARGE:
208209
self.is_charging = True
209210

210211
def nav_execute_callback(

nav2_loopback_sim/nav2_loopback_sim/loopback_simulator.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,22 @@
1414

1515

1616
import math
17-
from typing import Optional
17+
from typing import Optional, Union
1818

19-
from geometry_msgs.msg import (PoseWithCovarianceStamped, Quaternion, TransformStamped, Twist,
20-
TwistStamped, Vector3)
19+
from geometry_msgs.msg import (Pose, PoseWithCovarianceStamped, Quaternion, TransformStamped,
20+
Twist, TwistStamped, Vector3)
2121
from nav2_loopback_sim.utils import (addYawToQuat, getMapOccupancy, matrixToTransform,
2222
transformStampedToMatrix, worldToMap)
2323
from nav2_simple_commander.line_iterator import LineIterator
24-
from nav_msgs.msg import Odometry
24+
from nav_msgs.msg import OccupancyGrid, Odometry
2525
from nav_msgs.srv import GetMap
2626
import numpy as np
2727
import rclpy
2828
from rclpy.client import Client
2929
from rclpy.duration import Duration
3030
from rclpy.node import Node
3131
from rclpy.qos import DurabilityPolicy, QoSProfile, ReliabilityPolicy
32+
from rclpy.subscription import Subscription
3233
from rclpy.timer import Timer
3334
from rosgraph_msgs.msg import Clock
3435
from sensor_msgs.msg import LaserScan
@@ -49,12 +50,12 @@ class LoopbackSimulator(Node):
4950

5051
def __init__(self) -> None:
5152
super().__init__(node_name='loopback_simulator')
52-
self.curr_cmd_vel = None
53+
self.curr_cmd_vel: Optional[Twist] = None
5354
self.curr_cmd_vel_time = self.get_clock().now()
54-
self.initial_pose: PoseWithCovarianceStamped = None
55+
self.initial_pose: Optional[Pose] = None
5556
self.timer: Optional[Timer] = None
5657
self.setupTimer = None
57-
self.map = None
58+
self.map: Optional[OccupancyGrid] = None
5859
self.mat_base_to_laser: Optional[np.ndarray[np.float64, np.dtype[np.float64]]] = None
5960

6061
self.declare_parameter('update_duration', 0.01)
@@ -122,6 +123,9 @@ def __init__(self) -> None:
122123
self.initial_pose_sub = self.create_subscription(
123124
PoseWithCovarianceStamped,
124125
'initialpose', self.initialPoseCallback, 10)
126+
127+
self.cmd_vel_sub: Union[Subscription[Twist], Subscription[TwistStamped]]
128+
125129
if not use_stamped:
126130
self.cmd_vel_sub = self.create_subscription(
127131
Twist,
@@ -292,7 +296,8 @@ def publishOdometry(self, odom_to_base_link: TransformStamped) -> None:
292296
odom.pose.pose.position.x = odom_to_base_link.transform.translation.x
293297
odom.pose.pose.position.y = odom_to_base_link.transform.translation.y
294298
odom.pose.pose.orientation = odom_to_base_link.transform.rotation
295-
odom.twist.twist = self.curr_cmd_vel
299+
if self.curr_cmd_vel is not None:
300+
odom.twist.twist = self.curr_cmd_vel
296301
self.odom_pub.publish(odom)
297302

298303
def info(self, msg: str) -> None:

nav2_loopback_sim/nav2_loopback_sim/utils.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import math
1717

18-
from geometry_msgs.msg import Quaternion, Transform
18+
from geometry_msgs.msg import Quaternion, Transform, TransformStamped
1919
from nav_msgs.msg import OccupancyGrid
2020
import numpy as np
2121
import tf_transformations
@@ -37,7 +37,8 @@ def addYawToQuat(quaternion: Quaternion, yaw_to_add: float) -> Quaternion:
3737
return new_quaternion
3838

3939

40-
def transformStampedToMatrix(transform: Transform) -> np.ndarray[np.float64, np.dtype[np.float64]]:
40+
def transformStampedToMatrix(
41+
transform: TransformStamped) -> np.ndarray[np.float64, np.dtype[np.float64]]:
4142
translation = transform.transform.translation
4243
rotation = transform.transform.rotation
4344
matrix = np.eye(4)

nav2_simple_commander/nav2_simple_commander/example_route.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# See the License for the specific language governing permissions and
1414
# limitations under the License.
1515

16-
from geometry_msgs.msg import Pose, PoseStamped
16+
from geometry_msgs.msg import Point, PoseStamped
1717
from nav2_simple_commander.robot_navigator import BasicNavigator, RunningTask, TaskResult
1818
from nav2_simple_commander.utils import euler_to_quaternion
1919
import rclpy
@@ -24,7 +24,7 @@
2424
"""
2525

2626

27-
def toPoseStamped(pt: Pose, header: Header) -> PoseStamped:
27+
def toPoseStamped(pt: Point, header: Header) -> PoseStamped:
2828
pose = PoseStamped()
2929
pose.pose.position.x = pt.x
3030
pose.pose.position.y = pt.y

0 commit comments

Comments
 (0)