Skip to content

Commit

Permalink
Merge pull request #101 from AdarshKaran/humble
Browse files Browse the repository at this point in the history
neo_simulation2 Humble branch updated with arm support and urdf files updated to modular xacros
  • Loading branch information
padhupradheep authored Nov 25, 2024
2 parents 764eb07 + f19fbde commit e2b39b7
Show file tree
Hide file tree
Showing 53 changed files with 2,872 additions and 1,779 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
This simulation package provides a quick and easy way to try out the autonomous mobile robots from Neobotix in ROS-2. It comes with the most commonly used configuration but is open for any kind of modification.

Please find our documentations in https://neobotix-docs.de/ros/ros2/simulation.html
Please find our documentations in https://neobotix-docs.de/ros/ros2/simulation_classic.html
37 changes: 37 additions & 0 deletions components/arm/elite_arm.urdf.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?xml version="1.0"?>
<!-- This is the main URDF file for mpo_700-->
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="elite">

<!-- create arm from macro-->
<xacro:include filename="$(find ur_description)/urdf/ur_macro.xacro"/>

<xacro:arg name="arm_type" default="ec66"/>
<xacro:arg name="use_gazebo" default="true"/>

<!--Elite arm parameters-->
<xacro:arg name="tf_prefix" default="$(arg arm_type)"/>
<xacro:arg name="joint_limit_params_file" default="$(find elite_description)/config/$(arg arm_type)/joint_limits.yaml"/>
<xacro:arg name="joint_origin_params_file" default="$(find elite_description)/config/$(arg arm_type)/joint_origins.yaml"/>
<xacro:arg name="link_inertials_params_file" default="$(find elite_description)/config/$(arg arm_type)/link_inertials.yaml"/>
<xacro:arg name="initial_joint_positions_file" default="$(find elite_description)/config/$(arg arm_type)/initial_positions.yaml"/>

<!-- create arm -->
<xacro:include filename="$(find elite_description)/urdf/macro/elite_macro.xacro" />
<xacro:elite_robot
name="$(arg arm_type)"
tf_prefix="$(arg tf_prefix)"
arm_parent="cabinet_link"
joint_limits_parameters_file="$(arg joint_limit_params_file)"
joint_origins_parameters_file="$(arg joint_origin_params_file)"
link_inertials_parameters_file="$(arg link_inertials_params_file)"
>
<origin xyz="0.133 0.0 0.416" rpy="0.0 0.0 -1.5708" />
</xacro:elite_robot>

<!-- If both Elite Arm and Simulation is used -->
<xacro:if value="$(arg use_gazebo)">
<xacro:include filename="$(find elite_description)/urdf/elite_gazebo_ros2_control.urdf.xacro" />
</xacro:if>

</robot>

61 changes: 61 additions & 0 deletions components/arm/ur_arm.urdf.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?xml version="1.0"?>
<!-- This is the main URDF file for mpo_700-->
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="ur">

<!-- create arm from macro-->
<xacro:include filename="$(find ur_description)/urdf/ur_macro.xacro"/>

<xacro:arg name="arm_type" default="ur10"/>
<xacro:arg name="use_gazebo" default="true"/>

<!-- UR arm parameters -->
<xacro:arg name="tf_prefix" default="$(arg arm_type)" />
<xacro:arg name="joint_limit_params" default="$(find ur_description)/config/$(arg arm_type)/joint_limits.yaml"/>
<xacro:arg name="kinematics_params" default="$(find ur_description)/config/$(arg arm_type)/default_kinematics.yaml"/>
<xacro:arg name="physical_params" default="$(find ur_description)/config/$(arg arm_type)/physical_parameters.yaml"/>
<xacro:arg name="visual_params" default="$(find ur_description)/config/$(arg arm_type)/visual_parameters.yaml"/>
<xacro:arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface"/>
<xacro:arg name="safety_limits" default="false"/>
<xacro:arg name="safety_pos_margin" default="0.15"/>
<xacro:arg name="safety_k_position" default="20"/>
<xacro:arg name="sim_gazebo" default="$(arg use_gazebo)" />
<xacro:arg name="simulation_controllers" default="$(find neo_simulation2)/configs/ur_config/$(arg arm_type)/ur_controllers.yaml"/>
<xacro:arg name="initial_positions_file" default="$(find neo_simulation2)/configs/ur_config/initial_joint_positions.yaml"/>

