Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
cc40776
Electromagnet plugin and add it to the robot for the amazon delivery …
aquintan4 Jul 1, 2026
fc10720
drone gripper update (visual for the gripper in xacro), make the grip…
aquintan4 Jul 1, 2026
c7ba917
avoid ventral camera oclusion with magnet
aquintan4 Jul 1, 2026
f8f90a3
reduce attach distance of the electromagnet
aquintan4 Jul 1, 2026
27c3766
fix reset when grabbing item
aquintan4 Jul 1, 2026
1503b34
Move wrong urdf definitions
javizqh Jul 3, 2026
6f32e1b
make robot, world independent
aquintan4 Jul 3, 2026
1245850
merge
aquintan4 Jul 3, 2026
6be8d8a
fix quadrator xacro
aquintan4 Jul 6, 2026
b3f91d2
electromagnet plugin in macro
aquintan4 Jul 6, 2026
691692a
fix reset on drone gripper
aquintan4 Jul 6, 2026
7777327
fix drone reset when holding the package
aquintan4 Jul 6, 2026
fbad6a0
fix magnet reset
aquintan4 Jul 6, 2026
6024e6b
increase magnet pick distance
aquintan4 Jul 6, 2026
596d81f
kill plugin node on reset
aquintan4 Jul 6, 2026
96b9d80
update branch
aquintan4 Jul 17, 2026
472f1ab
fix gripper
aquintan4 Jul 17, 2026
816b2f5
update branch + fix drone gripper
aquintan4 Jul 20, 2026
4a5c220
update package delivery world db
aquintan4 Jul 20, 2026
e559bf5
fix magnet
aquintan4 Jul 20, 2026
ed15347
Rebase
javizqh Jul 22, 2026
8e3e611
Rebase
javizqh Jul 22, 2026
bd8ff86
reduce attach distance of the electromagnet
aquintan4 Jul 1, 2026
e7bec74
Rebase
javizqh Jul 22, 2026
79e820c
Rebase
javizqh Jul 22, 2026
01f80be
Rebase
javizqh Jul 22, 2026
0168dbf
Rebase
javizqh Jul 22, 2026
3e0f3fc
Bump db
javizqh Jul 22, 2026
e614940
Fix quadrotor
javizqh Jul 22, 2026
615f095
Fix plugin
javizqh Jul 22, 2026
7f22da7
Fix launcher
javizqh Jul 22, 2026
deb347c
Fix rebase error
javizqh Jul 22, 2026
4e7f8c4
Add comments
javizqh Jul 23, 2026
28909b7
Remove pause reset
javizqh Jul 27, 2026
b9b82c1
Linter
javizqh Jul 27, 2026
c29120b
Merge branch 'humble-devel' into drone-amazon-delivery
javizqh Jul 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CustomRobots/quadrotor/launch/quadrotor.launch.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@ def launch_setup(context):
Y = LaunchConfiguration("Y")
gz_sensor = LaunchConfiguration("sensor")
gz_namespace = LaunchConfiguration("namespace")
gz_gripper = LaunchConfiguration("gripper")

package_dir = get_package_share_directory("custom_robots")

nodes_to_start = []

sensor = gz_sensor.perform(context)
namespace = gz_namespace.perform(context)
gripper = gz_gripper.perform(context)

bridge_yaml = os.path.join(package_dir, "params", f"quadrotor_{sensor}.yaml")

Expand All @@ -49,6 +51,7 @@ def launch_setup(context):
mappings={
"camera": "true" if sensor == "camera" else "false",
"namespace": namespace,
"gripper": gripper,
},
).toxml()

