From dfbdcf5e8ac9d920ff4865771b0544c556c95c74 Mon Sep 17 00:00:00 2001 From: Ventsi <uquzq@student.kit.edu> Date: Sat, 17 Aug 2024 16:12:49 +0200 Subject: [PATCH] Add bed in URDF file of the simple robot and improve simulations --- ...imple_robot_rviz_simulation_1dof_launch.py | 5 ++- .../forward_kinematics_node_1dof.py | 39 ++++++++++--------- .../simple_robot_1dof/urdf/simple_robot.urdf | 29 ++++++++------ .../forward_kinematics_node_2dof_1.py | 4 +- .../simple_robot_2dof/urdf/simple_robot.urdf | 17 +++++--- .../forward_kinematics_node_3dof_1.py | 6 +-- .../forward_kinematics_node_3dof_2.py | 6 +-- .../simple_robot_3dof/urdf/simple_robot.urdf | 13 +++++-- 8 files changed, 71 insertions(+), 48 deletions(-) diff --git a/ros2_ws/src/simple_robot_1dof/launch/simple_robot_rviz_simulation_1dof_launch.py b/ros2_ws/src/simple_robot_1dof/launch/simple_robot_rviz_simulation_1dof_launch.py index 8b89fb9..2bf529b 100644 --- a/ros2_ws/src/simple_robot_1dof/launch/simple_robot_rviz_simulation_1dof_launch.py +++ b/ros2_ws/src/simple_robot_1dof/launch/simple_robot_rviz_simulation_1dof_launch.py @@ -21,6 +21,8 @@ def generate_launch_description(): with open(urdf_file, 'r') as infp: robot_desc = infp.read() + + declared_arguments = [] declared_arguments.append( DeclareLaunchArgument( @@ -105,7 +107,8 @@ def generate_launch_description(): executable='robot_state_publisher', output='both', parameters=[ - {'robot_description': robot_desc} + # {'robot_description': combined_robot_desc}, + {'robot_description': robot_desc}, ] ) nodes = [ diff --git a/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/forward_kinematics_node_1dof.py b/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/forward_kinematics_node_1dof.py index 8bb289e..04b9161 100644 --- a/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/forward_kinematics_node_1dof.py +++ b/ros2_ws/src/simple_robot_1dof/simple_robot_1dof/forward_kinematics_node_1dof.py @@ -67,24 +67,6 @@ class Forward_Kinematics_Node_1Dof(Node): self.index += 1 self.transformation_simple_robot() - - def transformation_kuka(self): - - kuka_joint_angles = np.zeros(len(self.Slist[0])) - kuka_joint_angles[0] = np.pi - kuka_joint_angles[1] = np.pi/2 - kuka_joint_angles[3] = np.pi/2 - kuka_joint_angles[5] = np.pi/2 - - start_forward_kinematics_kuka = FKinBody(self.M, self.Blist, kuka_joint_angles) - - end_forward_kinematics_kuka = np.matmul(self.intermediate_rotation, start_forward_kinematics_kuka) - - end_position_kuka = end_forward_kinematics_kuka[:4, 3] - end_orientation_kuka = Rotation.from_matrix(end_forward_kinematics_kuka[:3, :3]).as_quat() - - - self.publish_pose_kuka_pose(end_position_kuka, end_orientation_kuka) def transformation_simple_robot(self): @@ -120,6 +102,27 @@ class Forward_Kinematics_Node_1Dof(Node): if self.index == 2: self.transformation_kuka() + + def transformation_kuka(self): + + kuka_joint_angles = np.zeros(len(self.Slist[0])) + kuka_joint_angles[0] = np.pi + kuka_joint_angles[1] = np.pi/2 + kuka_joint_angles[3] = np.pi/2 + kuka_joint_angles[5] = np.pi/2 + + start_forward_kinematics_kuka = FKinBody(self.M, self.Blist, kuka_joint_angles) + + end_forward_kinematics_kuka = np.matmul(self.intermediate_rotation, start_forward_kinematics_kuka) + + end_position_kuka = end_forward_kinematics_kuka[:4, 3] + end_orientation_kuka = Rotation.from_matrix(end_forward_kinematics_kuka[:3, :3]).as_quat() + + + self.publish_pose_kuka_pose(end_position_kuka, end_orientation_kuka) + + + def construct_path(self, vector): # RViz pose = PoseStamped() diff --git a/ros2_ws/src/simple_robot_1dof/urdf/simple_robot.urdf b/ros2_ws/src/simple_robot_1dof/urdf/simple_robot.urdf index 9c63ad0..54b1468 100644 --- a/ros2_ws/src/simple_robot_1dof/urdf/simple_robot.urdf +++ b/ros2_ws/src/simple_robot_1dof/urdf/simple_robot.urdf @@ -20,6 +20,15 @@ <color rgba="0.5 0.5 0.5 1"/> </material> </visual> + <visual> + <origin xyz="-0.7 0.55 0.235" rpy="0 0 0"/> + <geometry> + <box size = "0.9 1.9 0.47"/> + </geometry> + <material name="grey"> + <color rgba="0.5 0.5 0.5 1"/> + </material> + </visual> </link> <link name="arm1"> @@ -28,8 +37,8 @@ <geometry> <cylinder length="0.71" radius="0.02"/> </geometry> - <material name="red"> - <color rgba="0.75 0.0 0.0 1"/> + <material name="green"> + <color rgba="0.0 0.75 0.0 1"/> </material> </visual> <inertial> @@ -53,8 +62,8 @@ <geometry> <cylinder length="0.3" radius="0.02"/> </geometry> - <material name="green"> - <color rgba="0.0 0.75 0.0 1"/> + <material name="red"> + <color rgba="0.75 0.0 0.0 1"/> </material> </visual> <inertial> @@ -64,12 +73,10 @@ </inertial> </link> - <joint name="joint2" type="revolute"> + <joint name="joint2" type="fixed"> <parent link="arm1"/> <child link="arm2"/> <origin xyz="0 0 0.71"/> - <axis xyz="0 1 0"/> - <limit effort = "300" lower="-2.96705972839" upper="2.96705972839" velocity = "10" /> </joint> <link name="arm3"> @@ -78,8 +85,8 @@ <geometry> <cylinder length="0.3" radius="0.02"/> </geometry> - <material name="blue"> - <color rgba="0.0 0.0 0.75 1"/> + <material name="red"> + <color rgba="0.75 0.0 0.0 1"/> </material> </visual> <inertial> @@ -89,12 +96,10 @@ </inertial> </link> - <joint name="joint3" type="revolute"> + <joint name="joint3" type="fixed"> <parent link="arm2"/> <child link="arm3"/> <origin xyz="-0.3 0 0"/> - <axis xyz="0 1 0"/> - <limit effort = "300" lower="-2.96705972839" upper="2.96705972839" velocity = "10" /> </joint> <link name="ee_link" /> diff --git a/ros2_ws/src/simple_robot_2dof/simple_robot_2dof/forward_kinematics_node_2dof_1.py b/ros2_ws/src/simple_robot_2dof/simple_robot_2dof/forward_kinematics_node_2dof_1.py index aa89ec9..7cdbb44 100644 --- a/ros2_ws/src/simple_robot_2dof/simple_robot_2dof/forward_kinematics_node_2dof_1.py +++ b/ros2_ws/src/simple_robot_2dof/simple_robot_2dof/forward_kinematics_node_2dof_1.py @@ -195,8 +195,8 @@ class Forward_Kinematics_Node_2Dof(Node): def publish_joint_states_simple_robot(self): - joint_names = ['joint1', 'joint2', 'joint3', 'joint4'] - joint_states = [0.0, 0.0, 0.0, 0.0] + joint_names = ['joint1', 'joint2'] + joint_states = [0.0, 0.0] joint_states[1] = self.h_fraction joint_states[0] = self.theta_fraction diff --git a/ros2_ws/src/simple_robot_2dof/urdf/simple_robot.urdf b/ros2_ws/src/simple_robot_2dof/urdf/simple_robot.urdf index 18b276f..f6dc71d 100644 --- a/ros2_ws/src/simple_robot_2dof/urdf/simple_robot.urdf +++ b/ros2_ws/src/simple_robot_2dof/urdf/simple_robot.urdf @@ -19,6 +19,15 @@ <color rgba="0.5 0.5 0.5 1"/> </material> </visual> + <visual> + <origin xyz="-0.7 0.55 0.235" rpy="0 0 0"/> + <geometry> + <box size = "0.9 1.9 0.47"/> + </geometry> + <material name="grey"> + <color rgba="0.5 0.5 0.5 1"/> + </material> + </visual> </link> <link name="arm1"> @@ -88,12 +97,10 @@ </inertial> </link> - <joint name="joint3" type="revolute"> + <joint name="joint3" type="fixed"> <parent link="arm2"/> <child link="arm3"/> <origin xyz="0 0 0.31"/> - <axis xyz="0 1 0"/> - <limit effort = "300" lower="-2.96705972839" upper="2.96705972839" velocity = "10" /> </joint> <link name="arm4"> @@ -113,12 +120,10 @@ </inertial> </link> - <joint name="joint4" type="revolute"> + <joint name="joint4" type="fixed"> <parent link="arm3"/> <child link="arm4"/> <origin xyz="-0.3 0 0"/> - <axis xyz="0 1 0"/> - <limit effort = "300" lower="-2.96705972839" upper="2.96705972839" velocity = "10" /> </joint> diff --git a/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_1.py b/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_1.py index 5c5bbe7..ea7f6fd 100644 --- a/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_1.py +++ b/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_1.py @@ -49,7 +49,7 @@ class Forward_Kinematics_Node_3Dof(Node): self.simple_robot_Mlist = self.simple_robot_model["Mlist"] self.simple_robot_Glist = self.simple_robot_model["Glist"] self.simple_robot_Blist = self.simple_robot_model["Blist"] - self.simple_robot_joint_angles = [0.0, 0.0, 0.0, 0.0] + self.simple_robot_joint_angles = [0.0, 0.0, 0.0] # Create two publishers for the RViz simulation - one for the whole path and one for the marker @@ -169,8 +169,8 @@ class Forward_Kinematics_Node_3Dof(Node): def publish_joint_states_simple_robot(self): - joint_names = ['joint1', 'joint2', 'joint3', 'joint4'] - joint_states = [0.0, 0.0, 0.0, 0.0] + joint_names = ['joint1', 'joint2', 'joint3'] + joint_states = [0.0, 0.0, 0.0] joint_states[0] = self.d_fraction joint_states[1] = self.h_fraction joint_states[2] = self.theta_fraction diff --git a/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_2.py b/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_2.py index 030875b..ffa832c 100644 --- a/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_2.py +++ b/ros2_ws/src/simple_robot_3dof/simple_robot_3dof/forward_kinematics_node_3dof_2.py @@ -49,7 +49,7 @@ class Forward_Kinematics_Node_3Dof(Node): self.simple_robot_Mlist = self.simple_robot_model["Mlist"] self.simple_robot_Glist = self.simple_robot_model["Glist"] self.simple_robot_Blist = self.simple_robot_model["Blist"] - self.simple_robot_joint_angles = [0.0, 0.0, 0.0, 0.0] + self.simple_robot_joint_angles = [0.0, 0.0, 0.0] # Create two publishers for the RViz simulation - one for the whole path and one for the marker self.path_publisher_ = self.create_publisher(Path, '/simple_robot/visualization_path', 10) @@ -256,8 +256,8 @@ class Forward_Kinematics_Node_3Dof(Node): def publish_joint_states_simple_robot(self): - joint_names = ['joint1', 'joint2', 'joint3', 'joint4'] - joint_states = [0.0, 0.0, 0.0, 0.0] + joint_names = ['joint1', 'joint2', 'joint3'] + joint_states = [0.0, 0.0, 0.0] joint_states[0] = self.d_fraction joint_states[1] = self.h_fraction joint_states[2] = self.theta_fraction diff --git a/ros2_ws/src/simple_robot_3dof/urdf/simple_robot.urdf b/ros2_ws/src/simple_robot_3dof/urdf/simple_robot.urdf index 2c70293..447d315 100644 --- a/ros2_ws/src/simple_robot_3dof/urdf/simple_robot.urdf +++ b/ros2_ws/src/simple_robot_3dof/urdf/simple_robot.urdf @@ -19,6 +19,15 @@ <color rgba="0.5 0.5 0.5 1"/> </material> </visual> + <visual> + <origin xyz="-0.7 0.45 0.235" rpy="0 0 0"/> + <geometry> + <box size = "0.9 1.9 0.47"/> + </geometry> + <material name="grey"> + <color rgba="0.5 0.5 0.5 1"/> + </material> + </visual> </link> <link name="arm1"> @@ -113,12 +122,10 @@ </inertial> </link> - <joint name="joint4" type="revolute"> + <joint name="joint4" type="fixed"> <parent link="arm3"/> <child link="arm4"/> <origin xyz="-0.3 0 0"/> - <axis xyz="0 1 0"/> - <limit effort = "300" lower="-2.96705972839" upper="2.96705972839" velocity = "10" /> </joint> -- GitLab