<!-- parse initial positions as a dictionary -->
<xacro:property
name="ur_initial_positions"
value="${xacro.load_yaml('$(arg initial_positions_file)')}"
/>

<xacro:ur_robot
name="$(arg arm_type)"
tf_prefix="$(arg tf_prefix)"
parent="cabinet_link"
joint_limits_parameters_file="$(arg joint_limit_params)"
kinematics_parameters_file="$(arg kinematics_params)"
physical_parameters_file="$(arg physical_params)"
visual_parameters_file="$(arg visual_params)"
safety_limits="$(arg safety_limits)"
safety_pos_margin="$(arg safety_pos_margin)"
safety_k_position="$(arg safety_k_position)"
sim_gazebo="$(arg sim_gazebo)"
initial_positions = "${ur_initial_positions}"
>
<!-- position robot in the world -->
<origin xyz="0.133 0.0 0.416" rpy="0.0 0.0 -1.5708" />
</xacro:ur_robot>

<!-- If both UR Arm and Simulation is used -->
<xacro:if value="$(arg use_gazebo)">
<gazebo reference="cabinet_link">
</gazebo>
<gazebo>
<plugin filename="libgazebo_ros2_control.so" name="gazebo_ros2_control">
<parameters>$(arg simulation_controllers)</parameters>
</plugin>
</gazebo>
</xacro:if>

</robot>

48 changes: 48 additions & 0 deletions components/common_macro/gazebo_diff_drive_plugin_macro.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="mp_500">

<!--Gazebo Diff Drive and Joint States Publisher plugin Macro-->
<xacro:macro name="gazebo_diff_drive_plugin" params="
update_rate
joint_prefix
wheel_separation
wheel_diameter
command_topic
odometry_topic
odom_frame
base_frame
max_wheel_torque
max_acceleration
">

<gazebo>
<plugin name="diff_drive" filename="libgazebo_ros_diff_drive.so">
<!-- Replace camelCase elements with camel_case ones -->
<update_rate>${update_rate}</update_rate>
<left_joint>${joint_prefix}_left_joint</left_joint>
<right_joint>${joint_prefix}_right_joint</right_joint>
<wheel_separation>${wheel_separation}</wheel_separation>
<wheel_diameter>${wheel_diameter}</wheel_diameter>
<publish_odom>true</publish_odom>
<publish_odom_tf>true</publish_odom_tf>
<publish_wheel_tf>true</publish_wheel_tf>
<command_topic>${command_topic}</command_topic>

<odometry_topic>${odometry_topic}</odometry_topic>
<odometry_frame>${odom_frame}</odometry_frame>
<robot_base_frame>${base_frame}</robot_base_frame>

<!-- wheelTorque and wheelAcceleration now have max_ prefix -->
<max_wheel_torque>${max_wheel_torque}</max_wheel_torque>
<max_acceleration>${max_acceleration}</max_acceleration>
</plugin>

<plugin name="joint_states" filename="libgazebo_ros_joint_state_publisher.so">
<joint_name>${joint_prefix}_left_joint</joint_name>
<joint_name>${joint_prefix}_right_joint</joint_name>
</plugin>

</gazebo>
</xacro:macro>

</robot>
60 changes: 60 additions & 0 deletions components/common_macro/gazebo_lidar_macro.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="mpo">

<xacro:macro name="gazebo_lidar_sensor" params="
sensor_name
link_name
update_rate
min_range
max_range
horizontal_samples
min_angle
max_angle
noise_mean
noise_stddev
topic_name
visualize='false'
">

