Skip to content

Commit e4757b5

Browse files
committed
Initial Commit
0 parents  commit e4757b5

53 files changed

Lines changed: 2180 additions & 0 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# ===== ROS 2 =====
2+
build/
3+
install/
4+
log/
5+
6+
# ===== Python =====
7+
__pycache__/
8+
*.pyc
9+
*.pyo
10+
*.pyd
11+
.venv/
12+
13+
# ===== VS Code =====
14+
.vscode/
15+
16+
# ===== Secrets =====
17+
*.gv
18+
*.pdf
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
cmake_minimum_required(VERSION 3.8)
2+
project(manipulator_bringup)
3+
4+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5+
add_compile_options(-Wall -Wextra -Wpedantic)
6+
endif()
7+
8+
find_package(ament_cmake REQUIRED)
9+
10+
install(
11+
DIRECTORY launch
12+
DESTINATION share/${PROJECT_NAME}
13+
)
14+
15+
if(BUILD_TESTING)
16+
find_package(ament_lint_auto REQUIRED)
17+
set(ament_cmake_copyright_FOUND TRUE)
18+
set(ament_cmake_cpplint_FOUND TRUE)
19+
ament_lint_auto_find_test_dependencies()
20+
endif()
21+
22+
ament_package()
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import os
2+
from launch import LaunchDescription
3+
from launch.actions import IncludeLaunchDescription
4+
from ament_index_python.packages import get_package_share_directory
5+
6+
7+
def generate_launch_description():
8+
gazebo = IncludeLaunchDescription(
9+
os.path.join(
10+
get_package_share_directory("manipulator_description"),
11+
"launch",
12+
"gazebo.launch.py"
13+
)
14+
)
15+
16+
controller = IncludeLaunchDescription(
17+
os.path.join(
18+
get_package_share_directory("manipulator_controller"),
19+
"launch",
20+
"controller.launch.py"
21+
),
22+
launch_arguments={"is_sim": "True"}.items()
23+
)
24+
25+
moveit = IncludeLaunchDescription(
26+
os.path.join(
27+
get_package_share_directory("manipulator_moveit"),
28+
"launch",
29+
"moveit.launch.py"
30+
),
31+
launch_arguments={"is_sim": "True"}.items()
32+
)
33+
34+
remote_interface = IncludeLaunchDescription(
35+
os.path.join(
36+
get_package_share_directory("manipulator_remote"),
37+
"launch",
38+
"remote_interface.launch.py"
39+
),
40+
launch_arguments={"is_sim": "True"}.items()
41+
)
42+
43+
return LaunchDescription([
44+
gazebo,
45+
controller,
46+
moveit,
47+
remote_interface,
48+
])
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0"?>
2+
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
3+
<package format="3">
4+
<name>manipulator_bringup</name>
5+
<version>0.0.0</version>
6+
<description>TODO: Package description</description>
7+
<maintainer email="naitikpahwa18@users.noreply.github.com">naitik</maintainer>
8+
<license>TODO: License declaration</license>
9+
10+
<buildtool_depend>ament_cmake</buildtool_depend>
11+
12+
<depend>ros2launch</depend>
13+
14+
<test_depend>ament_lint_auto</test_depend>
15+
<test_depend>ament_lint_common</test_depend>
16+
17+
<export>
18+
<build_type>ament_cmake</build_type>
19+
</export>
20+
</package>
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
cmake_minimum_required(VERSION 3.8)
2+
project(manipulator_controller)
3+
4+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5+
add_compile_options(-Wall -Wextra -Wpedantic)
6+
endif()
7+
8+
find_package(ament_cmake REQUIRED)
9+
10+
find_package(ament_cmake REQUIRED)
11+
find_package(ament_cmake_python REQUIRED)
12+
find_package(trajectory_msgs REQUIRED)
13+
find_package(sensor_msgs REQUIRED)
14+
find_package(rclcpp REQUIRED)
15+
find_package(rclpy REQUIRED)
16+
17+
install(
18+
DIRECTORY config launch
19+
DESTINATION share/${PROJECT_NAME}
20+
)
21+
22+
if(BUILD_TESTING)
23+
find_package(ament_lint_auto REQUIRED)
24+
set(ament_cmake_copyright_FOUND TRUE)
25+
set(ament_cmake_cpplint_FOUND TRUE)
26+
ament_lint_auto_find_test_dependencies()
27+
endif()
28+
29+
ament_package()
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
controller_manager:
2+
ros__parameters:
3+
update_rate: 10
4+
5+
arm_controller:
6+
type: joint_trajectory_controller/JointTrajectoryController
7+
8+
gripper_controller:
9+
type: joint_trajectory_controller/JointTrajectoryController
10+
11+
# gripper_controller:
12+
# type: forward_command_controller/ForwardCommandController
13+
14+
joint_state_broadcaster:
15+
type: joint_state_broadcaster/JointStateBroadcaster
16+
17+
arm_controller:
18+
ros__parameters:
19+
joints:
20+
- joint_1
21+
- joint_2
22+
- joint_3
23+
24+
command_interfaces:
25+
- position
26+
27+
state_interfaces:
28+
- position
29+
30+
open_loop_control: true
31+
allow_integration_in_goal_trajectories: true
32+
33+
gripper_controller:
34+
ros__parameters:
35+
joints:
36+
- joint_4
37+
38+
# Required only for the ForwardCommandController
39+
# interface_name: position
40+
41+
command_interfaces:
42+
- position
43+
44+
state_interfaces:
45+
- position
46+
47+
open_loop_control: true
48+
allow_integration_in_goal_trajectories: true
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
import os
2+
from launch import LaunchDescription
3+
from launch.actions import DeclareLaunchArgument
4+
from launch.substitutions import LaunchConfiguration
5+
from launch_ros.actions import Node
6+
from launch.conditions import UnlessCondition
7+
from launch_ros.parameter_descriptions import ParameterValue
8+
from launch.substitutions import Command
9+
from ament_index_python.packages import get_package_share_directory
10+
11+
def generate_launch_description():
12+
13+
is_sim_arg = DeclareLaunchArgument(
14+
"is_sim",
15+
default_value="True"
16+
)
17+
18+
is_sim = LaunchConfiguration("is_sim")
19+
20+
robot_description = ParameterValue(
21+
Command([
22+
"xacro ",
23+
os.path.join(
24+
get_package_share_directory("manipulator_description"),
25+
"urdf",
26+
"manipulator.urdf.xacro",
27+
),
28+
]
29+
),
30+
value_type=str,
31+
)
32+
33+
robot_state_publisher_node = Node(
34+
package='robot_state_publisher',
35+
executable='robot_state_publisher',
36+
condition=UnlessCondition(is_sim),
37+
parameters=[{"robot_description": robot_description}],
38+
)
39+
40+
controller_manager = Node(
41+
package="controller_manager",
42+
executable="ros2_control_node",
43+
parameters=[
44+
{"robot_description": robot_description,
45+
"use_sim_time": is_sim},
46+
os.path.join(
47+
get_package_share_directory("manipulator_controller"),
48+
"config",
49+
"manipulator_controllers.yaml"
50+
)
51+
],
52+
condition=UnlessCondition(is_sim),
53+
)
54+
55+
joint_state_broadcaster_spawner = Node(
56+
package="controller_manager",
57+
executable="spawner",
58+
arguments=["joint_state_broadcaster", "--controller-manager", "/controller_manager"],
59+
)
60+
61+
arm_controller_spawner = Node(
62+
package="controller_manager",
63+
executable="spawner",
64+
arguments=["arm_controller", "--controller-manager", "/controller_manager"],
65+
)
66+
67+
gripper_controller_spawner = Node(
68+
package="controller_manager",
69+
executable="spawner",
70+
arguments=["gripper_controller", "--controller-manager", "/controller_manager"],
71+
)
72+
73+
return LaunchDescription([
74+
is_sim_arg,
75+
robot_state_publisher_node,
76+
controller_manager,
77+
joint_state_broadcaster_spawner,
78+
arm_controller_spawner,
79+
gripper_controller_spawner
80+
])
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<?xml version="1.0"?>
2+
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
3+
<package format="3">
4+
<name>manipulator_controller</name>
5+
<version>0.0.0</version>
6+
<description>TODO: Package description</description>
7+
<maintainer email="naitikpahwa18@users.noreply.github.com">naitik</maintainer>
8+
<license>TODO: License declaration</license>
9+
10+
<buildtool_depend>ament_cmake</buildtool_depend>
11+
<buildtool_depend>ament_cmake_python</buildtool_depend>
12+
13+
<depend>rclcpp</depend>
14+
<depend>rclpy</depend>
15+
<depend>trajectory_msgs</depend>
16+
<depend>sensor_msgs</depend>
17+
18+
<exec_depend>xacro</exec_depend>
19+
<exec_depend>ros2launch</exec_depend>
20+
<exec_depend>controller_manager</exec_depend>
21+
<exec_depend>robot_state_publisher</exec_depend>
22+
<exec_depend>manipulator_description</exec_depend>
23+
<exec_depend>joint_state_publisher_gui</exec_depend>
24+
25+
<test_depend>ament_lint_auto</test_depend>
26+
<test_depend>ament_lint_common</test_depend>
27+
28+
<export>
29+
<build_type>ament_cmake</build_type>
30+
</export>
31+
</package>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
cmake_minimum_required(VERSION 3.8)
2+
project(manipulator_description)
3+
4+
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
5+
add_compile_options(-Wall -Wextra -Wpedantic)
6+
endif()
7+
8+
find_package(ament_cmake REQUIRED)
9+
10+
install(
11+
DIRECTORY meshes urdf launch rviz
12+
DESTINATION share/${PROJECT_NAME}
13+
)
14+
15+
if(BUILD_TESTING)
16+
find_package(ament_lint_auto REQUIRED)
17+
set(ament_cmake_copyright_FOUND TRUE)
18+
set(ament_cmake_cpplint_FOUND TRUE)
19+
ament_lint_auto_find_test_dependencies()
20+
endif()
21+
22+
ament_package()
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import os
2+
from launch import LaunchDescription
3+
from launch.actions import DeclareLaunchArgument
4+
from launch.substitutions import Command, LaunchConfiguration
5+
from launch_ros.actions import Node
6+
from launch_ros.parameter_descriptions import ParameterValue
7+
from ament_index_python import get_package_share_directory
8+
9+
10+
def generate_launch_description():
11+
12+
model_arg = DeclareLaunchArgument(name="model", default_value=os.path.join(
13+
get_package_share_directory("manipulator_description"), "urdf", "manipulator.urdf.xacro"),
14+
description="absolute path to the robot URDF files."
15+
)
16+
17+
robot_description = ParameterValue(Command(["xacro ", LaunchConfiguration("model")]))
18+
19+
robot_state_publisher = Node(
20+
package="robot_state_publisher",
21+
executable="robot_state_publisher",
22+
parameters=[{"robot_description": robot_description}]
23+
)
24+
25+
joint_state_publisher_gui = Node(
26+
package="joint_state_publisher_gui",
27+
executable="joint_state_publisher_gui",
28+
)
29+
30+
rviz_node = Node(
31+
package="rviz2",
32+
executable="rviz2",
33+
name="rviz2",
34+
output="screen",
35+
arguments=["-d", os.path.join(get_package_share_directory("manipulator_description"), "rviz", "display.rviz")]
36+
)
37+
38+
return LaunchDescription([
39+
model_arg,
40+
robot_state_publisher,
41+
joint_state_publisher_gui,
42+
rviz_node
43+
])

0 commit comments

Comments
 (0)