Coverage for src/robotics_numpy/__init__.py: 40%

40 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-14 16:02 +0200

1""" 

2Robotics NumPy - A lightweight robotics library built on NumPy 

3 

4A lightweight, high-performance robotics library focusing on: 

5- Forward and inverse kinematics 

6- Robot dynamics 

7- Trajectory planning 

8- 3D transformations 

9 

10Only requires NumPy as core dependency, with optional Plotly for visualization. 

11 

12Examples: 

13 >>> import robotics_numpy as rn 

14 >>> # Create a 6-DOF robot arm 

15 >>> robot = rn.models.create_6dof_arm() 

16 >>> # Forward kinematics 

17 >>> T = robot.fkine([0, 0, 0, 0, 0, 0]) 

18 >>> # Inverse kinematics 

19 >>> q = robot.ikine(T) 

20""" 

21 

22__version__ = "0.1.0" 

23__author__ = "Chaoyue" 

24__email__ = "chaoyue@example.com" 

25 

26# Core imports 

27from . import kinematics, models, transforms 

28 

29# Optional imports (fail gracefully if dependencies not available) 

30try: 

31 from . import visualization 

32 _HAS_VISUALIZATION = True 

33 # Ensure visualization is accessible even if not used here 

34 _ = visualization 

35except ImportError: 

36 _HAS_VISUALIZATION = False 

37 

38# Version info 

39__all__ = [ 

40 "transforms", 

41 "kinematics", 

42 "models", 

43] 

44 

45if _HAS_VISUALIZATION: 

46 __all__.append("visualization") 

47 

48# Convenience imports for common functionality 

49from .transforms.homogeneous import ( 

50 SE3_from_matrix, 

51 rotmat, 

52 transl, 

53) 

54from .transforms.pose import SE3, SO3 

55from .transforms.rotations import ( 

56 eul2r, 

57 r2eul, 

58 r2rpy, 

59 rotx, 

60 roty, 

61 rotz, 

62 rpy2r, 

63) 

64 

65# Add convenience imports to __all__ 

66__all__.extend([ 

67 "SE3", 

68 "SO3", 

69 "rotz", 

70 "roty", 

71 "rotx", 

72 "rpy2r", 

73 "r2rpy", 

74 "eul2r", 

75 "r2eul", 

76 "transl", 

77 "rotmat", 

78 "SE3_from_matrix", 

79]) 

80 

81def about() -> None: 

82 """Print information about robotics-numpy.""" 

83 print(f"Robotics NumPy {__version__}") 

84 print("A lightweight robotics library built on NumPy") 

85 print(f"Author: {__author__}") 

86 print() 

87 print("Core modules:") 

88 print(" ✅ transforms: 3D transformations, rotations, poses") 

89 print(" ✅ kinematics: Forward kinematics, DH parameters") 

90 print(" ✅ models: Robot models (Stanford Arm, etc.)") 

91 print(" 🚧 dynamics: Robot dynamics and control (coming in v0.3.0)") 

92 print(" 🚧 trajectory: Trajectory generation and planning (coming in v0.3.0)") 

93 if _HAS_VISUALIZATION: 

94 print(" 🚧 visualization: 3D plotting (coming in v0.2.0)") 

95 else: 

96 print(" 🚧 visualization: Not available (install with pip install robotics-numpy[visualization])") 

97 print() 

98 print("Quick start:") 

99 print(" >>> import robotics_numpy as rn") 

100 print(" >>> robot = rn.models.Stanford()") 

101 print(" >>> T = robot.fkine([0, 0, 0, 0, 0, 0])") 

102 print(" >>> print(T)") 

103 print() 

104 print("Available models:") 

105 print(" >>> rn.models.list_models() # See all available robots")