<gazebo reference="${link_name}">
<sensor name="${sensor_name}" type="ray">
<always_on>true</always_on>
<pose>0 0 0 0 0 0</pose>
<visualize>${visualize}</visualize>
<update_rate>${update_rate}</update_rate>
<ray>
<scan>
<horizontal>
<samples>${horizontal_samples}</samples>
<resolution>1</resolution>
<min_angle>${min_angle}</min_angle>
<max_angle>${max_angle}</max_angle>
</horizontal>
</scan>
<range>
<min>${min_range}</min>
<max>${max_range}</max>
<resolution>0.05</resolution>
</range>
<noise>
<type>gaussian</type>
<!-- Noise parameters based on published spec for Hokuyo laser
achieving "+-30mm" accuracy at range < 10m. A mean of 0.0m and
stddev of 0.01m will put 99.7% of samples within 0.03m of the true
reading. -->
<mean>${noise_mean}</mean>
<stddev>${noise_stddev}</stddev>
</noise>
</ray>
<plugin filename="libgazebo_ros_ray_sensor.so" name="${sensor_name}_plugin">
<ros>
<argument>~/out:=${topic_name}</argument>
</ros>
<output_type>sensor_msgs/LaserScan</output_type>
<frame_name>${link_name}</frame_name>
</plugin>
</sensor>
</gazebo>
</xacro:macro>

</robot>
42 changes: 42 additions & 0 deletions components/common_macro/gazebo_object_controller_macro.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="mpo">

<!--Gazebo Object Controller Macro-->
<xacro:macro name="gazebo_object_controller" params="
odom_update_rate
controller_update_rate
odom_frame
base_frame
covariance_yaw
">

<gazebo>
<plugin name="object_controller" filename="libgazebo_ros_planar_move.so">
<commandTopic>cmd_vel</commandTopic>
<odometryTopic>odom</odometryTopic>
<robotNamespace><remapping>/tf:=tf</remapping></robotNamespace>
<ros> <remapping>/tf:=tf</remapping> </ros>

<!-- Set odom publish rate -->
<odometryRate>${odom_update_rate}</odometryRate>

<!-- Set control loop update rate -->
<publish_rate>${controller_update_rate}</publish_rate>

<!-- Set if odom required -->
<publish_odom>true</publish_odom>
<publish_odom_tf>true</publish_odom_tf>

<!-- Frame IDs -->
<odometryFrame>${odom_frame}</odometryFrame>
<robotBaseFrame>${base_frame}</robotBaseFrame>

<!-- Set odom covariance -->
<covariance_x>0.0001</covariance_x>
<covariance_y>0.0001</covariance_y>
<covariance_yaw>${covariance_yaw}</covariance_yaw>
</plugin>
</gazebo>
</xacro:macro>

</robot>
43 changes: 43 additions & 0 deletions components/common_macro/mpo_cabinet_macro.xacro
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
<?xml version="1.0"?>
<robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="mpo">

<!--WHEEL MACRO-->
<xacro:macro name="cabinet" params="
neo_robot_name
parent_link
inertial_rpy
visual_rpy
collision_rpy
*origin
model_scale
">

<joint name="cabinet_joint" type="fixed">
<xacro:insert_block name="origin"/>
<joint_properties damping="1" friction="1"/>
<parent link="${parent_link}"/>
<child link="cabinet_link"/>
</joint>

<link name="cabinet_link">
<inertial>
<mass value="10"/>
<origin rpy="${inertial_rpy}" xyz="0 0 0"/>
<inertia ixx="0.457072" ixy="0.0" ixz="0.0" iyy="0.23616" iyz="0.0" izz="0.686"/>
</inertial>
<visual>
<origin rpy="${visual_rpy}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://neo_simulation2/robots/${neo_robot_name}/meshes/cabin.dae" scale="${model_scale}"/>
</geometry>
</visual>
<collision>
<origin rpy="${collision_rpy}" xyz="0 0 0"/>
<geometry>
<mesh filename="package://neo_simulation2/robots/mpo_700/meshes/cabin.dae" scale="${model_scale}"/>
</geometry>
</collision>
</link>
</xacro:macro>

</robot>
File renamed without changes.
File renamed without changes.
File renamed without changes.
6 changes: 6 additions & 0 deletions configs/ur_config/initial_joint_positions.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
shoulder_pan_joint: 1.5
shoulder_lift_joint: -2.5
elbow_joint: 2.0
wrist_1_joint: 0.0
wrist_2_joint: -1.5
wrist_3_joint: 0.0
Loading

0 comments on commit e2b39b7

Please sign in to comment.