Expand Down Expand Up @@ -166,6 +169,7 @@ def generate_launch_description():
declared_arguments.append(DeclareLaunchArgument("P", default_value="0"))
declared_arguments.append(DeclareLaunchArgument("Y", default_value="0"))
declared_arguments.append(DeclareLaunchArgument("sensor", default_value="camera"))
declared_arguments.append(DeclareLaunchArgument("gripper", default_value="false"))
declared_arguments.append(
DeclareLaunchArgument(
"namespace", description="Namespace to use", default_value="drone0"
Expand Down
38 changes: 38 additions & 0 deletions CustomRobots/quadrotor/models/quadrotor/quadrotor.urdf.xacro
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,54 @@
xmlns:xacro="http://ros.org/wiki/xacro">

<xacro:arg name="camera" default="true"/>
<xacro:arg name="gripper" default="false"/>
<xacro:arg name="namespace" default="drone0"/>
<xacro:property name="namespace" value="$(arg namespace)"/>

<xacro:include filename="$(find custom_robots)/models/quadrotor/quadrotor_gz.urdf.xacro"/>
<xacro:include filename="$(find custom_robots)/models/quadrotor/quadrotor_common.urdf.xacro"/>

<material name="MagnetBlack">
<color rgba="0.05 0.05 0.05 1.0"/>
</material>

<!-- One box segment of the magnet ring. The ring leaves an open center
so it does not block the downward-facing ventral camera. -->
<xacro:macro name="magnet_ring_seg" params="i n radius">
<xacro:if value="${i &lt; n}">
<xacro:property name="ang" value="${2*pi*i/n}"/>
<visual name="magnet_seg_${i}">
<origin xyz="${radius*cos(ang)} ${radius*sin(ang)} 0" rpy="0 0 ${ang + pi/2}"/>
<geometry>
<box size="${2*radius*sin(pi/n)} 0.02 0.02"/>
</geometry>
<material name="MagnetBlack"/>
</visual>
<xacro:magnet_ring_seg i="${i+1}" n="${n}" radius="${radius}"/>
</xacro:if>
</xacro:macro>

<xacro:quadrotor namespace="${namespace}"/>

<xacro:if value="$(arg camera)">
<xacro:camera xyz="0 0 0" rpy="0 0 0" mass="0.035" name="frontal_cam" parent="base_link" namespace="${namespace}"/>
<xacro:camera xyz="0 0 0" rpy="0 1.57 0" mass="0.035" name="ventral_cam" parent="base_link" namespace="${namespace}"/>
</xacro:if>

<!-- Electromagnet: flat ring hugging the drone belly, with an open center
so the downward ventral camera is not blocked (package_delivery). -->
<xacro:if value="$(arg gripper)">
<link name="magnet">
<inertial>
<mass value="0.02"/>
<inertia ixx="2e-5" ixy="0" ixz="0" iyy="2e-5" iyz="0" izz="4e-5"/>
</inertial>
<xacro:magnet_ring_seg i="0" n="12" radius="0.06"/>
</link>
<joint name="magnet_joint" type="fixed">
<origin rpy="0 0 0" xyz="0 0 -0.05"/>
<parent link="base_link"/>
<child link="magnet"/>
</joint>
</xacro:if>
</robot>
70 changes: 70 additions & 0 deletions Industrial/drone_gripper/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
cmake_minimum_required(VERSION 3.8)
project(drone_gripper)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 17)
endif()

if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()

############################
# Dependencies
############################

find_package(ament_cmake REQUIRED)
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)

find_package(gz-sim8 REQUIRED)
find_package(gz-plugin2 REQUIRED)

############################
# Plugin library
############################

add_library(drone_gripper SHARED
src/drone_gripper.cpp
)

target_link_libraries(drone_gripper
gz-sim8::gz-sim8
gz-plugin2::gz-plugin2
)

ament_target_dependencies(drone_gripper
rclcpp
std_msgs
)

############################
# Install plugin
############################

install(
TARGETS drone_gripper
LIBRARY DESTINATION lib
)

############################
# Environment hook (.dsv)
############################

install(
FILES env-hooks/drone_gripper.dsv
DESTINATION share/${PROJECT_NAME}/environment
)

############################
# Export
############################

ament_export_libraries(drone_gripper)

ament_export_dependencies(
gz-sim8
gz-plugin2
)

ament_package()
1 change: 1 addition & 0 deletions Industrial/drone_gripper/env-hooks/drone_gripper.dsv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
prepend-non-duplicate;GZ_SIM_SYSTEM_PLUGIN_PATH;lib
25 changes: 25 additions & 0 deletions Industrial/drone_gripper/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
<?xml version="1.0"?>
<package format="3">

<name>drone_gripper</name>
<version>0.0.1</version>

<description>Gazebo Harmonic magnetic gripper system plugin for drones</description>

<maintainer email="dev@todo.com">dev</maintainer>

<license>Apache-2.0</license>

<buildtool_depend>ament_cmake</buildtool_depend>

<depend>rclcpp</depend>

<depend>std_msgs</depend>

<depend>gz-sim</depend>

<export>
<build_type>ament_cmake</build_type>
</export>

</package>
Loading
Loading